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

Reviewed-on: #141
pull/235/head v2.9
Dmitry Razumov 2 years ago
commit 0deeb29c1d

@ -6,7 +6,7 @@ config main_config;
int yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_load_register(YON_CONFIG_DEFAULT,"users","DEFAULTPASSWD DEFAULTROOTPASSWD USERGROUPS DEFAULTUSER HASHPASSWD ADDADM",NULL);
yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL);
yon_config_load_register_no_cleaning(type,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERADD_SYNC USERSHADOW[*] GROUPADD[*]","[system]","SYSTEMBOOT_STATEMODE","[save]","SAVE_ROOTCOPY_CHANGES",NULL);
if (type!=YON_CONFIG_GLOBAL){
yon_config_load_register_no_cleaning(YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD",NULL);
}
@ -79,7 +79,7 @@ void yon_interface_update(main_window *widgets){
char *pars = "";
if (parameters_size>5&&strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (!check_is_password_hash(parameters[5])){
if (!check_is_password_hash(parameters[5])&&parameters[5][0]!='%'&&parameters[5][1]!='%'){
pars = ENCRYPTED_LABEL;
} else {
pars = UNENCRYPTED_LABEL;
@ -125,7 +125,7 @@ void yon_interface_update(main_window *widgets){
char *pars="";
if (parameters_size>3&&strcmp(parameters[3],"x")&&strcmp(parameters[3],"")){
if (!check_is_password_hash(parameters[3])){
if (!check_is_password_hash(parameters[3])&&parameters[5][0]!='%'&&parameters[5][1]!='%'){
pars = ENCRYPTED_LABEL;
} else {
pars = UNENCRYPTED_LABEL;
@ -355,6 +355,11 @@ void yon_hide_passwords(template_saving_window *window){
}
}
void on_save_done(main_window *widgets){
on_config_update(NULL,widgets);
}
void on_config_save(GtkWidget *self, main_window *widgets){
yon_accept_changes();
yon_samba_sync_proceed();
@ -417,12 +422,13 @@ void on_config_save(GtkWidget *self, main_window *widgets){
}
}
void on_config_global_save(){
void on_config_global_save(GtkWidget *self, main_window *widgets){
yon_accept_changes();
yon_samba_sync_proceed();
template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
if (window) yon_hide_passwords(window);
if (window){
yon_hide_passwords(window);
}
}
void on_config_local_save(GtkWidget *self, main_window *widgets){
@ -620,8 +626,11 @@ yon_confirmation_window *yon_delete_confirmation_new(){
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->DeletionTree = yon_gtk_builder_get_widget(builder,"DeletionTree");
window->HatLabel = yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
window->DeleteCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"DeleteCell"));
window->DeleteHomeCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"DeleteHomeCell"));
window->UserCell = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"UserCell"));
window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
gtk_window_set_title(GTK_WINDOW(window->Window),DELETE_CONFIRMATION_TITLE_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
@ -679,6 +688,9 @@ void yon_group_delete_confirmation_open(main_window *widgets){
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
GtkTreeIter iter,itar;
dictionary *dict = NULL;
gtk_label_set_text(GTK_LABEL(window->TitleLabel),DELETE_GROUP_CONFIRMATION_CONFIRM_LABEL);
gtk_tree_view_column_set_title(window->UserCell,GROUP_LABEL);
gtk_label_set_text(GTK_LABEL(window->HatLabel),DELETE_GROUP_CONFIRMATION_TITLE_LABEL);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),2),0);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),3),0);
gtk_tree_view_column_set_visible(gtk_tree_view_get_column(GTK_TREE_VIEW(window->DeletionTree),4),0);
@ -883,6 +895,7 @@ void on_password_change(GtkWidget *self, dictionary *entry_dict){
if (!check_is_password_hash(password)){
gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password);
} else {
if (password[0]=='%'&&password[1]=='%')
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1);
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
}
@ -959,6 +972,32 @@ void on_expiration_clicked(GtkWidget *self, ubl_settings_usergroups_user_window
yon_char_parsed_free(hash_algos,hash_size);
}
void on_users_boot_toggled(GtkToggleButton *self){
if (gtk_toggle_button_get_active(self)){
char *parameter = yon_config_get_by_key("USERADD_SYNC");
if (!parameter){
yon_config_register("USERADD_SYNC","users","boot");
} else {
yon_config_append("USERADD_SYNC","boot",",");
}
} else {
yon_config_remove_element("USERADD_SYNC","boot",",");
}
}
void on_users_shutdown_toggled(GtkToggleButton *self){
if (gtk_toggle_button_get_active(self)){
char *parameter = yon_config_get_by_key("USERADD_SYNC");
if (!parameter){
yon_config_register("USERADD_SYNC","users","shutdown");
} else {
yon_config_append("USERADD_SYNC","shutdown",",");
}
} else {
yon_config_remove_element("USERADD_SYNC","shutdown",",");
}
}
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
@ -976,9 +1015,20 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
window->EncryptAllPasswordsButton=yon_gtk_builder_get_widget(builder,"EncryptAllPasswordsButton");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
window->UsersBootCheck=yon_gtk_builder_get_widget(builder,"UsersBootCheck");
window->UsersShutdownCheck=yon_gtk_builder_get_widget(builder,"UsersShutdownCheck");
yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"AdditionalSettingsWindow");
gtk_window_set_title(GTK_WINDOW(window->Window),ADDITIONAL_SETTINGS_TITLE_LABEL);
char *sync_parameters = yon_config_get_by_key("USERADD_SYNC");
if (sync_parameters){
if (strstr(sync_parameters,"boot")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
}
if (strstr(sync_parameters,"shutdown")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersShutdownCheck),1);
}
}
int hash_size=0;
config_str hash_algos = yon_file_open(hash_list_path,&hash_size);
@ -1062,6 +1112,9 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
g_signal_connect(G_OBJECT(window->PasswordHashCombo),"changed",G_CALLBACK(on_hash_changed),window);
g_signal_connect(G_OBJECT(window->UsersBootCheck),"toggled",G_CALLBACK(on_users_boot_toggled),NULL);
g_signal_connect(G_OBJECT(window->UsersShutdownCheck),"toggled",G_CALLBACK(on_users_shutdown_toggled),NULL);
return window;
}
@ -1226,7 +1279,7 @@ void on_group_save(GtkWidget *self, dictionary *dict){
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter))
gtk_list_store_append(widgets->GroupsList,&iter);
char *passwor = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo))==0?PASSWORD_NO_SET_LABEL:check_is_password_hash(passwor)?UNENCRYPTED_LABEL:ENCRYPTED_LABEL,-1);
gtk_list_store_set(widgets->GroupsList,&iter,0,strcmp(gid,"x")?gid:"",1,group_name,2,group_users,3,yon_char_append(non_unique,gsystem),4,gtk_combo_box_get_active(GTK_COMBO_BOX(window->PasswordCombo))==0?PASSWORD_NO_SET_LABEL:check_is_password_hash(passwor)&&passwor[0]=='%'?UNENCRYPTED_LABEL:ENCRYPTED_LABEL,-1);
on_subwindow_close(self);
}
@ -1321,6 +1374,7 @@ ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(int
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);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(window->list),1,GTK_SORT_ASCENDING);
yon_window_config_custom_window_setup(GTK_WINDOW(window->GroupsWindow),"GroupWindow");
gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),GROUPS_TITLE_LABEL);
@ -1756,6 +1810,22 @@ void on_user_save(GtkWidget *self, dictionary *dict){
password="";
}
if (!window->old_password||window->old_password&&strcmp(window->old_password,password)){
time_t t = time(NULL);
struct tm tm = *localtime(&t);
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)<2){
day=yon_char_append("0",day);
}
password_changed_date = yon_char_unite(yon_char_from_int(1900+tm.tm_year),"-",month,"-",day,NULL);
} else {
password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry));
}
deactivate = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck));
if (deactivate){
if (strlen(password)>1&&password[0]=='%'&&password[1]=='%'){
@ -1801,7 +1871,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
password_expiration_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordExpirationEntry));
if (yon_char_is_empty(password_expiration_date)){
password_expiration_date="";
password_expiration_date="-1";
}
long warning_days_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin));
@ -1852,22 +1922,6 @@ void on_user_save(GtkWidget *self, dictionary *dict){
extra_options=(char*)gtk_entry_get_text(GTK_ENTRY(window->userExtraOptionsEntry));
if (!window->old_password||window->old_password&&strcmp(window->old_password,password)){
time_t t = time(NULL);
struct tm tm = *localtime(&t);
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);
} else {
password_changed_date = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordChangedEntry));
}
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";
@ -2025,9 +2079,9 @@ void on_date_selected(GtkWidget *self, ubl_settings_usergroups_user_window *wind
char *dy = yon_char_from_int(day);
char *mn = yon_char_from_int(month+1);
char *yr = yon_char_from_int(year);
if (tm.tm_mon+1<10) mn = yon_char_append("0",mn);
if (tm.tm_mday<10) dy = yon_char_append("0",dy);
char *date_string = yon_char_unite(yr,"-",mn,"-",dy);
if (month+1<10) mn = yon_char_append("0",mn);
if (day<10) dy = yon_char_append("0",dy);
char *date_string = yon_char_unite(yr,"-",mn,"-",dy,NULL);
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), date_string);
window->expiration_unix=date_string;
free(dy);
@ -2112,6 +2166,12 @@ void on_parameter_changed(GtkWidget *self,ubl_settings_usergroups_user_window *w
free(final_string);
}
void on_remove_expired(GtkWidget *self, GtkEntryIconPosition icon_pos, GdkEvent *event, GtkEntry *target){
if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
gtk_entry_set_text(target,"");
}
}
ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user);
@ -2227,6 +2287,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
g_signal_connect(G_OBJECT(window->userDontCheckCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userGroupsEntry),"changed",G_CALLBACK(on_parameter_changed),window);
g_signal_connect(G_OBJECT(window->userPasswordExpirationEntry),"icon-press",G_CALLBACK(on_remove_expired),window->userPasswordExpirationEntry);
return window;
}
@ -2346,7 +2407,10 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
}
}
if (parsed_size>5){
window->old_password=parameters[5];
window->old_password=yon_char_new(parameters[5]);
if (!yon_char_is_empty(window->old_password)&&strlen(window->old_password)&&window->old_password[0]=='!'&&window->old_password[1]=='*'){
free(yon_char_divide(window->old_password,1));
}
if (strcmp(parameters[5],"x")&&strcmp(parameters[5],"")){
if (strstr(parameters[5],"!*")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck),1);
@ -2366,12 +2430,16 @@ void on_main_edit(GtkWidget *self, main_window *widgets){
}
free(parameters);
parameters=yon_char_parse(yon_config_get_by_key(USERSHADOW(name)),&parsed_size,":");
if (parameters&&!strcmp(parameters[0],"0"))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck),1);
else
gtk_entry_set_text(GTK_ENTRY(window->userPasswordChangedEntry),parsed_size>0?parameters[0]:"");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin),atol(parsed_size>1?parameters[1]:"0"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMaximumSpin),atol(parsed_size>2?parameters[2]:"0"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userWarningSpin),atol(parsed_size>3?parameters[3]:"0"));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->userActivitySpin),atol(parsed_size>4?parameters[4]:"0"));
if (parsed_size>5&&!yon_char_is_empty(parameters[5])){
if (parsed_size>5&&!yon_char_is_empty(parameters[5])&&strcmp(parameters[5],"-1")){
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry),parameters[5]);
}
gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window));
@ -2685,6 +2753,7 @@ main_window *yon_main_window_complete(main_window *widgets){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("GroupColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
yon_save_window_set_postsave_function(on_save_done,widgets);
return widgets;
}

@ -189,6 +189,8 @@ typedef struct{
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *EncryptAllPasswordsButton;
GtkWidget *UsersBootCheck;
GtkWidget *UsersShutdownCheck;
} ubl_settings_usergroups_additional_settings_window;
typedef struct{
@ -313,9 +315,12 @@ typedef struct{
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *DeletionTree;
GtkWidget *TitleLabel;
GtkWidget *HatLabel;
GtkListStore *list;
GtkCellRenderer *DeleteCell;
GtkCellRenderer *DeleteHomeCell;
GtkTreeViewColumn *UserCell;
} yon_confirmation_window;
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new();
@ -337,3 +342,5 @@ void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets);
ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new();
void on_password_accept(GtkWidget *self, dictionary *dict);
void on_config_update(GtkWidget *self, main_window *widgets);

@ -51,7 +51,6 @@
#define UPDATE_LABEL _("Update users and groups")
#define SAVING_CONFIGURATION_LABEL _("Additional saving configuration")
#define DELETE_CONFIRMATION_LABEL(type,target) yon_char_unite(_(yon_char_append("Are you sure want to delete ",type)), " '",target,"'?",NULL)
//ubl-settings-usergroups-additional-settings.glade
#define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings")
@ -90,6 +89,9 @@
#define DESCRYPT_DESCRIPTION_LABEL _("descrypt (Hash function from the DES family of algorithms)")
#define NTHASH_DESCRIPTION_LABEL _("NTHash (Hash function from the NT Windows family of algorithms)")
#define ADDITIONAL_BOOT_LABEL _("While booting the operating system, apply the settings of all users from the configuration")
#define ADDITIONAL_SHUTDOWN_LABEL _("While shutdown, save the settings of all users with UID>=1000 to the configuration")
//ubl-settings-usergroups-group-creation.glade
#define CONFIGURE_GROUP_TITLE_LABEL _("Configure group")
#define ADD_GROUP_TITLE_LABEL _("Add group")
@ -176,7 +178,7 @@
#define USERSHADOW_BOOT_LABEL _("During system startup, load the user's parameters from the configuration")
#define USERSHADOW_SHUTDOWN_LABEL _("When shutting down the system, save the user's parameters into the configuration")
#define MAIN_NAME_LABEL _("Main")
#define MAIN_NAME_LABEL _("Basic")
#define ADDITIONAL_NAME_LABEL _("Additional")
#define SYNCRONIZATION_NAME_LABEL _("Syncronization")

@ -57,6 +57,20 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkNotebook">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -327,7 +341,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">0</property>
</packing>
</child>
<child>
@ -343,7 +357,80 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Basic</property>
</object>
<packing>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="UsersBootCheck">
<property name="label" translatable="yes">While booting the operating system, apply the settings of all users from the configuration</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="UsersShutdownCheck">
<property name="label" translatable="yes">While shutdown, save the settings of all users with UID&gt;=1000 to the configuration</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Syncronization</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab-fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>

@ -86,7 +86,7 @@
</packing>
</child>
<child>
<object class="GtkLabel">
<object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Confirm user(-s) deletion:</property>
@ -130,7 +130,7 @@
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<object class="GtkTreeViewColumn" id="UserCell">
<property name="title" translatable="yes">User</property>
<child>
<object class="GtkCellRendererText"/>

@ -464,7 +464,7 @@
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Main</property>
<property name="label" translatable="yes">Basic</property>
</object>
<packing>
<property name="tab-fill">False</property>

@ -40,6 +40,7 @@
<object class="GtkTreeView" id="GroupsTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="search-column">1</property>
<property name="enable-grid-lines">vertical</property>
<child internal-child="selection">
<object class="GtkTreeSelection">
@ -60,6 +61,9 @@
<child>
<object class="GtkTreeViewColumn" id="GroupColumn">
<property name="title" translatable="yes">Group</property>
<property name="sort-indicator">True</property>
<property name="sort-order">descending</property>
<property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>

@ -565,7 +565,7 @@
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Main</property>
<property name="label" translatable="yes">Basic</property>
</object>
<packing>
<property name="tab-fill">False</property>
@ -881,8 +881,8 @@
<child>
<object class="GtkEntry" id="userPasswordExpirationEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="can-focus">False</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.trash-symbolic</property>
</object>
<packing>
<property name="expand">False</property>

@ -53,7 +53,7 @@ msgstr ""
msgid "UID"
msgstr ""
#: source/ubl-strings.h:14 source/ubl-strings.h:100
#: source/ubl-strings.h:14 source/ubl-strings.h:103
msgid "Login"
msgstr ""
@ -211,7 +211,7 @@ msgstr ""
msgid "Set a password"
msgstr ""
#: source/ubl-strings.h:60 source/ubl-strings.h:103
#: source/ubl-strings.h:60 source/ubl-strings.h:106
msgid "Encrypted"
msgstr ""
@ -295,394 +295,406 @@ msgstr ""
msgid "NTHash (Hash function from the NT Windows family of algorithms)"
msgstr ""
#: source/ubl-strings.h:93
msgid ""
"While booting the operating system, apply the settings of all users from the "
"configuration"
msgstr ""
#: source/ubl-strings.h:94
msgid ""
"While shutdown, save the settings of all users with UID>=1000 to the "
"configuration"
msgstr ""
#: source/ubl-strings.h:97
msgid "Configure group"
msgstr ""
#: source/ubl-strings.h:95
#: source/ubl-strings.h:98
msgid "Add group"
msgstr ""
#: source/ubl-strings.h:96
#: source/ubl-strings.h:99
msgid "Group id:"
msgstr ""
#: source/ubl-strings.h:97
#: source/ubl-strings.h:100
msgid "Group name:"
msgstr ""
#: source/ubl-strings.h:98
#: source/ubl-strings.h:101
msgid "Group users:"
msgstr ""
#: source/ubl-strings.h:99
#: source/ubl-strings.h:102
msgid "Automatically"
msgstr ""
#: source/ubl-strings.h:101
#: source/ubl-strings.h:104
msgid "Create group with ununique GID"
msgstr ""
#: source/ubl-strings.h:102
#: source/ubl-strings.h:105
msgid "Create system group"
msgstr ""
#: source/ubl-strings.h:104
#: source/ubl-strings.h:107
msgid "Additional configuration"
msgstr ""
#: source/ubl-strings.h:105
#: source/ubl-strings.h:108
msgid "Group configuration synchronization"
msgstr ""
#: source/ubl-strings.h:106
#: source/ubl-strings.h:109
msgid "When shutting down the system, save the group into the configuration"
msgstr ""
#: source/ubl-strings.h:107
#: source/ubl-strings.h:110
msgid "Group administrators:"
msgstr ""
#: source/ubl-strings.h:108
#: source/ubl-strings.h:111
msgid "Group name must not start with digit"
msgstr ""
#: source/ubl-strings.h:111
#: source/ubl-strings.h:114
msgid "Default groups"
msgstr ""
#: source/ubl-strings.h:112
#: source/ubl-strings.h:115
msgid "Main group"
msgstr ""
#: source/ubl-strings.h:113
#: source/ubl-strings.h:116
msgid "Additional groups"
msgstr ""
#: source/ubl-strings.h:114
#: source/ubl-strings.h:117
msgid "Choose groups"
msgstr ""
#: source/ubl-strings.h:115
#: source/ubl-strings.h:118
msgid "Choose users"
msgstr ""
#: source/ubl-strings.h:118
#: source/ubl-strings.h:121
msgid "System users and groups"
msgstr ""
#: source/ubl-strings.h:119
#: source/ubl-strings.h:122
msgid "Locked"
msgstr ""
#: source/ubl-strings.h:120
#: source/ubl-strings.h:123
msgid "Username"
msgstr ""
#: source/ubl-strings.h:121
#: source/ubl-strings.h:124
msgid ""
"Primary\n"
"group"
msgstr ""
#: source/ubl-strings.h:122
#: source/ubl-strings.h:125
msgid ""
"Home\n"
"directory"
msgstr ""
#: source/ubl-strings.h:123 source/ubl-strings.h:129
#: source/ubl-strings.h:126 source/ubl-strings.h:132
msgid "Group"
msgstr ""
#: source/ubl-strings.h:124
#: source/ubl-strings.h:127
msgid "Update the system users and groups list"
msgstr ""
#: source/ubl-strings.h:125
#: source/ubl-strings.h:128
msgid "Toggle system groups and users"
msgstr ""
#: source/ubl-strings.h:127
#: source/ubl-strings.h:130
msgid "Password mismatch"
msgstr ""
#: source/ubl-strings.h:128
#: source/ubl-strings.h:131
msgid "Password must be at least"
msgstr ""
#: source/ubl-strings.h:128
#: source/ubl-strings.h:131
msgid "characters"
msgstr ""
#: source/ubl-strings.h:130
#: source/ubl-strings.h:133
msgid ""
"Days until\n"
"warning"
msgstr ""
#: source/ubl-strings.h:131
#: source/ubl-strings.h:134
msgid ""
"Days\n"
"without activity"
msgstr ""
#: source/ubl-strings.h:132
#: source/ubl-strings.h:135
msgid ""
"Shell\n"
"path"
msgstr ""
#: source/ubl-strings.h:133
#: source/ubl-strings.h:136
msgid ""
"Password has\n"
"been changed"
msgstr ""
#: source/ubl-strings.h:134
#: source/ubl-strings.h:137
msgid ""
"Expiration\n"
"date"
msgstr ""
#: source/ubl-strings.h:135
#: source/ubl-strings.h:138
msgid ""
"Password change\n"
"interval (min)"
msgstr ""
#: source/ubl-strings.h:136
#: source/ubl-strings.h:139
msgid ""
"Password change\n"
"interval (max)"
msgstr ""
#: source/ubl-strings.h:139
#: source/ubl-strings.h:142
msgid "Add user"
msgstr ""
#: source/ubl-strings.h:140
#: source/ubl-strings.h:143
msgid "Configure user"
msgstr ""
#: source/ubl-strings.h:141
#: source/ubl-strings.h:144
msgid "Set"
msgstr ""
#: source/ubl-strings.h:142
#: source/ubl-strings.h:145
msgid "Empty important field"
msgstr ""
#: source/ubl-strings.h:143
#: source/ubl-strings.h:146
msgid "Login must not start with digit"
msgstr ""
#: source/ubl-strings.h:144
#: source/ubl-strings.h:147
msgid "Loading has failed"
msgstr ""
#: source/ubl-strings.h:145
#: source/ubl-strings.h:148
msgid "Login name"
msgstr ""
#: source/ubl-strings.h:146
#: source/ubl-strings.h:149
msgid "Additional groups:"
msgstr ""
#: source/ubl-strings.h:147
#: source/ubl-strings.h:150
msgid "Password configuration"
msgstr ""
#: source/ubl-strings.h:148
#: source/ubl-strings.h:151
msgid "Password has been changed:"
msgstr ""
#: source/ubl-strings.h:149
#: source/ubl-strings.h:152
msgid "expiration date:"
msgstr ""
#: source/ubl-strings.h:150
#: source/ubl-strings.h:153
msgid "Password change interval: minimum"
msgstr ""
#: source/ubl-strings.h:151
#: source/ubl-strings.h:154
msgid "days, maximum"
msgstr ""
#: source/ubl-strings.h:152
#: source/ubl-strings.h:155
msgid "days"
msgstr ""
#: source/ubl-strings.h:153
#: source/ubl-strings.h:156
msgid "Days until warning:"
msgstr ""
#: source/ubl-strings.h:154
#: source/ubl-strings.h:157
msgid "Days without activity:"
msgstr ""
#: source/ubl-strings.h:155
#: source/ubl-strings.h:158
msgid "Force change at next login"
msgstr ""
#: source/ubl-strings.h:156
#: source/ubl-strings.h:159
msgid "User shell:"
msgstr ""
#: source/ubl-strings.h:157
#: source/ubl-strings.h:160
msgid "Home directory:"
msgstr ""
#: source/ubl-strings.h:158
#: source/ubl-strings.h:161
msgid "Don't set"
msgstr ""
#: source/ubl-strings.h:159
#: source/ubl-strings.h:162
msgid "Create system user"
msgstr ""
#: source/ubl-strings.h:160
#: source/ubl-strings.h:163
msgid "Create user with ununique (repeating) UID"
msgstr ""
#: source/ubl-strings.h:161
#: source/ubl-strings.h:164
msgid "Do not check login for compliance with character rules"
msgstr ""
#: source/ubl-strings.h:162
#: source/ubl-strings.h:165
msgid "Temporary deactivation"
msgstr ""
#: source/ubl-strings.h:163
#: source/ubl-strings.h:166
msgid "Save"
msgstr ""
#: source/ubl-strings.h:164
#: source/ubl-strings.h:167
msgid "login_name"
msgstr ""
#: source/ubl-strings.h:165
#: source/ubl-strings.h:168
msgid "group_name"
msgstr ""
#: source/ubl-strings.h:166
#: source/ubl-strings.h:169
msgid "User name"
msgstr ""
#: source/ubl-strings.h:167
#: source/ubl-strings.h:170
msgid "Sync user"
msgstr ""
#: source/ubl-strings.h:168
#: source/ubl-strings.h:171
msgid "Sync user with password"
msgstr ""
#: source/ubl-strings.h:169
#: source/ubl-strings.h:172
msgid "Encrypt all passwords"
msgstr ""
#: source/ubl-strings.h:171
#: source/ubl-strings.h:174
msgid "User configuration"
msgstr ""
#: source/ubl-strings.h:172
#: source/ubl-strings.h:175
msgid "User configuration synchronization"
msgstr ""
#: source/ubl-strings.h:173
#: source/ubl-strings.h:176
msgid "During system startup, load the user from the configuration"
msgstr ""
#: source/ubl-strings.h:174
#: source/ubl-strings.h:177
msgid "When shutting down the system, save the user into the configuration"
msgstr ""
#: source/ubl-strings.h:175
#: source/ubl-strings.h:178
msgid "User password configuration syncronization"
msgstr ""
#: source/ubl-strings.h:176
#: source/ubl-strings.h:179
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr ""
#: source/ubl-strings.h:177
#: source/ubl-strings.h:180
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
#: source/ubl-strings.h:179
msgid "Main"
#: source/ubl-strings.h:182
msgid "Basic"
msgstr ""
#: source/ubl-strings.h:180
#: source/ubl-strings.h:183
msgid "Additional"
msgstr ""
#: source/ubl-strings.h:181
#: source/ubl-strings.h:184
msgid "Syncronization"
msgstr ""
#: source/ubl-strings.h:183
#: source/ubl-strings.h:186
msgid "Not specified"
msgstr ""
#: source/ubl-strings.h:186
#: source/ubl-strings.h:189
msgid "Repeat password:"
msgstr ""
#: source/ubl-strings.h:187
#: source/ubl-strings.h:190
msgid "Password hash:"
msgstr ""
#: source/ubl-strings.h:188
#: source/ubl-strings.h:191
msgid "Do not encrypt password"
msgstr ""
#: source/ubl-strings.h:191
#: source/ubl-strings.h:194
msgid "Additional configuration of service parameter saving"
msgstr ""
#: source/ubl-strings.h:192
#: source/ubl-strings.h:195
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
msgstr ""
#: source/ubl-strings.h:193
#: source/ubl-strings.h:196
msgid "For system save mode \"Sandbox\""
msgstr ""
#: source/ubl-strings.h:196
#: source/ubl-strings.h:199
msgid "Group deletion"
msgstr ""
#: source/ubl-strings.h:197
#: source/ubl-strings.h:200
msgid "Confirm group(-s) deletion:"
msgstr ""
#: source/ubl-strings.h:199
#: source/ubl-strings.h:202
msgid "User deletion"
msgstr ""
#: source/ubl-strings.h:200
#: source/ubl-strings.h:203
msgid "Confirm user(-s) deletion:"
msgstr ""
#: source/ubl-strings.h:201
#: source/ubl-strings.h:204
msgid "Chosen"
msgstr ""
#: source/ubl-strings.h:202
#: source/ubl-strings.h:205
msgid "User"
msgstr ""
#: source/ubl-strings.h:203
#: source/ubl-strings.h:206
msgid "Home directory"
msgstr ""
#: source/ubl-strings.h:204
#: source/ubl-strings.h:207
msgid "Delete home directory"
msgstr ""

@ -53,7 +53,7 @@ msgstr "Алгоритм хэширования пароля:"
msgid "UID"
msgstr "UID"
#: source/ubl-strings.h:14 source/ubl-strings.h:100
#: source/ubl-strings.h:14 source/ubl-strings.h:103
msgid "Login"
msgstr "Логин"
@ -225,7 +225,7 @@ msgstr "Пароль не требуется"
msgid "Set a password"
msgstr "Задать пароль"
#: source/ubl-strings.h:60 source/ubl-strings.h:103
#: source/ubl-strings.h:60 source/ubl-strings.h:106
msgid "Encrypted"
msgstr "Зашифрован"
@ -311,91 +311,107 @@ msgstr "descrypt (Хеш-функция из семейства алгоритм
msgid "NTHash (Hash function from the NT Windows family of algorithms)"
msgstr "NTHash (Хеш-функция из семейства алгоритмов NT Windows)"
#: source/ubl-strings.h:93
msgid ""
"While booting the operating system, apply the settings of all users from the "
"configuration"
msgstr ""
"При запуске операционной системы применять настройки всех пользователей "
"из конфигурации"
#: source/ubl-strings.h:94
msgid ""
"While shutdown, save the settings of all users with UID>=1000 to the "
"configuration"
msgstr ""
"При завершении работы сохранить настройки пользователей "
"с UID>=1000 в конфигурацию"
#: source/ubl-strings.h:97
msgid "Configure group"
msgstr "Редактировать группу"
#: source/ubl-strings.h:95
#: source/ubl-strings.h:98
msgid "Add group"
msgstr "Добавить группу"
#: source/ubl-strings.h:96
#: source/ubl-strings.h:99
msgid "Group id:"
msgstr "ID Группы:"
#: source/ubl-strings.h:97
#: source/ubl-strings.h:100
msgid "Group name:"
msgstr "Имя группы:"
#: source/ubl-strings.h:98
#: source/ubl-strings.h:101
msgid "Group users:"
msgstr "Пользователи группы:"
#: source/ubl-strings.h:99
#: source/ubl-strings.h:102
msgid "Automatically"
msgstr "Автоматически"
#: source/ubl-strings.h:101
#: source/ubl-strings.h:104
msgid "Create group with ununique GID"
msgstr "Создать группу с повторяющимися (не уникальными) GID"
#: source/ubl-strings.h:102
#: source/ubl-strings.h:105
msgid "Create system group"
msgstr "Создать системную группу"
#: source/ubl-strings.h:104
#: source/ubl-strings.h:107
msgid "Additional configuration"
msgstr "Дополнительные настройки"
#: source/ubl-strings.h:105
#: source/ubl-strings.h:108
msgid "Group configuration synchronization"
msgstr "Синхронизация настроек группы"
#: source/ubl-strings.h:106
#: source/ubl-strings.h:109
msgid "When shutting down the system, save the group into the configuration"
msgstr "При завершении работы системы сохранить группу в конфигурацию"
#: source/ubl-strings.h:107
#: source/ubl-strings.h:110
msgid "Group administrators:"
msgstr "Администраторы группы:"
#: source/ubl-strings.h:108
#: source/ubl-strings.h:111
msgid "Group name must not start with digit"
msgstr "Имя группы не должно начинаться с цифры"
#: source/ubl-strings.h:111
#: source/ubl-strings.h:114
msgid "Default groups"
msgstr "Группы пользователей по умолчанию"
#: source/ubl-strings.h:112
#: source/ubl-strings.h:115
msgid "Main group"
msgstr "Основная группа"
#: source/ubl-strings.h:113
#: source/ubl-strings.h:116
msgid "Additional groups"
msgstr "Дополнительные группы"
#: source/ubl-strings.h:114
#: source/ubl-strings.h:117
msgid "Choose groups"
msgstr "Выбрать группы"
#: source/ubl-strings.h:115
#: source/ubl-strings.h:118
msgid "Choose users"
msgstr "Выбрать пользователей"
#: source/ubl-strings.h:118
#: source/ubl-strings.h:121
msgid "System users and groups"
msgstr "Пользователи и группы в системе"
#: source/ubl-strings.h:119
#: source/ubl-strings.h:122
msgid "Locked"
msgstr "Отключен"
#: source/ubl-strings.h:120
#: source/ubl-strings.h:123
msgid "Username"
msgstr "Имя пользователя"
#: source/ubl-strings.h:121
#: source/ubl-strings.h:124
msgid ""
"Primary\n"
"group"
@ -403,7 +419,7 @@ msgstr ""
"Основная\n"
"группа"
#: source/ubl-strings.h:122
#: source/ubl-strings.h:125
msgid ""
"Home\n"
"directory"
@ -411,31 +427,31 @@ msgstr ""
"Домашний\n"
"каталог"
#: source/ubl-strings.h:123 source/ubl-strings.h:129
#: source/ubl-strings.h:126 source/ubl-strings.h:132
msgid "Group"
msgstr "Группа"
#: source/ubl-strings.h:124
#: source/ubl-strings.h:127
msgid "Update the system users and groups list"
msgstr "Обновить список пользователей и групп системы"
#: source/ubl-strings.h:125
#: source/ubl-strings.h:128
msgid "Toggle system groups and users"
msgstr "Переключить видимость системных пользователей и групп"
#: source/ubl-strings.h:127
#: source/ubl-strings.h:130
msgid "Password mismatch"
msgstr "Несовпадение паролей"
#: source/ubl-strings.h:128
#: source/ubl-strings.h:131
msgid "Password must be at least"
msgstr "Пароль должен состоять из как минимум"
#: source/ubl-strings.h:128
#: source/ubl-strings.h:131
msgid "characters"
msgstr "символов"
#: source/ubl-strings.h:130
#: source/ubl-strings.h:133
msgid ""
"Days until\n"
"warning"
@ -443,7 +459,7 @@ msgstr ""
"Дней до\n"
"предупреждения"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:134
msgid ""
"Days\n"
"without activity"
@ -451,7 +467,7 @@ msgstr ""
"Дней без\n"
"активности"
#: source/ubl-strings.h:132
#: source/ubl-strings.h:135
msgid ""
"Shell\n"
"path"
@ -459,7 +475,7 @@ msgstr ""
"Путь до\n"
"оболочки"
#: source/ubl-strings.h:133
#: source/ubl-strings.h:136
msgid ""
"Password has\n"
"been changed"
@ -467,7 +483,7 @@ msgstr ""
"Пароль\n"
"изменён"
#: source/ubl-strings.h:134
#: source/ubl-strings.h:137
msgid ""
"Expiration\n"
"date"
@ -475,7 +491,7 @@ msgstr ""
"Дата\n"
"устаревания"
#: source/ubl-strings.h:135
#: source/ubl-strings.h:138
msgid ""
"Password change\n"
"interval (min)"
@ -483,7 +499,7 @@ msgstr ""
"Интервал смены\n"
"пароля (мин.)"
#: source/ubl-strings.h:136
#: source/ubl-strings.h:139
msgid ""
"Password change\n"
"interval (max)"
@ -491,199 +507,199 @@ msgstr ""
"Интервал смены\n"
"пароля (макс.)"
#: source/ubl-strings.h:139
#: source/ubl-strings.h:142
msgid "Add user"
msgstr "Добавить пользователя"
#: source/ubl-strings.h:140
#: source/ubl-strings.h:143
msgid "Configure user"
msgstr "Редактировать пользователя"
#: source/ubl-strings.h:141
#: source/ubl-strings.h:144
msgid "Set"
msgstr "Задать"
#: source/ubl-strings.h:142
#: source/ubl-strings.h:145
msgid "Empty important field"
msgstr "Пустое важное поле"
#: source/ubl-strings.h:143
#: source/ubl-strings.h:146
msgid "Login must not start with digit"
msgstr "Логин не должен начинаться с цифры"
#: source/ubl-strings.h:144
#: source/ubl-strings.h:147
msgid "Loading has failed"
msgstr "Ошибка загрузки"
#: source/ubl-strings.h:145
#: source/ubl-strings.h:148
msgid "Login name"
msgstr "Имя логина"
#: source/ubl-strings.h:146
#: source/ubl-strings.h:149
msgid "Additional groups:"
msgstr "Дополнительные группы:"
#: source/ubl-strings.h:147
#: source/ubl-strings.h:150
msgid "Password configuration"
msgstr "Конфигурация пароля"
#: source/ubl-strings.h:148
#: source/ubl-strings.h:151
msgid "Password has been changed:"
msgstr "Пароль изменён:"
#: source/ubl-strings.h:149
#: source/ubl-strings.h:152
msgid "expiration date:"
msgstr "Дата устаревания:"
#: source/ubl-strings.h:150
#: source/ubl-strings.h:153
msgid "Password change interval: minimum"
msgstr "Интервал смены пароля: минимум"
#: source/ubl-strings.h:151
#: source/ubl-strings.h:154
msgid "days, maximum"
msgstr "дней, максимум"
#: source/ubl-strings.h:152
#: source/ubl-strings.h:155
msgid "days"
msgstr "дней"
#: source/ubl-strings.h:153
#: source/ubl-strings.h:156
msgid "Days until warning:"
msgstr "Дней до предупреждения:"
#: source/ubl-strings.h:154
#: source/ubl-strings.h:157
msgid "Days without activity:"
msgstr "Дней без активности:"
#: source/ubl-strings.h:155
#: source/ubl-strings.h:158
msgid "Force change at next login"
msgstr "Принудительно сменить при следующем входе в систему"
#: source/ubl-strings.h:156
#: source/ubl-strings.h:159
msgid "User shell:"
msgstr "Оболочка пользователя:"
#: source/ubl-strings.h:157
#: source/ubl-strings.h:160
msgid "Home directory:"
msgstr "Домашний каталог:"
#: source/ubl-strings.h:158
#: source/ubl-strings.h:161
msgid "Don't set"
msgstr "Не создавать"
#: source/ubl-strings.h:159
#: source/ubl-strings.h:162
msgid "Create system user"
msgstr "Создать системного пользователя"
#: source/ubl-strings.h:160
#: source/ubl-strings.h:163
msgid "Create user with ununique (repeating) UID"
msgstr "Создать пользователя с повторяющимися (не уникальными) UID"
#: source/ubl-strings.h:161
#: source/ubl-strings.h:164
msgid "Do not check login for compliance with character rules"
msgstr "Не проверять логин на несоответствие правилам использования символов"
#: source/ubl-strings.h:162
#: source/ubl-strings.h:165
msgid "Temporary deactivation"
msgstr "Временное отключение учётной записи"
#: source/ubl-strings.h:163
#: source/ubl-strings.h:166
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:164
#: source/ubl-strings.h:167
msgid "login_name"
msgstr "Имя_логина"
#: source/ubl-strings.h:165
#: source/ubl-strings.h:168
msgid "group_name"
msgstr "Имя_группы"
#: source/ubl-strings.h:166
#: source/ubl-strings.h:169
msgid "User name"
msgstr "Имя пользователя"
#: source/ubl-strings.h:167
#: source/ubl-strings.h:170
msgid "Sync user"
msgstr "Синхронизировать пользователя"
#: source/ubl-strings.h:168
#: source/ubl-strings.h:171
msgid "Sync user with password"
msgstr "Синхронизировать пользователя с паролем"
#: source/ubl-strings.h:169
#: source/ubl-strings.h:172
msgid "Encrypt all passwords"
msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:171
#: source/ubl-strings.h:174
msgid "User configuration"
msgstr "Настройка пользователя"
#: source/ubl-strings.h:172
#: source/ubl-strings.h:175
msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:173
#: source/ubl-strings.h:176
msgid "During system startup, load the user from the configuration"
msgstr ""
"При запуске операционной системы применять настройки пользователя из "
"конфигурации"
#: source/ubl-strings.h:174
#: source/ubl-strings.h:177
msgid "When shutting down the system, save the user into the configuration"
msgstr ""
"При завершении работы операционной системы сохранить настройки пользователя "
"в конфигурацию"
#: source/ubl-strings.h:175
#: source/ubl-strings.h:178
msgid "User password configuration syncronization"
msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:176
#: source/ubl-strings.h:179
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:177
#: source/ubl-strings.h:180
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:179
msgid "Main"
#: source/ubl-strings.h:182
msgid "Basic"
msgstr "Основные"
#: source/ubl-strings.h:180
#: source/ubl-strings.h:183
msgid "Additional"
msgstr "Дополнительные"
#: source/ubl-strings.h:181
#: source/ubl-strings.h:184
msgid "Syncronization"
msgstr "Синхронизация"
#: source/ubl-strings.h:183
#: source/ubl-strings.h:186
msgid "Not specified"
msgstr "Не задан"
#: source/ubl-strings.h:186
#: source/ubl-strings.h:189
msgid "Repeat password:"
msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:187
#: source/ubl-strings.h:190
msgid "Password hash:"
msgstr "Хэш пароля:"
#: source/ubl-strings.h:188
#: source/ubl-strings.h:191
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-strings.h:191
#: source/ubl-strings.h:194
msgid "Additional configuration of service parameter saving"
msgstr "Дополнительные настройки сохранения параметров сервисов"
#: source/ubl-strings.h:192
#: source/ubl-strings.h:195
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
@ -691,44 +707,38 @@ msgstr ""
"При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n"
"в (hd)/ublinux-data/rootcopy/"
#: source/ubl-strings.h:193
#: source/ubl-strings.h:196
msgid "For system save mode \"Sandbox\""
msgstr "Для режима сохранения системы \"Песочница\""
#: source/ubl-strings.h:196
#: source/ubl-strings.h:199
msgid "Group deletion"
msgstr "Удаление пользователя(-лей)"
msgstr "Удаление групп(-ы)"
#: source/ubl-strings.h:197
#: source/ubl-strings.h:200
msgid "Confirm group(-s) deletion:"
msgstr "Подтвердите удаление групп(-ы):"
#: source/ubl-strings.h:199
#: source/ubl-strings.h:202
msgid "User deletion"
msgstr "Удаление групп(-ы)"
msgstr "Удаление пользователя(-ей)"
#: source/ubl-strings.h:200
#: source/ubl-strings.h:203
msgid "Confirm user(-s) deletion:"
msgstr "Подтвердите удаление пользователя (-ей):"
#: source/ubl-strings.h:201
#: source/ubl-strings.h:204
msgid "Chosen"
msgstr "Выбран"
#: source/ubl-strings.h:202
#: source/ubl-strings.h:205
msgid "User"
msgstr "Пользователь"
#: source/ubl-strings.h:203
#: source/ubl-strings.h:206
msgid "Home directory"
msgstr "Домашний каталог"
#: source/ubl-strings.h:204
#: source/ubl-strings.h:207
msgid "Delete home directory"
msgstr "Удалить домашний каталог"
msgid "Are you sure want to delete group"
msgstr "Вы уверены, что хотите удалить группу"
msgid "Are you sure want to delete user"
msgstr "Вы уверены, что хотите удалить пользователя"

Loading…
Cancel
Save