Merge pull request 'covering 'system' functions' (#83) from YanTheKaller/ubl-settings-usergroups:master into master

Reviewed-on: #83
pull/107/head v2.1
Dmitry Razumov 2 years ago
commit dda871d863

@ -42,7 +42,7 @@ void yon_interface_update(main_window *widgets){
4,parameters_size>2?parameters[2]:"",
5,parameters_size>3?parameters[3]:"",
6,parameters_size>4?parameters[4]:"",
7,parameters_size>5?strcmp(parameters[5],"x")? ENDRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL,
7,parameters_size>5?strcmp(parameters[5],"x")&&strcmp(parameters[5],"")? parameters[5][0]=='%'&&parameters[5][1]=='%'? UNENCRYPTED_LABEL: ENCRYPTED_LABEL : DEFAULT_USER_LABEL : DEFAULT_USER_LABEL,
-1);
if(parameters)
free(parameters);
@ -70,7 +70,7 @@ void yon_interface_update(main_window *widgets){
0,parameters_size>1?parameters[1]:"",
2,parameters_size>0?parameters[0]:"",
3,parameters_size>2?parameters[2]:"",
4,parameters_size>3?ENDRYPTED_LABEL:DEFAULT_USER_LABEL,
4,parameters_size>3?ENCRYPTED_LABEL:DEFAULT_USER_LABEL,
-1);
if(parameters)
free(parameters);
@ -106,9 +106,9 @@ if (main_config.sync_users){
if (parsed[1][0]==' '&&parsed[1][1]=='.'&&parsed[1][2]==' ')
free(parsed[1]=yon_char_divide(parsed[1],3));
system (samba_sync_password_command(parsed[0],parsed[1]));
if (system (samba_sync_password_command(parsed[0],parsed[1]))){};
} else {
system ( samba_sync_command(parsed[0]));
if (system ( samba_sync_command(parsed[0]))){};
}
@ -117,15 +117,31 @@ if (main_config.sync_users){
}
}
void yon_accept_changes(){
char *remove_homes = "";
for (int i=0;i<main_config.homes_size;i++){
remove_homes = yon_char_unite(remove_homes,yon_char_is_empty(remove_homes)?"":",",main_config.remove_homes[i],NULL);
}
if (!yon_char_is_empty(remove_homes)){
if (system(remove_home_dirs_command(remove_homes))){};
}
}
void on_config_save(){
yon_accept_changes();
yon_samba_sync_proceed();
yon_save_proceed(NULL,YON_CONFIG_BOTH,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
}
void on_config_global_save(){
yon_accept_changes();
yon_samba_sync_proceed();
yon_save_proceed("global",YON_CONFIG_GLOBAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
}
void on_config_local_save(){
yon_accept_changes();
yon_samba_sync_proceed();
yon_save_proceed("system",YON_CONFIG_LOCAL,"users", "DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL);
}
@ -197,21 +213,41 @@ void yon_delete_confirmation_save(GtkWidget *self, dictionary *dict){
int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
char *name_check;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,1,&name_check,-1);
if (!strcmp(name,name_check)){
GtkTreeIter *it = gtk_tree_iter_copy(&iter);
if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
iter = *gtk_tree_iter_copy(it);
if (!gtk_tree_model_iter_previous(GTK_TREE_MODEL(widgets->UsersList),&iter)){
iter = *gtk_tree_iter_copy(it);
int status,delete;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
if (!strcmp(name,name_check)&&delete){
gtk_list_store_remove(widgets->UsersList,&iter);
yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERSHADOW(name));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
if (status){
if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
}
}
gtk_list_store_remove(widgets->UsersList,it);
}
}
}
char *name;
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1);
int valid2 = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&itar);
for (;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
char *name_check;
int status,delete;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&delete,1,&name_check,3,&status,-1);
if (!strcmp(name,name_check)&&delete){
gtk_list_store_remove(widgets->UsersList,&iter);
yon_config_remove_by_key(USERADD(name));
yon_config_remove_by_key(USERSHADOW(name));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
if (status){
if (yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,name)==-1){
yon_char_parsed_add_or_create_if_exists(main_config.remove_homes,&main_config.homes_size,name);
}
}
}
}
}
on_subwindow_close(self);
}
@ -253,24 +289,25 @@ void yon_delete_confirmation_open(main_window *widgets){
}
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->UsersList),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){
char *name,*parameters,*homedir=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,6,&parameters,-1);
if (strstr(parameters,"--home-dir")){
int size;
config_str parsed = yon_char_parse(parameters,&size," ");
for (int i=0;i<size-1;i++){
if (!strcmp(parsed[i],"--home-dir")){
homedir = yon_char_new(parsed[i+1]);
break;
}
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,size);
yon_char_parsed_free(parsed,parsed_size);
}
int status=0;
if (homedir) status=1;
gtk_list_store_append(window->list,&itar);
gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,status,-1);
gtk_list_store_set(window->list,&itar,0,yon_char_parsed_check_exist(chosen,chosen_size,name)>-1?1:0,1,name,2,homedir,3,0,4,status,5,username,-1);
free(name);
free(username);
free(parameters);
free(homedir);
}
@ -316,10 +353,6 @@ void on_filechooser_open(GtkWidget *self, GtkEntry *output_target){
}
on_subwindow_close(dialog);
// ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// gtk_widget_show(window->Window);
}
void on_groups_save(GtkWidget *self, dictionary *dict){
@ -1072,7 +1105,8 @@ void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets){
void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window *window){
if (!strcmp(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),SET_LABEL)){
const char *current = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo));
if (!yon_char_is_empty(current)&&!strcmp(current,SET_LABEL)){
if(gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo))>1){
gtk_widget_set_sensitive(window->userShellEntry,1);
} else {
@ -1180,6 +1214,9 @@ void on_user_save(GtkWidget *self, dictionary *dict){
yon_ubl_status_highlight_incorrect(window->userPasswordEntry);
return;
}
if (password[0]==' '&&password[1]=='.'&&password[2]==' '){
free(yon_char_divide(password,2));
}
} else {
password="x";
}
@ -1333,6 +1370,10 @@ void on_user_save(GtkWidget *self, dictionary *dict){
NULL);
yon_config_register(USERADD(login),"users",final_user);
yon_config_register(USERSHADOW(login),"users",shadow_string);
int home_delete = yon_char_parsed_check_exist(main_config.remove_homes,main_config.homes_size,login);
if (home_delete>-1){
yon_char_parsed_rip(main_config.remove_homes,&main_config.homes_size,home_delete);
}
if (!yon_char_is_empty(useradd_sync_string))
yon_config_register(USERADD_SYNC(login),"users",useradd_sync_string);
@ -1341,6 +1382,11 @@ void on_user_save(GtkWidget *self, dictionary *dict){
yon_config_register(USERSHADOW_SYNC(login),"users",usershadow_sync_string);
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
char *password_status=NULL;
if (password_active==0) password_status = DEFAULT_USER_LABEL;
else if (password_active==1) password_status = NO_PASSWORD_LABEL;
else if (password[0]=='%'&&password[1]=='%') password_status = UNENCRYPTED_LABEL;
else password_status = ENCRYPTED_LABEL;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter))
gtk_list_store_append(widgets->UsersList,&iter);
gtk_list_store_set(widgets->UsersList,&iter,
@ -1350,7 +1396,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
4,yon_char_return_if_exist(main_group,login),
5,yon_char_return_if_exist(additional_groups,""),
6,yon_char_unite(yon_char_return_if_exist(user_home,""),yon_char_return_if_exist(user_shell,""),yon_char_return_if_exist(create_system_user,""),yon_char_return_if_exist(create_ununique,""),yon_char_return_if_exist(do_not_check,""),NULL),
7,yon_char_return_if_exist(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userPasswordCombo)),""),
7,password_status,
-1);
on_subwindow_close(self);
}
@ -1799,6 +1845,8 @@ void config_init(){
main_config.password_min_length=6;
main_config.sync_users = NULL;
main_config.sync_size=0;
main_config.homes_size=0;
main_config.remove_homes=NULL;
int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){
@ -2004,7 +2052,7 @@ int main(int argc, char *argv[]){
if(optarg)
main_config.load_socket_id=atoi(optarg);
break;
case 'c': system(remove_config_dir_command);
case 'c': if (system(remove_config_dir_command)){};
break;
case 1:
main_config.lock_help=1;

@ -50,6 +50,8 @@
#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 remove_home_dirs_command(users_string) yon_char_append("/usr/lib/ublinux/functions remove_userhome ", users_string)
#define hash_list_path "/usr/share/ubl-settings-usergroups/csv/hash_list.csv"
#define shell_list_path "/usr/share/ubl-settings-usergroups/csv/shell_list.csv"
@ -102,6 +104,8 @@ typedef struct {
int hash_default_id;
config_str sync_users;
int sync_size;
config_str remove_homes;
int homes_size;
} config;
typedef struct {

@ -58,7 +58,8 @@
#define ADDITIONAL_SETTINGS_TITLE_LABEL _("Additional settings")
#define NO_PASSWORD_LABEL _("No password required")
#define SET_PASSWORD_LABEL _("Set a password")
#define ENDRYPTED_LABEL _("Endrypted password")
#define ENCRYPTED_LABEL _("Encrypted password")
#define UNENCRYPTED_LABEL _("Unencrypted password")
#define MD5_LABEL "md5"
#define YESCRYPT_LABEL "yescrypt"
#define SCRYPT_LABEL "scrypt"

@ -25,6 +25,8 @@
<column type="gboolean"/>
<!-- column-name gboolean3 -->
<column type="gboolean"/>
<!-- column-name gchararray3 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="Window">
@ -71,8 +73,9 @@
<property name="can-focus">False</property>
<property name="margin-start">20</property>
<property name="margin-end">20</property>
<property name="margin-top">20</property>
<property name="margin-bottom">20</property>
<property name="margin-top">10</property>
<property name="margin-bottom">10</property>
<property name="pixel-size">50</property>
<property name="icon-name">dialog-question-symbolic</property>
<property name="icon_size">6</property>
</object>
@ -137,6 +140,17 @@
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">User name</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Home directory</property>

@ -39,10 +39,6 @@ background:transparent;
border-right-width:inherit;
}
.menuitemmiddlemargin{
margin-top: 6px;
}
.menuitemtop{
margin-bottom:0px;
border-color:inherit;
@ -50,17 +46,17 @@ background:transparent;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemtop *{
margin:4px 2px 0 2px;
.menuitemtop>*{
margin:2px 2px 0 2px;
padding: 3px 10px 3px 5px;
border:transparent;
}
.menuitemmiddle *{
.menuitemmiddle>*{
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
border:transparent;
}
.menuitembottom *{
.menuitembottom>*{
margin:0 2px 2px 2px;
padding: 3px 10px 3px 5px;
}
@ -85,19 +81,19 @@ background:transparent;
border-right-width:inherit;
}
.menuitemtop:hover* {
margin:4px 2px 0 2px;
.menuitemtop:hover>* {
margin:2px 2px 0 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitemmiddle:hover* {
margin:0 2px 0 2px;
.menuitemmiddle:hover>* {
margin:0 2px 0px 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitembottom:hover* {
.menuitembottom:hover>* {
margin:0 2px 2px 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;

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

@ -107,7 +107,7 @@ msgstr "Алгоритм хэширования пароля:"
msgid "UID"
msgstr "UID"
#: source/ubl-strings.h:15 source/ubl-strings.h:83
#: source/ubl-strings.h:15 source/ubl-strings.h:84
msgid "Login"
msgstr "Логин"
@ -287,99 +287,99 @@ msgstr "Пароль не требуется"
msgid "Set a password"
msgstr "Задать пароль"
#: source/ubl-strings.h:61
msgid "Endrypted password"
#: source/ubl-strings.h:61 source/ubl-strings.h:87
msgid "Encrypted password"
msgstr "Зашифрованный пароль"
#: source/ubl-strings.h:74
#: source/ubl-strings.h:62
msgid "Unencrypted password"
msgstr "Незашифрованный пароль"
#: source/ubl-strings.h:75
msgid "Accept"
msgstr "Принять"
#: source/ubl-strings.h:77
#: source/ubl-strings.h:78
msgid "Configure group"
msgstr "Редактировать группу"
#: source/ubl-strings.h:78
#: source/ubl-strings.h:79
msgid "Add group"
msgstr "Добавить группу"
#: source/ubl-strings.h:79
#: source/ubl-strings.h:80
msgid "Group id:"
msgstr "ID Группы:"
#: source/ubl-strings.h:80
#: source/ubl-strings.h:81
msgid "Group name:"
msgstr "Имя группы:"
#: source/ubl-strings.h:81
#: source/ubl-strings.h:82
msgid "Group users:"
msgstr "Пользователи группы:"
#: source/ubl-strings.h:82
#: source/ubl-strings.h:83
msgid "Automatically"
msgstr "Автоматически"
#: source/ubl-strings.h:84
#: source/ubl-strings.h:85
msgid "Create group with ununique GID"
msgstr "Создать группу с повторяющимися (не уникальными) GID"
#: source/ubl-strings.h:85
#: source/ubl-strings.h:86
msgid "Create system group"
msgstr "Создать системную группу"
#: source/ubl-strings.h:86
msgid "Encrypted password"
msgstr "Зашифрованный пароль"
#: source/ubl-strings.h:87
#: source/ubl-strings.h:88
msgid "Additional configuration"
msgstr "Дополнительные настройки"
#: source/ubl-strings.h:88
#: source/ubl-strings.h:89
msgid "Group configuration synchronization"
msgstr "Синхронизация настроек группы"
#: source/ubl-strings.h:89
#: source/ubl-strings.h:90
msgid "When shutting down the system, save the group into the configuration"
msgstr "При завершении работы системы сохранить группу в конфигурацию"
#: source/ubl-strings.h:90
#: source/ubl-strings.h:91
msgid "Group administrators:"
msgstr "Администраторы группы:"
#: source/ubl-strings.h:93
#: source/ubl-strings.h:94
msgid "Default groups"
msgstr "Группы пользователей по умолчанию"
#: source/ubl-strings.h:94
#: source/ubl-strings.h:95
msgid "Main group"
msgstr "Основная группа"
#: source/ubl-strings.h:95
#: source/ubl-strings.h:96
msgid "Additional groups"
msgstr "Дополнительные группы"
#: source/ubl-strings.h:96
#: source/ubl-strings.h:97
msgid "Choose groups"
msgstr "Выбрать группы"
#: source/ubl-strings.h:97
#: source/ubl-strings.h:98
msgid "Choose users"
msgstr "Выбрать пользователей"
#: source/ubl-strings.h:100
#: source/ubl-strings.h:101
msgid "System users and groups"
msgstr "Пользователи и группы в системе"
#: source/ubl-strings.h:101
#: source/ubl-strings.h:102
msgid "Blocked"
msgstr "Заблокировано"
#: source/ubl-strings.h:102
#: source/ubl-strings.h:103
msgid "Username"
msgstr "Имя пользователя"
#: source/ubl-strings.h:103
#: source/ubl-strings.h:104
msgid ""
"Primary\n"
"group"
@ -387,7 +387,7 @@ msgstr ""
"Основная\n"
"группа"
#: source/ubl-strings.h:104
#: source/ubl-strings.h:105
msgid ""
"Home\n"
"directory"
@ -395,31 +395,31 @@ msgstr ""
"Домашний\n"
"каталог"
#: source/ubl-strings.h:105 source/ubl-strings.h:111
#: source/ubl-strings.h:106 source/ubl-strings.h:112
msgid "Group"
msgstr "Группа"
#: source/ubl-strings.h:106
#: source/ubl-strings.h:107
msgid "Update the system users and groups list"
msgstr "Обновить список пользователей и групп системы"
#: source/ubl-strings.h:107
#: source/ubl-strings.h:108
msgid "Toggle system groups and users"
msgstr "Переключить видимость системных пользователей и групп"
#: source/ubl-strings.h:109
#: source/ubl-strings.h:110
msgid "Password mismatch"
msgstr "Несовпадение паролей"
#: source/ubl-strings.h:110
#: source/ubl-strings.h:111
msgid "Password must be at least"
msgstr "Пароль должен состоять из как минимум"
#: source/ubl-strings.h:110
#: source/ubl-strings.h:111
msgid "characters"
msgstr "символов"
#: source/ubl-strings.h:112
#: source/ubl-strings.h:113
msgid ""
"Days until\n"
"warning"
@ -427,7 +427,7 @@ msgstr ""
"Дней до\n"
"предупреждения"
#: source/ubl-strings.h:113
#: source/ubl-strings.h:114
msgid ""
"Days\n"
"without activity"
@ -435,7 +435,7 @@ msgstr ""
"Дней без\n"
"активности"
#: source/ubl-strings.h:114
#: source/ubl-strings.h:115
msgid ""
"Shell\n"
"path"
@ -443,7 +443,7 @@ msgstr ""
"Путь до\n"
"оболочки"
#: source/ubl-strings.h:115
#: source/ubl-strings.h:116
msgid ""
"Password has\n"
"been changed"
@ -451,7 +451,7 @@ msgstr ""
"Пароль\n"
"изменён"
#: source/ubl-strings.h:116
#: source/ubl-strings.h:117
msgid ""
"Expiration\n"
"date"
@ -459,7 +459,7 @@ msgstr ""
"Дата\n"
"устаревания"
#: source/ubl-strings.h:117
#: source/ubl-strings.h:118
msgid ""
"Password change\n"
"interval (min)"
@ -467,7 +467,7 @@ msgstr ""
"Интервал смены\n"
"пароля (мин.)"
#: source/ubl-strings.h:118
#: source/ubl-strings.h:119
msgid ""
"Password change\n"
"interval (max)"
@ -475,187 +475,187 @@ msgstr ""
"Интервал смены\n"
"пароля (макс.)"
#: source/ubl-strings.h:121
#: source/ubl-strings.h:122
msgid "Add user"
msgstr "Добавить пользователя"
#: source/ubl-strings.h:122
#: source/ubl-strings.h:123
msgid "Configure user"
msgstr "Редактировать пользователя"
#: source/ubl-strings.h:123
#: source/ubl-strings.h:124
msgid "Set"
msgstr "Задать"
#: source/ubl-strings.h:124
#: source/ubl-strings.h:125
msgid "Empty important field"
msgstr "Пустое важное поле"
#: source/ubl-strings.h:125
#: source/ubl-strings.h:126
msgid "Loading has failed"
msgstr "Ошибка загрузки"
#: source/ubl-strings.h:126
#: source/ubl-strings.h:127
msgid "Login name"
msgstr "Имя логина"
#: source/ubl-strings.h:127
#: source/ubl-strings.h:128
msgid "Additional groups:"
msgstr "Дополнительные группы:"
#: source/ubl-strings.h:128
#: source/ubl-strings.h:129
msgid "Password configuration"
msgstr "Конфигурация пароля"
#: source/ubl-strings.h:129
#: source/ubl-strings.h:130
msgid "Password has been changed:"
msgstr "Пароль изменён:"
#: source/ubl-strings.h:130
#: source/ubl-strings.h:131
msgid "expiration date:"
msgstr "Дата устаревания:"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:132
msgid "Password change interval: minimum"
msgstr "Интервал смены пароля: минимум"
#: source/ubl-strings.h:132
#: source/ubl-strings.h:133
msgid "days, maximum"
msgstr "дней, максимум"
#: source/ubl-strings.h:133
#: source/ubl-strings.h:134
msgid "days"
msgstr "дней"
#: source/ubl-strings.h:134
#: source/ubl-strings.h:135
msgid "Days until warning:"
msgstr "Дней до предупреждения:"
#: source/ubl-strings.h:135
#: source/ubl-strings.h:136
msgid "Days without activity:"
msgstr "Дней без активности:"
#: source/ubl-strings.h:136
#: source/ubl-strings.h:137
msgid "Force change at next login"
msgstr "Принудительно сменить при следующем входе в систему"
#: source/ubl-strings.h:137
#: source/ubl-strings.h:138
msgid "User shell:"
msgstr "Оболочка пользователя:"
#: source/ubl-strings.h:138
#: source/ubl-strings.h:139
msgid "Home directory:"
msgstr "Домашний каталог:"
#: source/ubl-strings.h:139
#: source/ubl-strings.h:140
msgid "Don't set"
msgstr "Не создавать"
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "Create system user"
msgstr "Создать системного пользователя"
#: source/ubl-strings.h:141
#: source/ubl-strings.h:142
msgid "Create user with ununique (repeating) UID"
msgstr "Создать пользователя с повторяющимися (не уникальными) UID"
#: source/ubl-strings.h:142
#: source/ubl-strings.h:143
msgid "Do not check login for compliance with character rules"
msgstr "Не проверять логин на несоответствие правилам использования символов"
#: source/ubl-strings.h:143
#: source/ubl-strings.h:144
msgid "Temporary deactivation"
msgstr "Временное отключение учётной записи"
#: source/ubl-strings.h:144
#: source/ubl-strings.h:145
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:145
#: source/ubl-strings.h:146
msgid "login_name"
msgstr "Имя_логина"
#: source/ubl-strings.h:146
#: source/ubl-strings.h:147
msgid "group_name"
msgstr "Имя_группы"
#: source/ubl-strings.h:147
#: source/ubl-strings.h:148
msgid "User name"
msgstr "Имя пользователя"
#: source/ubl-strings.h:148
#: source/ubl-strings.h:149
msgid "Sync user"
msgstr "Синхронизировать пользователя"
#: source/ubl-strings.h:149
#: source/ubl-strings.h:150
msgid "Sync user with password"
msgstr "Синхронизировать пользователя с паролем"
#: source/ubl-strings.h:150
#: source/ubl-strings.h:151
msgid "Encrypt all passwords"
msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:152
#: source/ubl-strings.h:153
msgid "User configuration"
msgstr "Настройка пользователя"
#: source/ubl-strings.h:153
#: source/ubl-strings.h:154
msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:154
#: source/ubl-strings.h:155
msgid "During system startup, load the user from the configuration"
msgstr "При загрузке системы загрузить пользователя из конфигурации"
#: source/ubl-strings.h:155
#: source/ubl-strings.h:156
msgid "When shutting down the system, save the user into the configuration"
msgstr "При завершении работы системы сохранить пользователя в конфигурацию"
#: source/ubl-strings.h:156
#: source/ubl-strings.h:157
msgid "User password configuration syncronization"
msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:157
#: source/ubl-strings.h:158
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:158
#: source/ubl-strings.h:159
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:160
#: source/ubl-strings.h:161
msgid "Main"
msgstr "Основные"
#: source/ubl-strings.h:161
#: source/ubl-strings.h:162
msgid "Additional"
msgstr "Дополнительные"
#: source/ubl-strings.h:162
#: source/ubl-strings.h:163
msgid "Syncronization"
msgstr "Синхронизация"
#: source/ubl-strings.h:165
#: source/ubl-strings.h:166
msgid "Repeat password:"
msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:166
#: source/ubl-strings.h:167
msgid "Password hash:"
msgstr "Хэш пароля:"
#: source/ubl-strings.h:167
#: source/ubl-strings.h:168
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-strings.h:170
#: source/ubl-strings.h:171
msgid "Additional configuration of service parameter saving"
msgstr "Дополнительные настройки сохранения параметров сервисов"
#: source/ubl-strings.h:171
#: source/ubl-strings.h:172
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
@ -663,30 +663,33 @@ msgstr ""
"При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n"
"в (hd)/ublinux-data/rootcopy/"
#: source/ubl-strings.h:172
#: source/ubl-strings.h:173
msgid "For system save mode \"Sandbox\""
msgstr "Для режима сохранения системы \"Песочница\""
#: source/ubl-strings.h:175
#: source/ubl-strings.h:176
msgid "User deletion"
msgstr "Удаление пользователя(-лей)"
#: source/ubl-strings.h:176
#: source/ubl-strings.h:177
msgid "Confirm user(-s) deletion:"
msgstr "Подтвердите удаление пользователя (-ей):"
#: source/ubl-strings.h:177
#: source/ubl-strings.h:178
msgid "Chosen"
msgstr "Выбран"
#: source/ubl-strings.h:178
#: source/ubl-strings.h:179
msgid "User"
msgstr "Пользователь"
#: source/ubl-strings.h:179
#: source/ubl-strings.h:180
msgid "Home directory"
msgstr "Домашний каталог"
#: source/ubl-strings.h:180
#: source/ubl-strings.h:181
msgid "Delete home directory"
msgstr "Удалить домашний каталог"
#~ msgid "Endrypted password"
#~ msgstr "Зашифрованный пароль"

Loading…
Cancel
Save