Merge pull request 'master' (#129) from YanTheKaller/ubl-settings-usergroups:master into master

Reviewed-on: #129
pull/235/head v2.7
Dmitry Razumov 2 years ago
commit 7dbc240652

@ -72,6 +72,8 @@ void yon_interface_update(main_window *widgets){
login = yon_char_divide_search(parameters[0],"=",-1);
login[strlen(login)-1]='\0';
}
if(!strcmp(parameters[0],"x"))
parameters[0]="";
if (parameters_size>1&&!strcmp(parameters[1],"x")) parameters[1]=AUTOMATICALLY_LABEL;
if (parameters_size>2&&!strcmp(parameters[2],"x")) parameters[2]=login;
char *pars = "";
@ -491,17 +493,15 @@ void yon_delete_confirmation_open(main_window *widgets){
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char *name,*username,*parameters,*homedir=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,3,&username,6,&parameters,-1);
int found = yon_char_parsed_check_exist(main_config.users,main_config.users_size,yon_char_append(name,":"));
if (found>-1){
int parsed_size;
config_str parsed = yon_char_parse(main_config.users[found],&parsed_size,":");
if (parsed_size>5&&!yon_char_is_empty(parsed[5])&&strcmp(parsed[5],"x")){
homedir = yon_char_new(parsed[5]);
}
yon_char_parsed_free(parsed,parsed_size);
int size;
config_str home = yon_config_load(get_home_command(name),&size);
if (size>0&&!yon_char_is_empty(home[0])){
if (home[0][strlen(home[0])-1]=='\n') home[0][strlen(home[0])-1]='\0';
homedir=home[0];
} else {
homedir = NULL;
}
int status=0;
if (homedir) status=1;
gtk_list_store_append(window->list,&itar);
@ -865,7 +865,8 @@ void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_w
void on_user_choose(GtkWidget *self, GtkEntry *target){
ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new();
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),GROUP_USERS_TITLE_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(window->GroupColumn),USERS_LABEL);
GtkTreeIter iter, itar;
char *output = (char*)gtk_entry_get_text(target);
int size=0;
@ -1095,6 +1096,7 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(){
window->GroupsOkButton=yon_gtk_builder_get_widget(builder,"GroupsOkButton");
window->HeaderLabel=yon_gtk_builder_get_widget(builder,"HeaderLabel");
window->StatusCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StatusCell"));
window->GroupColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"GroupColumn"));
window->list = gtk_list_store_new(2,G_TYPE_BOOLEAN,G_TYPE_STRING);
yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
@ -1288,7 +1290,7 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
yon_char_parsed_free(parsed_group,parsed_gr_size);
}
gtk_list_store_append(window->liststore1,&iter);
gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1);
gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[4],4,main_group_name,5,groups_string,6,parsed[5],-1);
}
yon_char_parsed_free(parsed,parsed_size);
}
@ -1328,19 +1330,21 @@ void on_system_update(GtkWidget *self, ubl_settings_usergroups_system_window *wi
for (int i=0;i<login_size;i++){
if (login_defs[i][0]!='#'){
char *copy = yon_char_new(login_defs[i]);
char *divided = yon_char_divide(copy,7);
if (divided){
if (!strcmp(divided,"UID_MAX")){
main_config.MAXUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"UID_MIN")){
main_config.MINUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MAX")){
main_config.MAXGID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MIN")){
main_config.MINGID = atol(strstr(login_defs[i],"\t"));
if (strlen(copy)>7){
char *divided = yon_char_divide(copy,7);
if (divided){
if (!strcmp(divided,"UID_MAX")){
main_config.MAXUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"UID_MIN")){
main_config.MINUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MAX")){
main_config.MAXGID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MIN")){
main_config.MINGID = atol(strstr(login_defs[i],"\t"));
}
}
}
}
@ -1436,11 +1440,6 @@ void on_user_login_update(GtkWidget *self, ubl_settings_usergroups_user_window *
} else {
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),"");
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo))==0){
char *homepath = yon_char_append("/home/",(char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)));
gtk_entry_set_text(GTK_ENTRY(window->userHomeEntry),homepath);
free(homepath);
}
}
void on_user_save(GtkWidget *self, dictionary *dict){
@ -1468,7 +1467,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
char *do_not_check = NULL;
int samba_sync = 0;
int samba_password_sync = 0;
char *deactivate = NULL;
int deactivate = 0;
char *extra_options = NULL;
char *useradd_boot = "";
char *useradd_shutdown = "";
@ -1512,6 +1511,14 @@ void on_user_save(GtkWidget *self, dictionary *dict){
yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
return;
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck))){
if (password[0]=='%'&&password[1]=='%'){
char *temp = yon_char_replace(password,"%%","!!");
password = yon_char_replace(temp,"!!","%%!*");
} else {
password = yon_char_append("!*",password);
}
}
} else {
password="";
}
@ -1554,18 +1561,15 @@ void on_user_save(GtkWidget *self, dictionary *dict){
password_expiration_date = window->expiration_unix;
}
warning_days = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin)));
long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin));
if (warning_days_active>0)
warning_days = yon_char_from_long(warning_days_active);
int no_activity_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userActivitySpin));
if (no_activity_days_active>0){
no_activity_days = yon_char_from_long(no_activity_days_active);
}
int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck));
if (force_at_next_login_active){
}
int user_shell_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo));
if (user_shell_active>0){
user_shell = yon_char_unite(" --shell ",(char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),NULL);
@ -1577,8 +1581,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo));
if (user_home_active==2){
user_home=yon_char_unite("--home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL);
} else if (user_home_active==0){
user_home=yon_char_unite("--home-dir ",main_config.default_home,"/",login,NULL);
} else if (user_home_active==1){
user_home="--no-create-home";
} else user_home = "";
@ -1613,7 +1615,20 @@ void on_user_save(GtkWidget *self, dictionary *dict){
if (!window->old_password||window->old_password&&strcmp(window->old_password,password)){
time_t t = time(NULL);
struct tm tm = *localtime(&t);
password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",yon_char_from_int(tm.tm_mon+1),"-",yon_char_from_int(tm.tm_mday),NULL);
char *month = yon_char_from_int(tm.tm_mon+1);
if (strlen(month)==1){
month=yon_char_append("0",month);
}
char *day = yon_char_from_int(tm.tm_mday);
if (strlen(day)==1){
day=yon_char_append("0",day);
}
password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL);
}
int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck));
if (force_at_next_login_active){
password_changed_date = "0";
}
int useradd_boot_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UseraddBootCheck));
@ -1801,8 +1816,6 @@ void on_parameter_changed(GtkWidget *self,ubl_settings_usergroups_user_window *w
int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo));
if (user_home_active==2){
user_home=yon_char_unite("--home-dir ",(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)),NULL);
} else if (user_home_active==0){
user_home=yon_char_unite("--home-dir ",main_config.default_home,"/",login,NULL);
} else if (user_home_active==1){
user_home="--no-create-home";
} else user_home = "";
@ -1823,7 +1836,8 @@ void on_parameter_changed(GtkWidget *self,ubl_settings_usergroups_user_window *w
} else {
main_group = "";
}
char *final_string = yon_char_unite(yon_char_return_if_exist(user_home,""),
char *final_string = user_home;
final_string = yon_char_unite(!yon_char_is_empty(final_string)?" ":"",
yon_char_return_if_exist(user_shell,""),
!yon_char_is_empty(user_shell)?" ":"",
yon_char_return_if_exist(create_system_user,""),
@ -2008,12 +2022,14 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
if (parameter_string[0]=='\"') yon_char_divide(parameter_string,0);
if (parameter_string[strlen(parameter_string)-1]=='\"') parameter_string[strlen(parameter_string)-1]='\0';
config_str parameters = yon_char_parse(parameter_string,&parsed_size,":");
if(!strcmp(parameters[0],"x"))
parameters[0]="";
gtk_entry_set_text(GTK_ENTRY(window->userLoginEntry), name);
gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), name);
gtk_entry_set_text(GTK_ENTRY(window->userUserNameEntry), parsed_size>0?parameters[0]:"");
window->old_username=name;
if (parsed_size>1){
if (strcmp(parameters[1],"x")){
if (parsed_size>1&&!strcmp(parameters[1],"x")||parsed_size<=1||strcmp(parameters[1],"")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0);
gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry), parsed_size>1?parameters[1]:"");
}
@ -2065,12 +2081,17 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
}
// gtk_entry_set_text(GTK_ENTRY(window->), parsed_size>4?parameters[4]:"");
}
if (parsed_size>5){
window->old_password=parameters[5];
if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (strstr(parameters[5],"!*")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1);
}
yon_char_divide(strstr(parameters[5],"!*"),1);
gtk_entry_set_text(GTK_ENTRY(window->userPasswordEntry),parameters[5]);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->userPasswordCombo),2);
}
}
int samba_sync = yon_samba_sync_get(name);
if (samba_sync==1){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck),1);
@ -2392,6 +2413,8 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
yon_rmb_menu_setup(widgets->UsersTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL);
yon_rmb_menu_setup(widgets->GroupsTree,EDIT_LABEL,edit_icon_name,G_CALLBACK(on_main_edit),widgets,REMOVE_LABEL,delete_icon_name,G_CALLBACK(on_main_delete),widgets,NULL);
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree));
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree));

@ -51,7 +51,7 @@
#define shadow_path "/etc/shadow"
#define uid_path "/etc/login.defs"
#define password_limits_path "/etc/security/pwquiality.conf"
#define get_home_command "getent passwd "$USER" | cut -d: -f6"
#define get_home_command(target) yon_char_unite("getent passwd \"",target,"\" | cut -d: -f6",NULL)
#define remove_home_dirs_command(users_string) yon_char_append("/usr/lib/ublinux/functions remove_userhome ", users_string)
#define default_home_initiator_path "/etc/default/useradd"
@ -65,6 +65,9 @@
#define USERSHADOW_SYNC(user) yon_char_unite("USERSHADOW_SYNC[",user,"]",NULL)
#define GROUPADD_SYNC(user) yon_char_unite("GROUPADD_SYNC[",user,"]",NULL)
#define edit_icon_name "com.ublinux.ubl-settings-usergroups.edit-symbolic"
#define delete_icon_name "com.ublinux.ubl-settings-usergroups.trash-symbolic"
#define password_hash_get_command(passwd) yon_char_append("mkpasswd2 ",passwd)
typedef char* string;
@ -218,6 +221,7 @@ typedef struct{
GtkWidget *GroupsOkButton;
GtkWidget *HeaderLabel;
GtkCellRenderer *StatusCell;
GtkTreeViewColumn *GroupColumn;
} ubl_settings_usergroups_group_window;
typedef struct{

@ -73,6 +73,7 @@
#define NT_LABEL "nt"
#define ACCEPT_LABEL _("Accept")
#define ENCRYPT_SURE_LABEL _("Are you sure want to encrypt all passwords?\nThis action can't be undone.")
#define ENCRYPT_TOOLTIP_LABEL _("Encrypt all unencrypted passwords at global configuration")
//ubl-settings-usergroups-group-creation.glade
#define CONFIGURE_GROUP_TITLE_LABEL _("Configure group")

@ -336,6 +336,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Encrypt all unencrypted passwords at global configuration</property>
<property name="halign">end</property>
<property name="image">image5</property>
</object>

@ -48,6 +48,7 @@
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Chosen</property>
<child>
<object class="GtkCellRendererToggle" id="StatusCell"/>
<attributes>
@ -57,7 +58,7 @@
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<object class="GtkTreeViewColumn" id="GroupColumn">
<property name="title" translatable="yes">Group</property>
<child>
<object class="GtkCellRendererText"/>

@ -141,7 +141,7 @@
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Blocked</property>
<property name="title" translatable="yes">Disabled</property>
<child>
<object class="GtkCellRendererToggle"/>
</child>

@ -330,6 +330,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="sizing">fixed</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Disabled</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererToggle"/>
</child>
@ -388,6 +389,7 @@ name</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Main
group</property>
<property name="sort-column-id">4</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -403,9 +405,10 @@ group</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional
groups</property>
<property name="sort-column-id">5</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-mode">word-char</property>
<property name="wrap-width">150</property>
</object>
<attributes>
@ -421,6 +424,7 @@ groups</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional
parameters</property>
<property name="sort-column-id">6</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
@ -438,6 +442,7 @@ parameters</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Password
status</property>
<property name="sort-column-id">7</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -529,8 +534,11 @@ name</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Group
users</property>
<property name="sort-column-id">2</property>
<child>
<object class="GtkCellRendererText"/>
<object class="GtkCellRendererText">
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">2</attribute>
</attributes>
@ -544,6 +552,7 @@ users</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Additional
parameters</property>
<property name="sort-column-id">3</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
@ -558,6 +567,7 @@ parameters</property>
<property name="fixed-width">10</property>
<property name="title" translatable="yes">Password
status</property>
<property name="sort-column-id">4</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>

@ -53,7 +53,7 @@ msgstr ""
msgid "UID"
msgstr ""
#: source/ubl-strings.h:14 source/ubl-strings.h:84
#: source/ubl-strings.h:14 source/ubl-strings.h:85
msgid "Login"
msgstr ""
@ -211,7 +211,7 @@ msgstr ""
msgid "Set a password"
msgstr ""
#: source/ubl-strings.h:60 source/ubl-strings.h:87
#: source/ubl-strings.h:60 source/ubl-strings.h:88
msgid "Encrypted"
msgstr ""
@ -229,382 +229,386 @@ msgid ""
"This action can't be undone."
msgstr ""
#: source/ubl-strings.h:78
msgid "Configure group"
#: source/ubl-strings.h:76
msgid "Encrypt all unencrypted passwords at global configuration"
msgstr ""
#: source/ubl-strings.h:79
msgid "Add group"
msgid "Configure group"
msgstr ""
#: source/ubl-strings.h:80
msgid "Group id:"
msgid "Add group"
msgstr ""
#: source/ubl-strings.h:81
msgid "Group name:"
msgid "Group id:"
msgstr ""
#: source/ubl-strings.h:82
msgid "Group users:"
msgid "Group name:"
msgstr ""
#: source/ubl-strings.h:83
msgid "Group users:"
msgstr ""
#: source/ubl-strings.h:84
msgid "Automatically"
msgstr ""
#: source/ubl-strings.h:85
#: source/ubl-strings.h:86
msgid "Create group with ununique GID"
msgstr ""
#: source/ubl-strings.h:86
#: source/ubl-strings.h:87
msgid "Create system group"
msgstr ""
#: source/ubl-strings.h:88
#: source/ubl-strings.h:89
msgid "Additional configuration"
msgstr ""
#: source/ubl-strings.h:89
#: source/ubl-strings.h:90
msgid "Group configuration synchronization"
msgstr ""
#: source/ubl-strings.h:90
#: source/ubl-strings.h:91
msgid "When shutting down the system, save the group into the configuration"
msgstr ""
#: source/ubl-strings.h:91
#: source/ubl-strings.h:92
msgid "Group administrators:"
msgstr ""
#: source/ubl-strings.h:92
#: source/ubl-strings.h:93
msgid "Group name must not start with digit"
msgstr ""
#: source/ubl-strings.h:95
#: source/ubl-strings.h:96
msgid "Default groups"
msgstr ""
#: source/ubl-strings.h:96
#: source/ubl-strings.h:97
msgid "Main group"
msgstr ""
#: source/ubl-strings.h:97
#: source/ubl-strings.h:98
msgid "Additional groups"
msgstr ""
#: source/ubl-strings.h:98
#: source/ubl-strings.h:99
msgid "Choose groups"
msgstr ""
#: source/ubl-strings.h:99
#: source/ubl-strings.h:100
msgid "Choose users"
msgstr ""
#: source/ubl-strings.h:102
#: source/ubl-strings.h:103
msgid "System users and groups"
msgstr ""
#: source/ubl-strings.h:103
#: source/ubl-strings.h:104
msgid "Disabled"
msgstr ""
#: source/ubl-strings.h:104
#: source/ubl-strings.h:105
msgid "Username"
msgstr ""
#: source/ubl-strings.h:105
#: source/ubl-strings.h:106
msgid ""
"Primary\n"
"group"
msgstr ""
#: source/ubl-strings.h:106
#: source/ubl-strings.h:107
msgid ""
"Home\n"
"directory"
msgstr ""
#: source/ubl-strings.h:107 source/ubl-strings.h:113
#: source/ubl-strings.h:108 source/ubl-strings.h:114
msgid "Group"
msgstr ""
#: source/ubl-strings.h:108
#: source/ubl-strings.h:109
msgid "Update the system users and groups list"
msgstr ""
#: source/ubl-strings.h:109
#: source/ubl-strings.h:110
msgid "Toggle system groups and users"
msgstr ""
#: source/ubl-strings.h:111
#: source/ubl-strings.h:112
msgid "Password mismatch"
msgstr ""
#: source/ubl-strings.h:112
#: source/ubl-strings.h:113
msgid "Password must be at least"
msgstr ""
#: source/ubl-strings.h:112
#: source/ubl-strings.h:113
msgid "characters"
msgstr ""
#: source/ubl-strings.h:114
#: source/ubl-strings.h:115
msgid ""
"Days until\n"
"warning"
msgstr ""
#: source/ubl-strings.h:115
#: source/ubl-strings.h:116
msgid ""
"Days\n"
"without activity"
msgstr ""
#: source/ubl-strings.h:116
#: source/ubl-strings.h:117
msgid ""
"Shell\n"
"path"
msgstr ""
#: source/ubl-strings.h:117
#: source/ubl-strings.h:118
msgid ""
"Password has\n"
"been changed"
msgstr ""
#: source/ubl-strings.h:118
#: source/ubl-strings.h:119
msgid ""
"Expiration\n"
"date"
msgstr ""
#: source/ubl-strings.h:119
#: source/ubl-strings.h:120
msgid ""
"Password change\n"
"interval (min)"
msgstr ""
#: source/ubl-strings.h:120
#: source/ubl-strings.h:121
msgid ""
"Password change\n"
"interval (max)"
msgstr ""
#: source/ubl-strings.h:123
#: source/ubl-strings.h:124
msgid "Add user"
msgstr ""
#: source/ubl-strings.h:124
#: source/ubl-strings.h:125
msgid "Configure user"
msgstr ""
#: source/ubl-strings.h:125
#: source/ubl-strings.h:126
msgid "Set"
msgstr ""
#: source/ubl-strings.h:126
#: source/ubl-strings.h:127
msgid "Empty important field"
msgstr ""
#: source/ubl-strings.h:127
#: source/ubl-strings.h:128
msgid "Login must not start with digit"
msgstr ""
#: source/ubl-strings.h:128
#: source/ubl-strings.h:129
msgid "Loading has failed"
msgstr ""
#: source/ubl-strings.h:129
#: source/ubl-strings.h:130
msgid "Login name"
msgstr ""
#: source/ubl-strings.h:130
#: source/ubl-strings.h:131
msgid "Additional groups:"
msgstr ""
#: source/ubl-strings.h:131
#: source/ubl-strings.h:132
msgid "Password configuration"
msgstr ""
#: source/ubl-strings.h:132
#: source/ubl-strings.h:133
msgid "Password has been changed:"
msgstr ""
#: source/ubl-strings.h:133
#: source/ubl-strings.h:134
msgid "expiration date:"
msgstr ""
#: source/ubl-strings.h:134
#: source/ubl-strings.h:135
msgid "Password change interval: minimum"
msgstr ""
#: source/ubl-strings.h:135
#: source/ubl-strings.h:136
msgid "days, maximum"
msgstr ""
#: source/ubl-strings.h:136
#: source/ubl-strings.h:137
msgid "days"
msgstr ""
#: source/ubl-strings.h:137
#: source/ubl-strings.h:138
msgid "Days until warning:"
msgstr ""
#: source/ubl-strings.h:138
#: source/ubl-strings.h:139
msgid "Days without activity:"
msgstr ""
#: source/ubl-strings.h:139
#: source/ubl-strings.h:140
msgid "Force change at next login"
msgstr ""
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "User shell:"
msgstr ""
#: source/ubl-strings.h:141
#: source/ubl-strings.h:142
msgid "Home directory:"
msgstr ""
#: source/ubl-strings.h:142
#: source/ubl-strings.h:143
msgid "Don't set"
msgstr ""
#: source/ubl-strings.h:143
#: source/ubl-strings.h:144
msgid "Create system user"
msgstr ""
#: source/ubl-strings.h:144
#: source/ubl-strings.h:145
msgid "Create user with ununique (repeating) UID"
msgstr ""
#: source/ubl-strings.h:145
#: source/ubl-strings.h:146
msgid "Do not check login for compliance with character rules"
msgstr ""
#: source/ubl-strings.h:146
#: source/ubl-strings.h:147
msgid "Temporary deactivation"
msgstr ""
#: source/ubl-strings.h:147
#: source/ubl-strings.h:148
msgid "Save"
msgstr ""
#: source/ubl-strings.h:148
#: source/ubl-strings.h:149
msgid "login_name"
msgstr ""
#: source/ubl-strings.h:149
#: source/ubl-strings.h:150
msgid "group_name"
msgstr ""
#: source/ubl-strings.h:150
#: source/ubl-strings.h:151
msgid "User name"
msgstr ""
#: source/ubl-strings.h:151
#: source/ubl-strings.h:152
msgid "Sync user"
msgstr ""
#: source/ubl-strings.h:152
#: source/ubl-strings.h:153
msgid "Sync user with password"
msgstr ""
#: source/ubl-strings.h:153
#: source/ubl-strings.h:154
msgid "Encrypt all passwords"
msgstr ""
#: source/ubl-strings.h:155
#: source/ubl-strings.h:156
msgid "User configuration"
msgstr ""
#: source/ubl-strings.h:156
#: source/ubl-strings.h:157
msgid "User configuration synchronization"
msgstr ""
#: source/ubl-strings.h:157
#: source/ubl-strings.h:158
msgid "During system startup, load the user from the configuration"
msgstr ""
#: source/ubl-strings.h:158
#: source/ubl-strings.h:159
msgid "When shutting down the system, save the user into the configuration"
msgstr ""
#: source/ubl-strings.h:159
#: source/ubl-strings.h:160
msgid "User password configuration syncronization"
msgstr ""
#: source/ubl-strings.h:160
#: source/ubl-strings.h:161
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr ""
#: source/ubl-strings.h:161
#: source/ubl-strings.h:162
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
#: source/ubl-strings.h:163
#: source/ubl-strings.h:164
msgid "Main"
msgstr ""
#: source/ubl-strings.h:164
#: source/ubl-strings.h:165
msgid "Additional"
msgstr ""
#: source/ubl-strings.h:165
#: source/ubl-strings.h:166
msgid "Syncronization"
msgstr ""
#: source/ubl-strings.h:168
#: source/ubl-strings.h:169
msgid "Repeat password:"
msgstr ""
#: source/ubl-strings.h:169
#: source/ubl-strings.h:170
msgid "Password hash:"
msgstr ""
#: source/ubl-strings.h:170
#: source/ubl-strings.h:171
msgid "Do not encrypt password"
msgstr ""
#: source/ubl-strings.h:173
#: source/ubl-strings.h:174
msgid "Additional configuration of service parameter saving"
msgstr ""
#: source/ubl-strings.h:174
#: source/ubl-strings.h:175
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
msgstr ""
#: source/ubl-strings.h:175
#: source/ubl-strings.h:176
msgid "For system save mode \"Sandbox\""
msgstr ""
#: source/ubl-strings.h:178
#: source/ubl-strings.h:179
msgid "User deletion"
msgstr ""
#: source/ubl-strings.h:179
#: source/ubl-strings.h:180
msgid "Confirm user(-s) deletion:"
msgstr ""
#: source/ubl-strings.h:180
#: source/ubl-strings.h:181
msgid "Chosen"
msgstr ""
#: source/ubl-strings.h:181
#: source/ubl-strings.h:182
msgid "User"
msgstr ""
#: source/ubl-strings.h:182
#: source/ubl-strings.h:183
msgid "Home directory"
msgstr ""
#: source/ubl-strings.h:183
#: source/ubl-strings.h:184
msgid "Delete home directory"
msgstr ""

@ -53,7 +53,7 @@ msgstr "Алгоритм хэширования пароля:"
msgid "UID"
msgstr "UID"
#: source/ubl-strings.h:14 source/ubl-strings.h:84
#: source/ubl-strings.h:14 source/ubl-strings.h:85
msgid "Login"
msgstr "Логин"
@ -225,7 +225,7 @@ msgstr "Пароль не требуется"
msgid "Set a password"
msgstr "Задать пароль"
#: source/ubl-strings.h:60 source/ubl-strings.h:87
#: source/ubl-strings.h:60 source/ubl-strings.h:88
msgid "Encrypted"
msgstr "Зашифрован"
@ -245,92 +245,95 @@ msgstr ""
"Вы уверены что хотите зашифровать все пароли?\n"
"Это действие нельзя отменить."
#: source/ubl-strings.h:78
#: source/ubl-strings.h:76
msgid "Encrypt all unencrypted passwords at global configuration"
msgstr "Зашифровать все незашифрованные пароли в глобальной конфигурации"
#: source/ubl-strings.h:79
msgid "Configure group"
msgstr "Редактировать группу"
#: source/ubl-strings.h:79
#: source/ubl-strings.h:80
msgid "Add group"
msgstr "Добавить группу"
#: source/ubl-strings.h:80
#: source/ubl-strings.h:81
msgid "Group id:"
msgstr "ID Группы:"
#: source/ubl-strings.h:81
#: source/ubl-strings.h:82
msgid "Group name:"
msgstr "Имя группы:"
#: source/ubl-strings.h:82
#: source/ubl-strings.h:83
msgid "Group users:"
msgstr "Пользователи группы:"
#: source/ubl-strings.h:83
#: source/ubl-strings.h:84
msgid "Automatically"
msgstr "Автоматически"
#: source/ubl-strings.h:85
#: source/ubl-strings.h:86
msgid "Create group with ununique GID"
msgstr "Создать группу с повторяющимися (не уникальными) GID"
#: source/ubl-strings.h:86
#: source/ubl-strings.h:87
msgid "Create system group"
msgstr "Создать системную группу"
#: source/ubl-strings.h:88
#: source/ubl-strings.h:89
msgid "Additional configuration"
msgstr "Дополнительные настройки"
#: source/ubl-strings.h:89
#: source/ubl-strings.h:90
msgid "Group configuration synchronization"
msgstr "Синхронизация настроек группы"
#: source/ubl-strings.h:90
#: source/ubl-strings.h:91
msgid "When shutting down the system, save the group into the configuration"
msgstr "При завершении работы системы сохранить группу в конфигурацию"
#: source/ubl-strings.h:91
#: source/ubl-strings.h:92
msgid "Group administrators:"
msgstr "Администраторы группы:"
#: source/ubl-strings.h:92
#, fuzzy
#: source/ubl-strings.h:93
msgid "Group name must not start with digit"
msgstr "Имя группы не должно начинаться с цифры"
#: source/ubl-strings.h:95
#: source/ubl-strings.h:96
msgid "Default groups"
msgstr "Группы пользователей по умолчанию"
#: source/ubl-strings.h:96
#: source/ubl-strings.h:97
msgid "Main group"
msgstr "Основная группа"
#: source/ubl-strings.h:97
#: source/ubl-strings.h:98
msgid "Additional groups"
msgstr "Дополнительные группы"
#: source/ubl-strings.h:98
#: source/ubl-strings.h:99
msgid "Choose groups"
msgstr "Выбрать группы"
#: source/ubl-strings.h:99
#: source/ubl-strings.h:100
msgid "Choose users"
msgstr "Выбрать пользователей"
#: source/ubl-strings.h:102
#: source/ubl-strings.h:103
msgid "System users and groups"
msgstr "Пользователи и группы в системе"
#: source/ubl-strings.h:103
#: source/ubl-strings.h:104
msgid "Disabled"
msgstr "Отключен"
#: source/ubl-strings.h:104
#: source/ubl-strings.h:105
msgid "Username"
msgstr "Имя пользователя"
#: source/ubl-strings.h:105
#: source/ubl-strings.h:106
msgid ""
"Primary\n"
"group"
@ -338,7 +341,7 @@ msgstr ""
"Основная\n"
"группа"
#: source/ubl-strings.h:106
#: source/ubl-strings.h:107
msgid ""
"Home\n"
"directory"
@ -346,31 +349,31 @@ msgstr ""
"Домашний\n"
"каталог"
#: source/ubl-strings.h:107 source/ubl-strings.h:113
#: source/ubl-strings.h:108 source/ubl-strings.h:114
msgid "Group"
msgstr "Группа"
#: source/ubl-strings.h:108
#: source/ubl-strings.h:109
msgid "Update the system users and groups list"
msgstr "Обновить список пользователей и групп системы"
#: source/ubl-strings.h:109
#: source/ubl-strings.h:110
msgid "Toggle system groups and users"
msgstr "Переключить видимость системных пользователей и групп"
#: source/ubl-strings.h:111
#: source/ubl-strings.h:112
msgid "Password mismatch"
msgstr "Несовпадение паролей"
#: source/ubl-strings.h:112
#: source/ubl-strings.h:113
msgid "Password must be at least"
msgstr "Пароль должен состоять из как минимум"
#: source/ubl-strings.h:112
#: source/ubl-strings.h:113
msgid "characters"
msgstr "символов"
#: source/ubl-strings.h:114
#: source/ubl-strings.h:115
msgid ""
"Days until\n"
"warning"
@ -378,7 +381,7 @@ msgstr ""
"Дней до\n"
"предупреждения"
#: source/ubl-strings.h:115
#: source/ubl-strings.h:116
msgid ""
"Days\n"
"without activity"
@ -386,7 +389,7 @@ msgstr ""
"Дней без\n"
"активности"
#: source/ubl-strings.h:116
#: source/ubl-strings.h:117
msgid ""
"Shell\n"
"path"
@ -394,7 +397,7 @@ msgstr ""
"Путь до\n"
"оболочки"
#: source/ubl-strings.h:117
#: source/ubl-strings.h:118
msgid ""
"Password has\n"
"been changed"
@ -402,7 +405,7 @@ msgstr ""
"Пароль\n"
"изменён"
#: source/ubl-strings.h:118
#: source/ubl-strings.h:119
msgid ""
"Expiration\n"
"date"
@ -410,7 +413,7 @@ msgstr ""
"Дата\n"
"устаревания"
#: source/ubl-strings.h:119
#: source/ubl-strings.h:120
msgid ""
"Password change\n"
"interval (min)"
@ -418,7 +421,7 @@ msgstr ""
"Интервал смены\n"
"пароля (мин.)"
#: source/ubl-strings.h:120
#: source/ubl-strings.h:121
msgid ""
"Password change\n"
"interval (max)"
@ -426,191 +429,195 @@ msgstr ""
"Интервал смены\n"
"пароля (макс.)"
#: source/ubl-strings.h:123
#: source/ubl-strings.h:124
msgid "Add user"
msgstr "Добавить пользователя"
#: source/ubl-strings.h:124
#: source/ubl-strings.h:125
msgid "Configure user"
msgstr "Редактировать пользователя"
#: source/ubl-strings.h:125
#: source/ubl-strings.h:126
msgid "Set"
msgstr "Задать"
#: source/ubl-strings.h:126
#: source/ubl-strings.h:127
msgid "Empty important field"
msgstr "Пустое важное поле"
#: source/ubl-strings.h:127
#: source/ubl-strings.h:128
msgid "Login must not start with digit"
msgstr "Логин не должен начинаться с цифры"
#: source/ubl-strings.h:128
#: source/ubl-strings.h:129
msgid "Loading has failed"
msgstr "Ошибка загрузки"
#: source/ubl-strings.h:129
#: source/ubl-strings.h:130
msgid "Login name"
msgstr "Имя логина"
#: source/ubl-strings.h:130
#: source/ubl-strings.h:131
msgid "Additional groups:"
msgstr "Дополнительные группы:"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:132
msgid "Password configuration"
msgstr "Конфигурация пароля"
#: source/ubl-strings.h:132
#: source/ubl-strings.h:133
msgid "Password has been changed:"
msgstr "Пароль изменён:"
#: source/ubl-strings.h:133
#: source/ubl-strings.h:134
msgid "expiration date:"
msgstr "Дата устаревания:"
#: source/ubl-strings.h:134
#: source/ubl-strings.h:135
msgid "Password change interval: minimum"
msgstr "Интервал смены пароля: минимум"
#: source/ubl-strings.h:135
#: source/ubl-strings.h:136
msgid "days, maximum"
msgstr "дней, максимум"
#: source/ubl-strings.h:136
#: source/ubl-strings.h:137
msgid "days"
msgstr "дней"
#: source/ubl-strings.h:137
#: source/ubl-strings.h:138
msgid "Days until warning:"
msgstr "Дней до предупреждения:"
#: source/ubl-strings.h:138
#: source/ubl-strings.h:139
msgid "Days without activity:"
msgstr "Дней без активности:"
#: source/ubl-strings.h:139
#: source/ubl-strings.h:140
msgid "Force change at next login"
msgstr "Принудительно сменить при следующем входе в систему"
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "User shell:"
msgstr "Оболочка пользователя:"
#: source/ubl-strings.h:141
#: source/ubl-strings.h:142
msgid "Home directory:"
msgstr "Домашний каталог:"
#: source/ubl-strings.h:142
#: source/ubl-strings.h:143
msgid "Don't set"
msgstr "Не создавать"
#: source/ubl-strings.h:143
#: source/ubl-strings.h:144
msgid "Create system user"
msgstr "Создать системного пользователя"
#: source/ubl-strings.h:144
#: source/ubl-strings.h:145
msgid "Create user with ununique (repeating) UID"
msgstr "Создать пользователя с повторяющимися (не уникальными) UID"
#: source/ubl-strings.h:145
#: source/ubl-strings.h:146
msgid "Do not check login for compliance with character rules"
msgstr "Не проверять логин на несоответствие правилам использования символов"
#: source/ubl-strings.h:146
#: source/ubl-strings.h:147
msgid "Temporary deactivation"
msgstr "Временное отключение учётной записи"
#: source/ubl-strings.h:147
#: source/ubl-strings.h:148
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:148
#: source/ubl-strings.h:149
msgid "login_name"
msgstr "Имя_логина"
#: source/ubl-strings.h:149
#: source/ubl-strings.h:150
msgid "group_name"
msgstr "Имя_группы"
#: source/ubl-strings.h:150
#: source/ubl-strings.h:151
msgid "User name"
msgstr "Имя пользователя"
#: source/ubl-strings.h:151
#: source/ubl-strings.h:152
msgid "Sync user"
msgstr "Синхронизировать пользователя"
#: source/ubl-strings.h:152
#: source/ubl-strings.h:153
msgid "Sync user with password"
msgstr "Синхронизировать пользователя с паролем"
#: source/ubl-strings.h:153
#: source/ubl-strings.h:154
msgid "Encrypt all passwords"
msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:155
#: source/ubl-strings.h:156
msgid "User configuration"
msgstr "Настройка пользователя"
#: source/ubl-strings.h:156
#: source/ubl-strings.h:157
msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:157
#: source/ubl-strings.h:158
msgid "During system startup, load the user from the configuration"
msgstr "При загрузке системы загрузить пользователя из конфигурации"
msgstr ""
"При запуске операционной системы применять настройки пользователя из "
"конфигурации"
#: source/ubl-strings.h:158
#: source/ubl-strings.h:159
msgid "When shutting down the system, save the user into the configuration"
msgstr "При завершении работы системы сохранить пользователя в конфигурацию"
msgstr ""
"При завершении работы операционной системы сохранить настройки пользователя "
"в конфигурацию"
#: source/ubl-strings.h:159
#: source/ubl-strings.h:160
msgid "User password configuration syncronization"
msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:160
#: source/ubl-strings.h:161
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:161
#: source/ubl-strings.h:162
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:163
#: source/ubl-strings.h:164
msgid "Main"
msgstr "Основные"
#: source/ubl-strings.h:164
#: source/ubl-strings.h:165
msgid "Additional"
msgstr "Дополнительные"
#: source/ubl-strings.h:165
#: source/ubl-strings.h:166
msgid "Syncronization"
msgstr "Синхронизация"
#: source/ubl-strings.h:168
#: source/ubl-strings.h:169
msgid "Repeat password:"
msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:169
#: source/ubl-strings.h:170
msgid "Password hash:"
msgstr "Хэш пароля:"
#: source/ubl-strings.h:170
#: source/ubl-strings.h:171
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-strings.h:173
#: source/ubl-strings.h:174
msgid "Additional configuration of service parameter saving"
msgstr "Дополнительные настройки сохранения параметров сервисов"
#: source/ubl-strings.h:174
#: source/ubl-strings.h:175
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
@ -618,31 +625,31 @@ msgstr ""
"При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n"
"в (hd)/ublinux-data/rootcopy/"
#: source/ubl-strings.h:175
#: source/ubl-strings.h:176
msgid "For system save mode \"Sandbox\""
msgstr "Для режима сохранения системы \"Песочница\""
#: source/ubl-strings.h:178
#: source/ubl-strings.h:179
msgid "User deletion"
msgstr "Удаление пользователя(-лей)"
#: source/ubl-strings.h:179
#: source/ubl-strings.h:180
msgid "Confirm user(-s) deletion:"
msgstr "Подтвердите удаление пользователя (-ей):"
#: source/ubl-strings.h:180
#: source/ubl-strings.h:181
msgid "Chosen"
msgstr "Выбран"
#: source/ubl-strings.h:181
#: source/ubl-strings.h:182
msgid "User"
msgstr "Пользователь"
#: source/ubl-strings.h:182
#: source/ubl-strings.h:183
msgid "Home directory"
msgstr "Домашний каталог"
#: source/ubl-strings.h:183
#: source/ubl-strings.h:184
msgid "Delete home directory"
msgstr "Удалить домашний каталог"

Loading…
Cancel
Save