master #189

Merged
asmeron merged 4 commits from YanTheKaller/ubl-settings-usergroups:master into master 11 months ago

@ -141,6 +141,7 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.profile-settings-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.save-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.lock-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.user-add-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv" "csv/hash_list.csv"
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv" "csv/shell_list.csv"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>

After

Width:  |  Height:  |  Size: 680 B

@ -1750,7 +1750,7 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
return window;
}
void yon_system_load(ubl_settings_usergroups_system_window *window){
void yon_system_load(main_window *window){
gtk_list_store_clear(window->liststore1);
gtk_list_store_clear(window->liststore2);
GtkTreeIter iter;
@ -1758,15 +1758,12 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
int parsed_size;
if (main_config.groups[i][strlen(main_config.groups[i])-1]=='\n') main_config.groups[i][strlen(main_config.groups[i])-1]='\0';
config_str parsed = yon_char_parse(main_config.groups[i],&parsed_size,":");
if (atoi(parsed[2])>=main_config.MINGID&&atoi(parsed[2])<=main_config.MAXGID||window->show_all==1){
gtk_list_store_append(window->liststore2,&iter);
gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1);
}
}
for (int i=0;i<main_config.users_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.users[i],&parsed_size,":");
if ((atoi(parsed[2])>=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){
char *groups_string="";
char *main_group_name="";
for (int j=0;j<main_config.groups_size;j++){
@ -1782,7 +1779,6 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
}
gtk_list_store_append(window->liststore1,&iter);
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);
}
int shadow_size;
@ -1808,18 +1804,18 @@ void yon_system_load(ubl_settings_usergroups_system_window *window){
}
}
void on_mode_changed(GtkWidget *self, ubl_settings_usergroups_system_window *window){
if (window->show_all==0){
window->show_all=1;
gtk_style_context_add_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
} else {
window->show_all=0;
gtk_style_context_remove_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
}
yon_system_load(window);
}
// void on_mode_changed(GtkWidget *self, main_window *window){
Review

Закомментированный блок кода. Если не нужен - удалить.

Закомментированный блок кода. Если не нужен - удалить.
// if (window->show_all==0){
// window->show_all=1;
// gtk_style_context_add_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
// } else {
// window->show_all=0;
// gtk_style_context_remove_class(gtk_widget_get_style_context(window->ToggleAllButton),"chosenOutline");
// }
// yon_system_load(window);
// }
void on_system_update(GtkWidget *self, ubl_settings_usergroups_system_window *window){
void on_system_update(GtkWidget *self, main_window *window){
main_config.groups = yon_file_open(groups_path,&main_config.groups_size);
main_config.users = yon_file_open(users_path,&main_config.users_size);
@ -1870,10 +1866,8 @@ ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){
g_list_free(list);
gtk_window_set_title(GTK_WINDOW(window->MonitorWindow),INSPECTOR_TITLE_LABEL);
g_signal_connect(G_OBJECT(window->ToggleAllButton),"clicked",G_CALLBACK(on_mode_changed),window);
// g_signal_connect(G_OBJECT(window->ToggleAllButton),"clicked",G_CALLBACK(on_mode_changed),window);
Review

Комментарий.

Комментарий.
g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_system_update),window);
yon_system_load(window);
on_system_update(NULL,window);
return window;
}
@ -1992,7 +1986,7 @@ void on_user_save(GtkWidget *self, dictionary *dict){
for (int i=0;i<final_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(final[i],&parsed_size,":");
if (parsed_size>1&&!strcmp(parsed[2],uid_string)&&strcmp(parsed[2],window->last_uid)) found = 1;
if (parsed_size>1&&!strcmp(parsed[2],uid_string)&&(!yon_char_is_empty(window->last_uid)&&strcmp(parsed[2],window->last_uid))) found = 1;
if (parsed_size) yon_char_parsed_free(parsed,parsed_size);
}
if (found){
@ -2809,6 +2803,37 @@ void on_config_update(GtkWidget *self, main_window *widgets){
} else {
on_config_local_load(NULL,widgets);
}
on_system_update(NULL,widgets);
}
void on_user_sync_with_config(GtkWidget *,main_window *widgets){
int active = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
switch (active){
case 2:
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
char *target;
gtk_tree_model_get(model,&iter,2,&target,-1);
int size;
config_str passwd_users = yon_config_load(user_shadow_path,&size);
int active_usr = yon_char_parsed_strstr(passwd_users,size,target);
int cur_size;
if (size>-1){
config_str cur_user = yon_char_parse(passwd_users[active_usr],&cur_size,":");
char *final_user = yon_char_unite(cur_user[4],":",cur_user[5],":",cur_size>1?cur_user[1]:"",":",cur_size>2?cur_user[2]:"",":",cur_user[0],":",":",NULL);
char *final_command = yon_config_parameter_prepare_command(dull_parameter_get_command,NULL,"users",USERADD_SYNC(target));
yon_config_register(USERADD(target),final_command,final_user);
int shadow_size;
config_str shadow = yon_config_load(shadow_path,&shadow_size);
}
}
break;
case 3:
break;
}
}
int *yon_element_chosen(GtkWidget *target){
@ -2917,19 +2942,29 @@ void on_selection_changed(GtkWidget *self, main_window *widgets){
void on_notebook_page_changed(GtkWidget *self, GtkWidget *page, int num, main_window *widgets){
GtkTreeIter iter;
if (num==0){
gtk_widget_show(widgets->AddButton);
gtk_widget_show(widgets->EditButton);
gtk_widget_show(widgets->DeleteButton);
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->EditButton,1);
} else {
gtk_widget_set_sensitive(widgets->EditButton,0);
}
} else {
} else if (num==1){
gtk_widget_show(widgets->AddButton);
gtk_widget_show(widgets->EditButton);
gtk_widget_show(widgets->DeleteButton);
GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->EditButton,1);
} else {
gtk_widget_set_sensitive(widgets->EditButton,0);
}
} else if (num==2||num==3){
gtk_widget_hide(widgets->AddButton);
gtk_widget_hide(widgets->EditButton);
gtk_widget_hide(widgets->DeleteButton);
}
}
@ -2965,8 +3000,12 @@ main_window *yon_main_window_complete(main_window *widgets){
widgets->CacheAlgList=GTK_LIST_STORE(gtk_builder_get_object(builder,"CacheAlgList"));
widgets->GroupsList=GTK_LIST_STORE(gtk_builder_get_object(builder,"GroupsList"));
widgets->UsersList=GTK_LIST_STORE(gtk_builder_get_object(builder,"UsersList"));
widgets->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
widgets->liststore2=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
widgets->PlugBox=yon_gtk_builder_get_widget(builder,"PlugBox");
widgets->button1=yon_gtk_builder_get_widget(builder,"button1");
widgets->UserAddToConfigButton=yon_gtk_builder_get_widget(builder,"UserAddToConfigButton");
widgets->SystemTree=yon_gtk_builder_get_widget(builder,"SystemTree");
widgets->SystemGroupsTree=yon_gtk_builder_get_widget(builder,"SystemGroupsTree");
widgets->button2=yon_gtk_builder_get_widget(builder,"button2");
widgets->button3=yon_gtk_builder_get_widget(builder,"button3");
widgets->AddButton=yon_gtk_builder_get_widget(builder,"AddButton");
@ -2988,7 +3027,7 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->DeleteButton),"clicked",G_CALLBACK(on_main_delete),widgets);
g_signal_connect(G_OBJECT(widgets->button3),"clicked",G_CALLBACK(on_standard_groups_open),widgets);
g_signal_connect(G_OBJECT(widgets->button2),"clicked",G_CALLBACK(on_ubl_settings_usergroups_additional_settings_open),widgets);
g_signal_connect(G_OBJECT(widgets->button1),"clicked",G_CALLBACK(on_settings_usergroups_system_open),widgets);
// g_signal_connect(G_OBJECT(widgets->UserAddToConfigButton),"clicked",G_CALLBACK(on_user_sync_with_config),widgets);
Review

Комментарий.

Комментарий.
g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_config_update),widgets);
g_signal_connect(G_OBJECT(widgets->SavingSettingsButton),"clicked",G_CALLBACK(on_saving_settings_open),widgets);
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
@ -3010,6 +3049,9 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UsersTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->UsersMenu);
g_signal_connect(G_OBJECT(widgets->GroupsTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->GroupsMenu);
yon_system_load(widgets);
on_system_update(NULL,widgets);
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree));

@ -52,9 +52,11 @@
#define shadow_path "/etc/shadow"
#define uid_path "/etc/login.defs"
#define password_limits_path "/etc/security/pwquiality.conf"
#define get_user_info_command(target) yon_char_unite("getent passwd \"",target,"\"",NULL)
#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"
#define user_shadow_path "/etc/shadow"
#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"
@ -168,7 +170,9 @@ typedef struct {
GtkListStore *CacheAlgList;
GtkListStore *GroupsList;
GtkListStore *UsersList;
GtkWidget *button1;
GtkWidget *UserAddToConfigButton;
GtkWidget *SystemTree;
GtkWidget *SystemGroupsTree;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *AddButton;
@ -182,6 +186,8 @@ typedef struct {
rmb_menu_window *UsersMenu;
rmb_menu_window *GroupsMenu;
GtkListStore *liststore1;
GtkListStore *liststore2;
} main_window;

@ -207,3 +207,8 @@
#define DELETE_CONFIRMATION_USER_LABEL _("User")
#define DELETE_CONFIRMATION_HOME_LABEL _("Home directory")
#define DELETE_CONFIRMATION_DELETE_HOME_LABEL _("Delete home directory")
#define CONFIG_USERS_TAB_LABEL _("Configuration users")
#define CONFIG_GROUPS_TAB_LABEL _("Configuration groups")
#define SYSTEM_USERS_TAB_LABEL _("System users")
#define SYSTEM_GROUPS_TAB_LABEL _("System groups")

@ -80,11 +80,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.profile-settings-symbolic</property>
</object>
<object class="GtkImage" id="image12">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.settings-symbolic</property>
</object>
<object class="GtkImage" id="image13">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -105,6 +100,53 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.save-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.user-add-symbolic</property>
</object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name gboolean1 -->
<column type="gboolean"/>
<!-- column-name gint1 -->
<column type="gint"/>
<!-- column-name gchararray2 -->
<column type="gchararray"/>
<!-- column-name gchararray3 -->
<column type="gchararray"/>
<!-- column-name gchararray4 -->
<column type="gchararray"/>
<!-- column-name gchararray5 -->
<column type="gchararray"/>
<!-- column-name gchararray6 -->
<column type="gchararray"/>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gchararray7 -->
<column type="gchararray"/>
<!-- column-name gchararray8 -->
<column type="gchararray"/>
<!-- column-name gchararray9 -->
<column type="gchararray"/>
<!-- column-name gchararray10 -->
<column type="gchararray"/>
<!-- column-name gchararray11 -->
<column type="gchararray"/>
<!-- column-name gchararray12 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="liststore2">
<columns>
<!-- column-name gint1 -->
<column type="gint"/>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gchararray3 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkBox" id="PlugBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -118,34 +160,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="margin-top">2</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="button1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Inspect users and groups in system</property>
<property name="image">image12</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="visible">True</property>
@ -191,6 +205,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="UserAddToConfigButton">
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Additional saving configuration</property>
<property name="image">image5</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AddButton">
<property name="visible">True</property>
@ -205,7 +235,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
<property name="position">6</property>
</packing>
</child>
<child>
@ -223,7 +253,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
<property name="position">7</property>
</packing>
</child>
<child>
@ -240,7 +270,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
<property name="position">8</property>
</packing>
</child>
<child>
@ -257,7 +287,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
<property name="position">9</property>
</packing>
</child>
<child>
@ -268,7 +298,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
<property name="position">10</property>
</packing>
</child>
<child>
@ -285,7 +315,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">10</property>
<property name="position">11</property>
</packing>
</child>
</object>
@ -477,7 +507,7 @@ status</property>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Users</property>
<property name="label" translatable="yes">Configuration users</property>
</object>
<packing>
<property name="tab-fill">False</property>
@ -605,13 +635,337 @@ status</property>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Groups</property>
<property name="label" translatable="yes">Configuration groups</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkTreeView" id="SystemTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore1</property>
<property name="search-column">0</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Locked</property>
<child>
<object class="GtkCellRendererToggle"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">UID</property>
<property name="clickable">True</property>
<property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Login</property>
<property name="clickable">True</property>
<property name="sort-column-id">2</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Username</property>
<property name="clickable">True</property>
<property name="sort-column-id">3</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Primary
group</property>
<property name="clickable">True</property>
<property name="sort-column-id">4</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Additional
groups</property>
<property name="clickable">True</property>
<property name="sort-column-id">5</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="min-width">50</property>
<property name="title" translatable="yes">Home
directory</property>
<property name="clickable">True</property>
<property name="sort-column-id">6</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">6</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Shell
path</property>
<property name="clickable">True</property>
<property name="sort-column-id">7</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">7</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Password has
been changed</property>
<property name="clickable">True</property>
<property name="sort-column-id">8</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">8</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Expiration
date</property>
<property name="clickable">True</property>
<property name="sort-column-id">9</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">9</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Password change
interval (min)</property>
<property name="clickable">True</property>
<property name="sort-column-id">10</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">10</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Password change
interval (max)</property>
<property name="clickable">True</property>
<property name="sort-column-id">11</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">11</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Days until
warning</property>
<property name="clickable">True</property>
<property name="sort-column-id">12</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">12</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Days
without activity</property>
<property name="clickable">True</property>
<property name="sort-column-id">13</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">13</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="position">2</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">System users</property>
</object>
<packing>
<property name="position">2</property>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkTreeView" id="SystemGroupsTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore2</property>
<property name="search-column">0</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">GID</property>
<property name="clickable">True</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Group</property>
<property name="clickable">True</property>
<property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="min-width">50</property>
<property name="title" translatable="yes">Group
users</property>
<property name="clickable">True</property>
<property name="sort-column-id">2</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="position">3</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">System groups</property>
</object>
<packing>
<property name="position">3</property>
<property name="tab-fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>

@ -53,7 +53,7 @@ msgstr ""
msgid "UID"
msgstr ""
#: source/ubl-strings.h:14 source/ubl-strings.h:103
#: source/ubl-strings.h:14 source/ubl-strings.h:102
msgid "Login"
msgstr ""
@ -175,7 +175,7 @@ msgstr ""
msgid "Inspect users and groups in system"
msgstr ""
#: source/ubl-strings.h:46 source/ubl-strings.h:57
#: source/ubl-strings.h:46 source/ubl-strings.h:56
msgid "Additional settings"
msgstr ""
@ -203,509 +203,521 @@ msgstr ""
msgid "Additional saving configuration"
msgstr ""
#: source/ubl-strings.h:58
#: source/ubl-strings.h:57
msgid "No password required"
msgstr ""
#: source/ubl-strings.h:59
#: source/ubl-strings.h:58
msgid "Set a password"
msgstr ""
#: source/ubl-strings.h:60 source/ubl-strings.h:106
#: source/ubl-strings.h:59 source/ubl-strings.h:105
msgid "Encrypted"
msgstr ""
#: source/ubl-strings.h:61
#: source/ubl-strings.h:60
msgid "Unencrypted"
msgstr ""
#: source/ubl-strings.h:74
#: source/ubl-strings.h:73
msgid "Accept"
msgstr ""
#: source/ubl-strings.h:75
#: source/ubl-strings.h:74
msgid ""
"Are you sure want to encrypt all passwords?\n"
"This action can't be undone."
msgstr ""
#: source/ubl-strings.h:76
#: source/ubl-strings.h:75
msgid "Encrypt all unencrypted passwords at global configuration"
msgstr ""
#: source/ubl-strings.h:77
#: source/ubl-strings.h:76
msgid "DES (Algorithm for Symmetric Encryption)"
msgstr ""
#: source/ubl-strings.h:78
#: source/ubl-strings.h:77
msgid "MD5 (128-bit hashing algorithm)"
msgstr ""
#: source/ubl-strings.h:79
#: source/ubl-strings.h:78
msgid "yescrypt (Cryptographic hash function)"
msgstr ""
#: source/ubl-strings.h:80
#: source/ubl-strings.h:79
msgid "GOST-YESCRYPT (Design according to GOST R 34.11─2012)"
msgstr ""
#: source/ubl-strings.h:81
#: source/ubl-strings.h:80
msgid "scrypt (Adaptive cryptographic key generation function)"
msgstr ""
#: source/ubl-strings.h:82
#: source/ubl-strings.h:81
msgid "Blowfish (Symmetric Block Cipher Algorithm)"
msgstr ""
#: source/ubl-strings.h:83
#: source/ubl-strings.h:82
msgid "bcrypt (Adaptive hash function from the Blowfish family of algorithms)"
msgstr ""
#: source/ubl-strings.h:84
#: source/ubl-strings.h:83
msgid ""
"bcrypt-a (Adaptive hash function from the Blowfish family of algorithms)"
msgstr ""
#: source/ubl-strings.h:85
#: source/ubl-strings.h:84
msgid "SHA512 (Hash function from the SHA-2 family of algorithms)"
msgstr ""
#: source/ubl-strings.h:86
#: source/ubl-strings.h:85
msgid "SHA256 (Hash function from the SHA-2 family of algorithms)"
msgstr ""
#: source/ubl-strings.h:87
#: source/ubl-strings.h:86
msgid "Sun MD5 (Hash algorithm from Sun Microsystems)"
msgstr ""
#: source/ubl-strings.h:88
#: source/ubl-strings.h:87
msgid "MD5 Unix (Hash algorithm calls standard MD5 thousand times)"
msgstr ""
#: source/ubl-strings.h:89
#: source/ubl-strings.h:88
msgid ""
"Extended DES Crypt (Hash function from the BSDi family of DES algorithms)"
msgstr ""
#: source/ubl-strings.h:90
#: source/ubl-strings.h:89
msgid "descrypt (Hash function from the DES family of algorithms)"
msgstr ""
#: source/ubl-strings.h:91
#: source/ubl-strings.h:90
msgid "NTHash (Hash function from the NT Windows family of algorithms)"
msgstr ""
#: source/ubl-strings.h:93
#: source/ubl-strings.h:92
msgid ""
"While booting the operating system, apply the settings of all users from the "
"configuration"
msgstr ""
#: source/ubl-strings.h:94
#: source/ubl-strings.h:93
msgid ""
"While shutdown, save the settings of all users with UID>=1000 to the "
"configuration"
msgstr ""
#: source/ubl-strings.h:97
#: source/ubl-strings.h:96
msgid "Configure group"
msgstr ""
#: source/ubl-strings.h:98
#: source/ubl-strings.h:97
msgid "Add group"
msgstr ""
#: source/ubl-strings.h:99
#: source/ubl-strings.h:98
msgid "Group id:"
msgstr ""
#: source/ubl-strings.h:100
#: source/ubl-strings.h:99
msgid "Group name:"
msgstr ""
#: source/ubl-strings.h:101
#: source/ubl-strings.h:100
msgid "Group users:"
msgstr ""
#: source/ubl-strings.h:102
#: source/ubl-strings.h:101
msgid "Automatically"
msgstr ""
#: source/ubl-strings.h:104
#: source/ubl-strings.h:103
msgid "Create group with ununique GID"
msgstr ""
#: source/ubl-strings.h:105
#: source/ubl-strings.h:104
msgid "Create system group"
msgstr ""
#: source/ubl-strings.h:107
#: source/ubl-strings.h:106
msgid "Additional configuration"
msgstr ""
#: source/ubl-strings.h:108
#: source/ubl-strings.h:107
msgid "Group configuration synchronization"
msgstr ""
#: source/ubl-strings.h:109
#: source/ubl-strings.h:108
msgid "When shutting down the system, save the group into the configuration"
msgstr ""
#: source/ubl-strings.h:110
#: source/ubl-strings.h:109
msgid "Group administrators:"
msgstr ""
#: source/ubl-strings.h:111
#: source/ubl-strings.h:110
msgid "Group name must not start with digit"
msgstr ""
#: source/ubl-strings.h:114
#: source/ubl-strings.h:113
msgid "Default groups"
msgstr ""
#: source/ubl-strings.h:115
#: source/ubl-strings.h:114
msgid "Main group"
msgstr ""
#: source/ubl-strings.h:116
#: source/ubl-strings.h:115
msgid "Additional groups"
msgstr ""
#: source/ubl-strings.h:117
#: source/ubl-strings.h:116
msgid "Choose groups"
msgstr ""
#: source/ubl-strings.h:118
#: source/ubl-strings.h:117
msgid "Choose users"
msgstr ""
#: source/ubl-strings.h:121
#: source/ubl-strings.h:120
msgid "System users and groups"
msgstr ""
#: source/ubl-strings.h:122
#: source/ubl-strings.h:121
msgid "Locked"
msgstr ""
#: source/ubl-strings.h:123
#: source/ubl-strings.h:122
msgid "Username"
msgstr ""
#: source/ubl-strings.h:124
#: source/ubl-strings.h:123
msgid ""
"Primary\n"
"group"
msgstr ""
#: source/ubl-strings.h:125
#: source/ubl-strings.h:124
msgid ""
"Home\n"
"directory"
msgstr ""
#: source/ubl-strings.h:126 source/ubl-strings.h:132
#: source/ubl-strings.h:125 source/ubl-strings.h:131
msgid "Group"
msgstr ""
#: source/ubl-strings.h:127
#: source/ubl-strings.h:126
msgid "Update the system users and groups list"
msgstr ""
#: source/ubl-strings.h:128
#: source/ubl-strings.h:127
msgid "Toggle system groups and users"
msgstr ""
#: source/ubl-strings.h:130
#: source/ubl-strings.h:129
msgid "Password mismatch"
msgstr ""
#: source/ubl-strings.h:131
#: source/ubl-strings.h:130
msgid "Password must be at least"
msgstr ""
#: source/ubl-strings.h:131
#: source/ubl-strings.h:130
msgid "characters"
msgstr ""
#: source/ubl-strings.h:133
#: source/ubl-strings.h:132
msgid ""
"Days until\n"
"warning"
msgstr ""
#: source/ubl-strings.h:134
#: source/ubl-strings.h:133
msgid ""
"Days\n"
"without activity"
msgstr ""
#: source/ubl-strings.h:135
#: source/ubl-strings.h:134
msgid ""
"Shell\n"
"path"
msgstr ""
#: source/ubl-strings.h:136
#: source/ubl-strings.h:135
msgid ""
"Password has\n"
"been changed"
msgstr ""
#: source/ubl-strings.h:137
#: source/ubl-strings.h:136
msgid ""
"Expiration\n"
"date"
msgstr ""
#: source/ubl-strings.h:138
#: source/ubl-strings.h:137
msgid ""
"Password change\n"
"interval (min)"
msgstr ""
#: source/ubl-strings.h:139
#: source/ubl-strings.h:138
msgid ""
"Password change\n"
"interval (max)"
msgstr ""
#: source/ubl-strings.h:142
#: source/ubl-strings.h:141
msgid "Add user"
msgstr ""
#: source/ubl-strings.h:143
#: source/ubl-strings.h:142
msgid "Configure user"
msgstr ""
#: source/ubl-strings.h:144
#: source/ubl-strings.h:143
msgid "Set"
msgstr ""
#: source/ubl-strings.h:145
#: source/ubl-strings.h:144
msgid "Empty important field"
msgstr ""
#: source/ubl-strings.h:146
#: source/ubl-strings.h:145
msgid "Login must not start with digit"
msgstr ""
#: source/ubl-strings.h:147
#: source/ubl-strings.h:146
msgid "Loading has failed"
msgstr ""
#: source/ubl-strings.h:148
#: source/ubl-strings.h:147
msgid "Login name"
msgstr ""
#: source/ubl-strings.h:149
#: source/ubl-strings.h:148
msgid "Additional groups:"
msgstr ""
#: source/ubl-strings.h:150
#: source/ubl-strings.h:149
msgid "Password configuration"
msgstr ""
#: source/ubl-strings.h:151
#: source/ubl-strings.h:150
msgid "Password has been changed:"
msgstr ""
#: source/ubl-strings.h:152
#: source/ubl-strings.h:151
msgid "expiration date:"
msgstr ""
#: source/ubl-strings.h:153
#: source/ubl-strings.h:152
msgid "Password change interval: minimum"
msgstr ""
#: source/ubl-strings.h:154
#: source/ubl-strings.h:153
msgid "days, maximum"
msgstr ""
#: source/ubl-strings.h:155
#: source/ubl-strings.h:154
msgid "days"
msgstr ""
#: source/ubl-strings.h:156
#: source/ubl-strings.h:155
msgid "Days until warning:"
msgstr ""
#: source/ubl-strings.h:157
#: source/ubl-strings.h:156
msgid "Days without activity:"
msgstr ""
#: source/ubl-strings.h:158
#: source/ubl-strings.h:157
msgid "Force change at next login"
msgstr ""
#: source/ubl-strings.h:159
#: source/ubl-strings.h:158
msgid "User shell:"
msgstr ""
#: source/ubl-strings.h:160
#: source/ubl-strings.h:159
msgid "Home directory:"
msgstr ""
#: source/ubl-strings.h:161
#: source/ubl-strings.h:160
msgid "Don't set"
msgstr ""
#: source/ubl-strings.h:162
#: source/ubl-strings.h:161
msgid "Create system user"
msgstr ""
#: source/ubl-strings.h:163
#: source/ubl-strings.h:162
msgid "Create user with ununique (repeating) UID"
msgstr ""
#: source/ubl-strings.h:164
#: source/ubl-strings.h:163
msgid "Do not check login for compliance with character rules"
msgstr ""
#: source/ubl-strings.h:165
#: source/ubl-strings.h:164
msgid "Temporary deactivation"
msgstr ""
#: source/ubl-strings.h:166
#: source/ubl-strings.h:165
msgid "Save"
msgstr ""
#: source/ubl-strings.h:167
#: source/ubl-strings.h:166
msgid "login_name"
msgstr ""
#: source/ubl-strings.h:168
#: source/ubl-strings.h:167
msgid "group_name"
msgstr ""
#: source/ubl-strings.h:169
#: source/ubl-strings.h:168
msgid "User name"
msgstr ""
#: source/ubl-strings.h:170
#: source/ubl-strings.h:169
msgid "Sync user"
msgstr ""
#: source/ubl-strings.h:171
#: source/ubl-strings.h:170
msgid "Sync user with password"
msgstr ""
#: source/ubl-strings.h:172
#: source/ubl-strings.h:171
msgid "Encrypt all passwords"
msgstr ""
#: source/ubl-strings.h:174
#: source/ubl-strings.h:173
msgid "User configuration"
msgstr ""
#: source/ubl-strings.h:175
#: source/ubl-strings.h:174
msgid "User configuration synchronization"
msgstr ""
#: source/ubl-strings.h:176
#: source/ubl-strings.h:175
msgid "During system startup, load the user from the configuration"
msgstr ""
#: source/ubl-strings.h:177
#: source/ubl-strings.h:176
msgid "When shutting down the system, save the user into the configuration"
msgstr ""
#: source/ubl-strings.h:178
#: source/ubl-strings.h:177
msgid "User password configuration syncronization"
msgstr ""
#: source/ubl-strings.h:179
#: source/ubl-strings.h:178
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr ""
#: source/ubl-strings.h:180
#: source/ubl-strings.h:179
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
#: source/ubl-strings.h:182
#: source/ubl-strings.h:181
msgid "Basic"
msgstr ""
#: source/ubl-strings.h:183
#: source/ubl-strings.h:182
msgid "Additional"
msgstr ""
#: source/ubl-strings.h:184
#: source/ubl-strings.h:183
msgid "Syncronization"
msgstr ""
#: source/ubl-strings.h:186
#: source/ubl-strings.h:185
msgid "Not specified"
msgstr ""
#: source/ubl-strings.h:189
#: source/ubl-strings.h:187
msgid "UID already busy"
msgstr ""
#: source/ubl-strings.h:188
msgid "GID already busy"
msgstr ""
#: source/ubl-strings.h:191
msgid "Repeat password:"
msgstr ""
#: source/ubl-strings.h:190
#: source/ubl-strings.h:192
msgid "Password hash:"
msgstr ""
#: source/ubl-strings.h:191
#: source/ubl-strings.h:193
msgid "Do not encrypt password"
msgstr ""
#: source/ubl-strings.h:194
#: source/ubl-strings.h:196
msgid "Additional configuration of service parameter saving"
msgstr ""
#: source/ubl-strings.h:195
#: source/ubl-strings.h:197
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
msgstr ""
#: source/ubl-strings.h:196
#: source/ubl-strings.h:198
msgid "For system save mode \"Sandbox\""
msgstr ""
#: source/ubl-strings.h:199
#: source/ubl-strings.h:201
msgid "Group deletion"
msgstr ""
#: source/ubl-strings.h:200
#: source/ubl-strings.h:202
msgid "Confirm group(-s) deletion:"
msgstr ""
#: source/ubl-strings.h:202
#: source/ubl-strings.h:204
msgid "User deletion"
msgstr ""
#: source/ubl-strings.h:203
#: source/ubl-strings.h:205
msgid "Confirm user(-s) deletion:"
msgstr ""
#: source/ubl-strings.h:204
#: source/ubl-strings.h:206
msgid "Chosen"
msgstr ""
#: source/ubl-strings.h:205
#: source/ubl-strings.h:207
msgid "User"
msgstr ""
#: source/ubl-strings.h:206
#: source/ubl-strings.h:208
msgid "Home directory"
msgstr ""
#: source/ubl-strings.h:207
#: source/ubl-strings.h:209
msgid "Delete home directory"
msgstr ""
msgid "Are you sure want to delete group"
#: source/ubl-strings.h:211
msgid "Configuration users"
msgstr ""
msgid "Are you sure want to delete user"
#: source/ubl-strings.h:212
msgid "Configuration groups"
msgstr ""
msgid "UID already busy"
#: source/ubl-strings.h:213
msgid "System users"
msgstr ""
msgid "GID already busy"
#: source/ubl-strings.h:214
msgid "System groups"
msgstr ""

@ -53,7 +53,7 @@ msgstr "Алгоритм хэширования пароля:"
msgid "UID"
msgstr "UID"
#: source/ubl-strings.h:14 source/ubl-strings.h:103
#: source/ubl-strings.h:14 source/ubl-strings.h:102
msgid "Login"
msgstr "Логин"
@ -189,7 +189,7 @@ msgstr "Обзор файлов"
msgid "Inspect users and groups in system"
msgstr "Просмотр пользователей и групп в системе"
#: source/ubl-strings.h:46 source/ubl-strings.h:57
#: source/ubl-strings.h:46 source/ubl-strings.h:56
msgid "Additional settings"
msgstr "Дополнительные настройки"
@ -217,27 +217,27 @@ msgstr "Обновить список пользователей и групп"
msgid "Additional saving configuration"
msgstr "Дополнительные настройки сохранения"
#: source/ubl-strings.h:58
#: source/ubl-strings.h:57
msgid "No password required"
msgstr "Пароль не требуется"
#: source/ubl-strings.h:59
#: source/ubl-strings.h:58
msgid "Set a password"
msgstr "Задать пароль"
#: source/ubl-strings.h:60 source/ubl-strings.h:106
#: source/ubl-strings.h:59 source/ubl-strings.h:105
msgid "Encrypted"
msgstr "Зашифрован"
#: source/ubl-strings.h:61
#: source/ubl-strings.h:60
msgid "Unencrypted"
msgstr "Незашифрован"
#: source/ubl-strings.h:74
#: source/ubl-strings.h:73
msgid "Accept"
msgstr "Принять"
#: source/ubl-strings.h:75
#: source/ubl-strings.h:74
msgid ""
"Are you sure want to encrypt all passwords?\n"
"This action can't be undone."
@ -245,173 +245,173 @@ msgstr ""
"Вы уверены что хотите зашифровать все пароли?\n"
"Это действие нельзя отменить."
#: source/ubl-strings.h:76
#: source/ubl-strings.h:75
msgid "Encrypt all unencrypted passwords at global configuration"
msgstr "Зашифровать все незашифрованные пароли в глобальной конфигурации"
#: source/ubl-strings.h:77
#: source/ubl-strings.h:76
msgid "DES (Algorithm for Symmetric Encryption)"
msgstr "DES (Алгоритм для симметричного шифрования)"
#: source/ubl-strings.h:78
#: source/ubl-strings.h:77
msgid "MD5 (128-bit hashing algorithm)"
msgstr "MD5 (128-битный алгоритм хеширования)"
#: source/ubl-strings.h:79
#: source/ubl-strings.h:78
msgid "yescrypt (Cryptographic hash function)"
msgstr "yescrypt (Криптографическая хэш-функция)"
#: source/ubl-strings.h:80
#: source/ubl-strings.h:79
msgid "GOST-YESCRYPT (Design according to GOST R 34.11─2012)"
msgstr "GOST-YESCRYPT (Конструкция согласно ГОСТ Р 34.11─2012)"
#: source/ubl-strings.h:81
#: source/ubl-strings.h:80
msgid "scrypt (Adaptive cryptographic key generation function)"
msgstr "scrypt (Адаптивная криптографическая функция формирования ключа)"
#: source/ubl-strings.h:82
#: source/ubl-strings.h:81
msgid "Blowfish (Symmetric Block Cipher Algorithm)"
msgstr "Blowfish (Алгоритм блочного симметричного шифрования)"
#: source/ubl-strings.h:83
#: source/ubl-strings.h:82
msgid "bcrypt (Adaptive hash function from the Blowfish family of algorithms)"
msgstr "bcrypt (Адаптивная хеш-функция из семейства алгоритмов Blowfish)"
#: source/ubl-strings.h:84
#: source/ubl-strings.h:83
msgid ""
"bcrypt-a (Adaptive hash function from the Blowfish family of algorithms)"
msgstr "bcrypt-a (Адаптивная хеш-функция из семейства алгоритмов Blowfish)"
#: source/ubl-strings.h:85
#: source/ubl-strings.h:84
msgid "SHA512 (Hash function from the SHA-2 family of algorithms)"
msgstr "SHA512 (Хеш-функция из семейства алгоритмов SHA-2)"
#: source/ubl-strings.h:86
#: source/ubl-strings.h:85
msgid "SHA256 (Hash function from the SHA-2 family of algorithms)"
msgstr "SHA256 (Хеш-функция из семейства алгоритмов SHA-2)"
#: source/ubl-strings.h:87
#: source/ubl-strings.h:86
msgid "Sun MD5 (Hash algorithm from Sun Microsystems)"
msgstr "Sun MD5 (Хеш-алгоритм от Sun Microsystems)"
#: source/ubl-strings.h:88
#: source/ubl-strings.h:87
msgid "MD5 Unix (Hash algorithm calls standard MD5 thousand times)"
msgstr "MD5 Unix (Хэш-алгоритм вызывает тысячу раз стандартный MD5)"
#: source/ubl-strings.h:89
#: source/ubl-strings.h:88
msgid ""
"Extended DES Crypt (Hash function from the BSDi family of DES algorithms)"
msgstr "Extended DES Crypt (Хеш-функция из семейства алгоритмов DES от BSDi)"
#: source/ubl-strings.h:90
#: source/ubl-strings.h:89
msgid "descrypt (Hash function from the DES family of algorithms)"
msgstr "descrypt (Хеш-функция из семейства алгоритмов DES)"
#: source/ubl-strings.h:91
#: source/ubl-strings.h:90
msgid "NTHash (Hash function from the NT Windows family of algorithms)"
msgstr "NTHash (Хеш-функция из семейства алгоритмов NT Windows)"
#: source/ubl-strings.h:93
#: source/ubl-strings.h:92
msgid ""
"While booting the operating system, apply the settings of all users from the "
"configuration"
msgstr ""
"При запуске операционной системы применять настройки всех пользователей "
"из конфигурации"
"При запуске операционной системы применять настройки всех пользователей из "
"конфигурации"
#: source/ubl-strings.h:94
#: source/ubl-strings.h:93
msgid ""
"While shutdown, save the settings of all users with UID>=1000 to the "
"configuration"
msgstr ""
"При завершении работы сохранить настройки пользователей "
"с UID>=1000 в конфигурацию"
"При завершении работы сохранить настройки пользователей с UID>=1000 в "
"конфигурацию"
#: source/ubl-strings.h:97
#: source/ubl-strings.h:96
msgid "Configure group"
msgstr "Редактировать группу"
#: source/ubl-strings.h:98
#: source/ubl-strings.h:97
msgid "Add group"
msgstr "Добавить группу"
#: source/ubl-strings.h:99
#: source/ubl-strings.h:98
msgid "Group id:"
msgstr "Идентификатор группы (GID):"
#: source/ubl-strings.h:100
#: source/ubl-strings.h:99
msgid "Group name:"
msgstr "Имя группы:"
#: source/ubl-strings.h:101
#: source/ubl-strings.h:100
msgid "Group users:"
msgstr "Пользователи группы:"
#: source/ubl-strings.h:102
#: source/ubl-strings.h:101
msgid "Automatically"
msgstr "Автоматически"
#: source/ubl-strings.h:104
#: source/ubl-strings.h:103
msgid "Create group with ununique GID"
msgstr "Создать группу с повторяющимися (не уникальными) GID"
#: source/ubl-strings.h:105
#: source/ubl-strings.h:104
msgid "Create system group"
msgstr "Создать системную группу"
#: source/ubl-strings.h:107
#: source/ubl-strings.h:106
msgid "Additional configuration"
msgstr "Дополнительные настройки"
#: source/ubl-strings.h:108
#: source/ubl-strings.h:107
msgid "Group configuration synchronization"
msgstr "Синхронизация настроек группы"
#: source/ubl-strings.h:109
#: source/ubl-strings.h:108
msgid "When shutting down the system, save the group into the configuration"
msgstr "При завершении работы системы сохранить группу в конфигурацию"
#: source/ubl-strings.h:110
#: source/ubl-strings.h:109
msgid "Group administrators:"
msgstr "Администраторы группы:"
#: source/ubl-strings.h:111
#: source/ubl-strings.h:110
msgid "Group name must not start with digit"
msgstr "Имя группы не должно начинаться с цифры"
#: source/ubl-strings.h:114
#: source/ubl-strings.h:113
msgid "Default groups"
msgstr "Группы пользователей по умолчанию"
#: source/ubl-strings.h:115
#: source/ubl-strings.h:114
msgid "Main group"
msgstr "Основная группа"
#: source/ubl-strings.h:116
#: source/ubl-strings.h:115
msgid "Additional groups"
msgstr "Дополнительные группы"
#: source/ubl-strings.h:117
#: source/ubl-strings.h:116
msgid "Choose groups"
msgstr "Выбрать группы"
#: source/ubl-strings.h:118
#: source/ubl-strings.h:117
msgid "Choose users"
msgstr "Выбрать пользователей"
#: source/ubl-strings.h:121
#: source/ubl-strings.h:120
msgid "System users and groups"
msgstr "Пользователи и группы в системе"
#: source/ubl-strings.h:122
#: source/ubl-strings.h:121
msgid "Locked"
msgstr "Отключен"
#: source/ubl-strings.h:123
#: source/ubl-strings.h:122
msgid "Username"
msgstr "Имя пользователя"
#: source/ubl-strings.h:124
#: source/ubl-strings.h:123
msgid ""
"Primary\n"
"group"
@ -419,7 +419,7 @@ msgstr ""
"Основная\n"
"группа"
#: source/ubl-strings.h:125
#: source/ubl-strings.h:124
msgid ""
"Home\n"
"directory"
@ -427,31 +427,31 @@ msgstr ""
"Домашний\n"
"каталог"
#: source/ubl-strings.h:126 source/ubl-strings.h:132
#: source/ubl-strings.h:125 source/ubl-strings.h:131
msgid "Group"
msgstr "Группа"
#: source/ubl-strings.h:127
#: source/ubl-strings.h:126
msgid "Update the system users and groups list"
msgstr "Обновить список пользователей и групп системы"
#: source/ubl-strings.h:128
#: source/ubl-strings.h:127
msgid "Toggle system groups and users"
msgstr "Переключить видимость системных пользователей и групп"
#: source/ubl-strings.h:130
#: source/ubl-strings.h:129
msgid "Password mismatch"
msgstr "Несовпадение паролей"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:130
msgid "Password must be at least"
msgstr "Пароль должен состоять из как минимум"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:130
msgid "characters"
msgstr "символов"
#: source/ubl-strings.h:133
#: source/ubl-strings.h:132
msgid ""
"Days until\n"
"warning"
@ -459,7 +459,7 @@ msgstr ""
"Дней до\n"
"предупреждения"
#: source/ubl-strings.h:134
#: source/ubl-strings.h:133
msgid ""
"Days\n"
"without activity"
@ -467,7 +467,7 @@ msgstr ""
"Дней без\n"
"активности"
#: source/ubl-strings.h:135
#: source/ubl-strings.h:134
msgid ""
"Shell\n"
"path"
@ -475,7 +475,7 @@ msgstr ""
"Путь до\n"
"оболочки"
#: source/ubl-strings.h:136
#: source/ubl-strings.h:135
msgid ""
"Password has\n"
"been changed"
@ -483,7 +483,7 @@ msgstr ""
"Пароль\n"
"изменён"
#: source/ubl-strings.h:137
#: source/ubl-strings.h:136
msgid ""
"Expiration\n"
"date"
@ -491,7 +491,7 @@ msgstr ""
"Дата\n"
"устаревания"
#: source/ubl-strings.h:138
#: source/ubl-strings.h:137
msgid ""
"Password change\n"
"interval (min)"
@ -499,7 +499,7 @@ msgstr ""
"Интервал смены\n"
"пароля (мин.)"
#: source/ubl-strings.h:139
#: source/ubl-strings.h:138
msgid ""
"Password change\n"
"interval (max)"
@ -507,199 +507,207 @@ msgstr ""
"Интервал смены\n"
"пароля (макс.)"
#: source/ubl-strings.h:142
#: source/ubl-strings.h:141
msgid "Add user"
msgstr "Добавить пользователя"
#: source/ubl-strings.h:143
#: source/ubl-strings.h:142
msgid "Configure user"
msgstr "Редактировать пользователя"
#: source/ubl-strings.h:144
#: source/ubl-strings.h:143
msgid "Set"
msgstr "Задать"
#: source/ubl-strings.h:145
#: source/ubl-strings.h:144
msgid "Empty important field"
msgstr "Пустое важное поле"
#: source/ubl-strings.h:146
#: source/ubl-strings.h:145
msgid "Login must not start with digit"
msgstr "Логин не должен начинаться с цифры"
#: source/ubl-strings.h:147
#: source/ubl-strings.h:146
msgid "Loading has failed"
msgstr "Ошибка загрузки"
#: source/ubl-strings.h:148
#: source/ubl-strings.h:147
msgid "Login name"
msgstr "Имя логина"
#: source/ubl-strings.h:149
#: source/ubl-strings.h:148
msgid "Additional groups:"
msgstr "Дополнительные группы:"
#: source/ubl-strings.h:150
#: source/ubl-strings.h:149
msgid "Password configuration"
msgstr "Конфигурация пароля"
#: source/ubl-strings.h:151
#: source/ubl-strings.h:150
msgid "Password has been changed:"
msgstr "Пароль изменён:"
#: source/ubl-strings.h:152
#: source/ubl-strings.h:151
msgid "expiration date:"
msgstr "Дата устаревания:"
#: source/ubl-strings.h:153
#: source/ubl-strings.h:152
msgid "Password change interval: minimum"
msgstr "Интервал смены пароля: минимум"
#: source/ubl-strings.h:154
#: source/ubl-strings.h:153
msgid "days, maximum"
msgstr "дней, максимум"
#: source/ubl-strings.h:155
#: source/ubl-strings.h:154
msgid "days"
msgstr "дней"
#: source/ubl-strings.h:156
#: source/ubl-strings.h:155
msgid "Days until warning:"
msgstr "Дней до предупреждения:"
#: source/ubl-strings.h:157
#: source/ubl-strings.h:156
msgid "Days without activity:"
msgstr "Дней без активности:"
#: source/ubl-strings.h:158
#: source/ubl-strings.h:157
msgid "Force change at next login"
msgstr "Принудительно сменить при следующем входе в систему"
#: source/ubl-strings.h:159
#: source/ubl-strings.h:158
msgid "User shell:"
msgstr "Оболочка пользователя:"
#: source/ubl-strings.h:160
#: source/ubl-strings.h:159
msgid "Home directory:"
msgstr "Домашний каталог:"
#: source/ubl-strings.h:161
#: source/ubl-strings.h:160
msgid "Don't set"
msgstr "Не создавать"
#: source/ubl-strings.h:162
#: source/ubl-strings.h:161
msgid "Create system user"
msgstr "Создать системного пользователя"
#: source/ubl-strings.h:163
#: source/ubl-strings.h:162
msgid "Create user with ununique (repeating) UID"
msgstr "Создать пользователя с повторяющимися (не уникальными) UID"
#: source/ubl-strings.h:164
#: source/ubl-strings.h:163
msgid "Do not check login for compliance with character rules"
msgstr "Не проверять логин на несоответствие правилам использования символов"
#: source/ubl-strings.h:165
#: source/ubl-strings.h:164
msgid "Temporary deactivation"
msgstr "Временное отключение учётной записи"
#: source/ubl-strings.h:166
#: source/ubl-strings.h:165
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:167
#: source/ubl-strings.h:166
msgid "login_name"
msgstr "Имя_логина"
#: source/ubl-strings.h:168
#: source/ubl-strings.h:167
msgid "group_name"
msgstr "Имя_группы"
#: source/ubl-strings.h:169
#: source/ubl-strings.h:168
msgid "User name"
msgstr "Имя пользователя"
#: source/ubl-strings.h:170
#: source/ubl-strings.h:169
msgid "Sync user"
msgstr "Синхронизировать пользователя"
#: source/ubl-strings.h:171
#: source/ubl-strings.h:170
msgid "Sync user with password"
msgstr "Синхронизировать пользователя с паролем"
#: source/ubl-strings.h:172
#: source/ubl-strings.h:171
msgid "Encrypt all passwords"
msgstr "Зашифровать все пароли"
#: source/ubl-strings.h:174
#: source/ubl-strings.h:173
msgid "User configuration"
msgstr "Настройка пользователя"
#: source/ubl-strings.h:175
#: source/ubl-strings.h:174
msgid "User configuration synchronization"
msgstr "Синхронизация настроек пользователя"
#: source/ubl-strings.h:176
#: source/ubl-strings.h:175
msgid "During system startup, load the user from the configuration"
msgstr ""
"При запуске операционной системы применять настройки пользователя из "
"конфигурации"
#: source/ubl-strings.h:177
#: source/ubl-strings.h:176
msgid "When shutting down the system, save the user into the configuration"
msgstr ""
"При завершении работы операционной системы сохранить настройки пользователя "
"в конфигурацию"
#: source/ubl-strings.h:178
#: source/ubl-strings.h:177
msgid "User password configuration syncronization"
msgstr "Синхронизация настроек пароля пользователя"
#: source/ubl-strings.h:179
#: source/ubl-strings.h:178
msgid ""
"During system startup, load the user's parameters from the configuration"
msgstr "При загрузке системы загрузить параметры пользователя из конфигурации"
#: source/ubl-strings.h:180
#: source/ubl-strings.h:179
msgid ""
"When shutting down the system, save the user's parameters into the "
"configuration"
msgstr ""
"При завершении работы системы сохранить параметры пользователя в конфигурацию"
#: source/ubl-strings.h:182
#: source/ubl-strings.h:181
msgid "Basic"
msgstr "Основные"
#: source/ubl-strings.h:183
#: source/ubl-strings.h:182
msgid "Additional"
msgstr "Дополнительные"
#: source/ubl-strings.h:184
#: source/ubl-strings.h:183
msgid "Syncronization"
msgstr "Синхронизация"
#: source/ubl-strings.h:186
#: source/ubl-strings.h:185
msgid "Not specified"
msgstr "Не задан"
#: source/ubl-strings.h:189
#: source/ubl-strings.h:187
msgid "UID already busy"
msgstr "UID уже существует"
#: source/ubl-strings.h:188
msgid "GID already busy"
msgstr "GID уже существует"
#: source/ubl-strings.h:191
msgid "Repeat password:"
msgstr "Подтверждение пароля:"
#: source/ubl-strings.h:190
#: source/ubl-strings.h:192
msgid "Password hash:"
msgstr "Хэш пароля:"
#: source/ubl-strings.h:191
#: source/ubl-strings.h:193
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-strings.h:194
#: source/ubl-strings.h:196
msgid "Additional configuration of service parameter saving"
msgstr "Дополнительные настройки сохранения параметров сервисов"
#: source/ubl-strings.h:195
#: source/ubl-strings.h:197
msgid ""
"At every system shutdown save changes of (root)/var/lib/samba\n"
"into (hd)/ublinux-data/rootcopy"
@ -707,45 +715,54 @@ msgstr ""
"При каждом завершении работы ОС сохранять изменения (root)/var/lib/samba\n"
"в (hd)/ublinux-data/rootcopy/"
#: source/ubl-strings.h:196
#: source/ubl-strings.h:198
msgid "For system save mode \"Sandbox\""
msgstr "Для режима сохранения системы \"Песочница\""
#: source/ubl-strings.h:199
#: source/ubl-strings.h:201
msgid "Group deletion"
msgstr "Удаление групп(-ы)"
#: source/ubl-strings.h:200
#: source/ubl-strings.h:202
msgid "Confirm group(-s) deletion:"
msgstr "Подтвердите удаление групп(-ы):"
#: source/ubl-strings.h:202
#: source/ubl-strings.h:204
msgid "User deletion"
msgstr "Удаление пользователя(-ей)"
#: source/ubl-strings.h:203
#: source/ubl-strings.h:205
msgid "Confirm user(-s) deletion:"
msgstr "Подтвердите удаление пользователя (-ей):"
#: source/ubl-strings.h:204
#: source/ubl-strings.h:206
msgid "Chosen"
msgstr "Выбран"
#: source/ubl-strings.h:205
#: source/ubl-strings.h:207
msgid "User"
msgstr "Пользователь"
#: source/ubl-strings.h:206
#: source/ubl-strings.h:208
msgid "Home directory"
msgstr "Домашний каталог"
#: source/ubl-strings.h:207
#: source/ubl-strings.h:209
msgid "Delete home directory"
msgstr "Удалить домашний каталог"
#: source/ubl-strings.h:211
msgid "Configuration users"
msgstr "Пользователи конфигурации"
msgid "UID already busy"
msgstr "UID уже существует"
#: source/ubl-strings.h:212
msgid "Configuration groups"
msgstr "Группы конфигурации"
msgid "GID already busy"
msgstr "GID уже существует"
#: source/ubl-strings.h:213
msgid "System users"
msgstr "Пользователи системы"
#: source/ubl-strings.h:214
msgid "System groups"
msgstr "Группы системы"

Loading…
Cancel
Save