Сценарии пользователя без привилегий и администратора без привилегии root#
Аутентификация и авторизация#
Авторизация при помощи логина и пароля#
Профиль пользователя – это набор файлов, который описывает, как будет выглядеть результирующая конфигурация подключаемых модулей аутентификации (PAM) и служб сетевой безопасности (NSS).
Если хеш совпадает - PAM-модулю по netlink от модуля ядра должно возвращаться имя пользователя, которому соответствует хеш в БД пользователей. Данного пользователя PAM-модуль пропускает и запускает его shell;
Чтобы войти в SberLinux:
После перехода к консоли на экране монитора появится приглашение командной строки. Для входа в систему следует ввести имя учетной записи пользователя и пароль.
В окне ввода логина и пароля, введите логин и пароль (окно логина и пароля представлено на рисунке), полученный от администратора.

Рисунок. Окно ввода логина и пароля
На экране монитора появится приглашение командной строки.
Использование команды su#
Команда su позволяет пользователям открывать окно терминала и с этого терминала запускать новый экземпляр оболочки, с другими идентификаторами пользователя и группы. Например, для выполнения административных задач можно войти в систему с учетной записью обычного пользователя и набрать su, чтобы открыть root-оболочку.
Если команда su набрана без дополнительных аргументов, осуществляется вход от имени root-пользователя.
При использовании su под учетной записью обычного пользователя будет предложено ввести пароль, и после ввода будут получены учетные данные целевого пользователя:
[user@localhost ~]$ su
Password:
[root@localhost user]#
Команду su можно использовать для запуска задач от имени другого пользователя. Например, введите su user, где user - имя целевого пользователя, чтобы открыть новый экземпляр оболочки от имени пользователя user.
При использовании su user выполняется запуск задач от имени пользователя user, без изменения среды. То есть параметры среды для учетной записи user не будут установлены. Если необходим полный доступ ко всей среде целевого пользователя, то используется команда su - user, запускающая оболочку входа в систему. При этом все сценарии, составляющие пользовательскую среду (а также системные переменные и домашняя директория), будут обработаны, и запуск задач будет осуществляться, точно так же, как при входе в систему от имени целевого пользователя.
Аргумент - вызывает переключение контекста выполнения оболочки на контекст целевого пользователя.
Использование команды sudo#
Вместо использования учетной записи root-пользователя, непривилегированные пользователи могут быть настроены на использование разрешений администратора для определенных задач с помощью sudo. Когда sudo настроен, обычные пользователи имеют привилегии sudo, и для использования этих привилегий они запускают команду с помощью sudo. Таким образом, вместо использования таких команд, как useradd в качестве root-пользователя, используется обычная учетная запись пользователя и команда sudo useradd. Это более безопасно, потому что запуск команды осуществляется с правами администратора для одной конкретной команды.
Пример переключения учетных записей пользователей
Войдите в систему под обычным пользователем;
Введите whoami, чтобы увидеть, какая учетная запись используется в данный момент. Также введите id и обратите внимание, что получено больше информации о текущих учетных данных при использовании id;
Наберите su. При запросе пароля введите пароль root. Введите id еще раз, чтобы получить права root;
Введите visudo и убедитесь, что строка %wheel ALL=(ALL) ALL включена;
Введите useradd -G wheel user, чтобы создать пользователя user, который является членом группы wheel;
Введите id user, чтобы убедиться, что он добавлен в группу wheel;
Установите пароль для User, введя passwd user. Введите пароль дважды;
Выйдите из системы и войдите в систему как user;
Наберите sudo useradd user1. Введите пароль при запросе. Будет создан еще один пользователь.
Клиент SSH#
Клиентом является команда ssh. Синтаксис командной строки представлен ниже:
ssh [-afgknqstvxACNTX1246] [-b bind_address] [-c cipher_spec] [-e escape_char]
[-i identity_file] [-login_name] [-m mac_spec] [-o option] [-p port]
[-F configfile] [-L port:host:hostport] [-R port:host:hostport]
[-D port] hostname | user@hostname [command]
Подробно со значениями флагов можно ознакомиться в руководстве man (справочные страницы). В простом варианте инициировать соединение с сервером sshd можно командой:
ssh <имя_клиента>@XX.X.X.XXX
где XX.X.X.XXX — IP-адрес компьютера с запущенной службой sshd.
Если используется парольная аутентификация, на сервере должна существовать учетная запись с таким именем. Команда ssh берет свои конфигурационные установки сначала из командной строки, затем из пользовательского файла $HOME/.ssh/config и из общесистемного файла /etc/ssh/ssh_config. Если идентичные параметры заданы по-разному, выбирается самое первое значение. Клиентские конфигурационные файлы бывают глобальными, на уровне системы (/etc/ssh/ssh_config), и локальными, на уровне отдельного пользователя ($HOME/.ssh/config). Следовательно, пользователь может полностью контролировать конфигурацию клиентской части SSH.
Конфигурационные файлы разбиты на разделы, установки которых относятся к отдельной машине, группе или ко всем машинам. Установки разных разделов могут перекрывать друг друга. При наличии нескольких параметров, конфликтующих друг с другом, предпочтение отдается тому, который указан раньше. Порядок анализа значений таков: сначала аргументы командной строки, потом конфигурационный файл пользователя, и, наконец, системный конфигурационный файл. В каждом из случаев берется первое обнаруженное значение параметра. Другими словами, если параметр встречается в нескольких разделах файла, выбирается самый первый вариант.
Дополнительные источники:
Описание интерпретатора приведено в справочных страницах man ssh.
Создание пары ключей SSH#
Используйте эту процедуру для создания пары ключей SSH в локальной системе и копирования сгенерированного открытого ключа на сервер OpenSSH. Если сервер настроен соответствующим образом, можно войти на сервер OpenSSH без указания какого-либо пароля.
Выполните следующие действия от имени root, так как только root сможет использовать ключи.
Процедура:
Чтобы сгенерировать пару ключей ECDSA для версии 2 протокола SSH, введите:
$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/joesec/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/joesec/.ssh/id_ecdsa.
Your public key has been saved in /home/joesec/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:Q/x+qms4j7PCQ0qFd09iZEFHA+SqwBKRNaU72oZfaCI joesec@localhost.example.ru
The key's randomart image is:
+---[ECDSA 256]---+
|.oo..o=++ |
|.. o .oo . |
|. .. o. o |
|....o.+... |
|o.oo.o +S . |
|.=.+. .o |
|E.*+. . . . |
|.=..+ +.. o |
| . oo*+o. |
+----[SHA256]-----+
Также можно сгенерировать пару ключей RSA, используя опцию -t rsa с командой ssh-keygen, или пару ключей Ed25519, введя команду ssh-keygen -t ed25519.
Скопируйте открытый ключ на удаленную машину:
$ ssh-copy-id joesec@ssh-server-example.ru
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
joesec@ssh-server-example.ru's password:
..
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'joesec@ssh-server-example.ru'" and check to make sure that only the key(s) you wanted were added.
Теперь войдите в систему с помощью: ssh joesec@ssh-server-example.ru и проверьте, что были добавлены только те ключи, которые необходимы.
Если не используете программу ssh-agent в своем сеансе, предыдущая команда копирует самый последний измененный открытый ключ ~/.ssh/id*.pub, если он еще не установлен. Чтобы указать другой файл с открытым ключом или установить приоритет ключей в файлах над ключами, кешированными в памяти ssh-агентом, используйте команду ssh-copy-id с опцией -i.
Если при переустановке системы нужно сохранить ранее сгенерированные пары ключей, создайте резервную копию каталога ~/.ssh/. После переустановки скопируйте его обратно в свой домашний каталог. Можно сделать это для всех пользователей системы, включая пользователя root.
Проверка:
Войдите на сервер OpenSSH без указания какого-либо пароля:
$ ssh joesec@ssh-server-example.ru
Welcome message.
...
Last login: Mon Nov 18 18:28:42 2019 from ::1
Аутентификация по файлам /etc/shadow#
Следующие поля определены в /etc/shadow (ниже на рисунке):
Имя для входа: обратите внимание, что /etc/shadow не содержит никаких UID, а только имена пользователей. Это открывает возможность для нескольких пользователей использовать один и тот же UID, но разные пароли (что, кстати, не очень рекомендуется);
Зашифрованный пароль: в этом поле содержится все, что необходимо для безопасного хранения пароля;
Дни с 1 января 1970 года, когда пароль последний раз изменялся: многие вещи в Linux относятся к этой дате, которая в Linux считается началом дней. Это также упоминается как эпоха;
За несколько дней до того, как пароль может быть изменен: это позволяет системным администраторам использовать более строгую политику паролей, когда невозможно сразу вернуться к исходному паролю, если пароль был изменен. Обычно это поле имеет значение 0;
Дни, после которых пароль должен быть изменен: в этом поле указан максимальный срок действия паролей. Обратите внимание, что по умолчанию он установлен на 99 999 (около 273 лет);
За несколько дней до истечения срока действия пароля пользователь получает предупреждение: это поле используется для предупреждения пользователя о предстоящей смене пароля. Обратите внимание, что по умолчанию установлено значение 7 (даже если срок действия пароля установлен на 99 999 дней!);
Через несколько дней после истечения срока действия пароля эта учетная запись отключена: используйте это поле для принудительного изменения пароля. После истечения срока действия пароля пользователи больше не могут входить в систему;
Дни с 1 января 1970 года эта учетная запись отключена: администратор может установить это поле, чтобы отключить учетную запись. Обычно это лучший подход, чем удаление учетной записи, поскольку все связанные свойства и файлы этой учетной записи будут сохранены, но больше не могут использоваться для аутентификации на сервере;
Зарезервированное поле, которое когда-то было добавлено «для будущего использования»: это было давно; это поле, вероятно, никогда не будет использовано.
Большинством свойств пароля можно управлять с помощью команды passwd или chage, которые обсуждаются далее.

Рисунок. Поля /etc/shadow
Смена пароля и завершение сессии#
Смена пароля из командной строки#
Существует возможность использовать две команды для изменения свойств пароля для пользователей: chage и passwd. Например, команда passwd -n 30 -w 3 -x 90 user устанавливает для пароля пользователя user минимальный период использования 30 дней и срок его действия через 90 дней, когда за 3 дня до истечения срока действия генерируется предупреждение.
Многие из задач, которые можно выполнить с помощью passwd, можно выполнить и с помощью chage. Например, используйте chage -E 2022-12-31 user1, чтобы срок действия учетной записи пользователя user1 истек 31 декабря 2022 г.
Чтобы увидеть текущие настройки управления паролями, используйте chage –l.
Чтобы изменить пароль:
Введите passwd в командной строке и нажмите клавишу Enter. Команда passwd предложит ввести старый пароль.
Введите старый пароль.
Примечание: Для защиты символы пароля не будут отображаться на экране во время ввода.
Введите новый пароль и нажмите клавишу Enter.
Еще раз введите новый пароль для подтверждения и снова нажмите клавишу Enter.
Завершение пользовательской сессии#
С помощью команды shutdown можно отключить пользовательскую сессию из командной строки.
Впишите команду shutdown.
$ shutdown
Команда немедленно отключает компьютер.
Впишите команду $ shutdown c указанием временных рамок отключения выбранной опции:
$ shutdown [options] [time] [message]
Например, $ shutdown -h now
Параметр options задает параметры отключения. Параметр time можно задавать в виде чч:мм (hh:mm) в 24 часовом формате. Также можно использовать минуты, указывающие через сколько минут от текущего момента нужно выключить компьютер. Также доступна константа now, указывающая, что выключать нужно прямо сейчас. Параметр message позволяет задать сообщение, которое будет выведено в терминал перед выключением.
Впишите команду poweroff для выхода из SberLinux:
$ poweroff
Впишите команду reboot для перезагрузки системы.
$ reboot
Впишите команду exit для завершения сеанса текущего пользователя.
$ exit
Для остановки всех сессий пользователя можно воспользоваться командной pkill. pkill - это утилита командной строки, которая отправляет сигналы процессам запущенной программы на основе заданных критериев. Процессы могут быть указаны их полными или частичными именами, пользователем, запускающим процесс, или другими атрибутами.
Выполните в терминале команду, например:
sudo pkill -9 -u username
Пользователь под номером 9 закончит все свои процессы.
Работа с Shell#
Говоря о командной строке, на самом деле мы имеем в виду командную оболочку (shell). Командная оболочка — это программа, которая принимает команды, введенные с клавиатуры, и передает их операционной системе для выполнения. Практически все дистрибутивы Linux поставляются с командной оболочкой из проекта GNU, которая называется bash. Имя bash — это аббревиатура от названия Bourne Again Shell, отражающего тот факт, что bash является улучшенной заменой sh, первоначальной командной оболочки для Unix.
Если последний символ в приглашении — знак решетки (#), а не знак доллара, это означает, что сеанс в терминале обладает привилегиями суперпользователя.
Выполните следующие команды:
hostname — выводит имя машины (сервера), на которой сейчас находитесь;
whoami — выводит логин (имя в системе);
tree -d / |less — псевдографическое изображение дерева каталогов на машине; выход из пролистывания — q;
pwd — выводит каталог, в котором сейчас находитесь; в командной строке пользователь не может быть «просто так», он находится в каком-либо каталоге (текущем и рабочем каталоге). Вероятно, текущий и рабочий каталог выводятся в приглашении (prompt).
ls — список файлов в текущем каталоге; ls /home — список файлов в указанном каталоге;
Получение информации о своем пользователе и своей группе#
Вся информация о пользователях хранится в файле /etc/passwd.
Каждый аккаунт занимает одну строку, в формате account:password:UID:GID:GECOS:directory:shell
Где:
account — имя пользователя.
password — зашифрованный пароль пользователя.
UID — идентификационный номер пользователя.
GID — идентификационный номер основной группы пользователя.
GECOS — необязательное поле, используемое для указания дополнительной информации о пользователе (например, полное имя пользователя).
directory — домашний каталог ($HOME) пользователя.
shell — командный интерпретатор пользователя (обычно /bin/sh).
Получение информации о пользователях#
w – вывод информации (имя пользователя, рабочий терминал, время входа в систему, информацию о потребленных ресурсах CPU и имя запущенной программы) о всех вошедших в систему пользователях.
who – вывод информации (имя пользователя, рабочий терминал, время входа в систему) о всех вошедших в систему пользователях.
who am i или whoami или id – вывод имени пользователя.
users – вывод имен пользователей, работающих в системе.
id <имя_пользователя> – вывод об идентификаторах пользователя: его uid, имя_пользователя, gid и имя первичной группы и список групп в которых состоит пользователь.
groups <имя_пользователя> – вывод списка групп в которых состоит пользователь.
Добавление пользователя#
Для добавления пользователя введите команду useradd.
sudo useradd <name>
Где <name> - это имя пользователя.
Ключи:
-bБазовый каталог. Это каталог, в котором будет создана домашняя папка пользователя. По умолчанию /home.-сКомментарий. В нем можно напечатать любой текст.-dНазвание домашнего каталога. По умолчанию название совпадает с именем создаваемого пользователя.-eДата, после которой пользователь будет отключен. Задается в формате YYYY-MM-DD. По умолчанию отключено.-fКоличество дней, которые должны пройти после устаревания пароля до блокировки пользователя, если пароль не будет изменен (период неактивности). Если значение равно 0, то запись блокируется сразу после устаревания пароля, при -1 - не блокируется. По умолчанию -1.-gПервичная группа пользователя. Можно указывать как GID, так и имя группы. Если параметр не задан будет создана новая группа название которой совпадает с именем пользователя.-GСписок вторичных групп в которых находится создаваемый пользователь-kКаталог шаблонов. Файлы и папки из этого каталога будут помещены в домашнюю папку пользователя. По умолчанию /etc/skel.-mКлюч, указывающий, что необходимо создать домашнюю папку. По умолчанию домашняя папка не создается.-pЗашифрованный пароль пользователя. По умолчанию пароль не задается, но учетная пользователь будет заблокирован до установки пароля.-sОболочка, используемая пользователем. По умолчанию /bin/sh.-uВручную задать UID пользователю.
Если при создании пользователя не указываются дополнительные ключи, то берутся настройки по умолчанию. Посмотреть настройки по умолчанию можно с помощью команды useradd -D. Если пользователя не устраивают настройки, можно поменять их выполнив sudo useradd -D -s /bin/bash, где -s это ключ из таблицы выше.
Изменение пользователя#
Изменение параметров пользователя происходит с помощью утилиты usermod. Используйте команду:
sudo usermod -c
Эта команда поменяет комментарий пользователю на <name>.
Измените пароль пользователя при помощи утилиты passwd.
sudo passwd <namename>
Где <namename> - измененное имя пользователя.
Утилита passwd может использоваться и обычным пользователем для смены пароля.
Основные ключи passwd:
-d Удалить пароль пользователю. После этого пароль будет пустым, и пользователь сможет входить в систему без предъявления пароля.
-e Сделать пароль устаревшим. Это заставит пользователя изменить пароль при следующем входе в систему.
-i Заблокировать учетную запись пользователя по прошествии указанного количества дней после устаревания пароля.
-n Минимальное количество дней между сменами пароля.
-x Максимальное количество дней, после которого необходимо обязательно сменить пароль.
-l Заблокировать учетную запись пользователя.
-u Разблокировать учетную запись пользователя.
Удаление пользователя#
Чтобы удалить пользователя, воспользуйтесь утилитой userdel.
sudo userdel <name>
Пользователь <name> будет удален.
Пример использования:
-f Принудительно удалить пользователя, даже если он сейчас работает в системе.
-r Удалить домашний каталог пользователя.
Управление группами#
Создание группы
Чтобы добавить пользователя, воспользуйтесь командой groupadd.
sudo groupadd testgroup
Основные ключи:
-g Установить собственный GID.
-p Пароль группы.
-r Создать системную группу.
Изменение группы
Смените название группы, ее GID или пароль помощи команды groupmod.
sudo groupmod -n newtestgroup testgroup # Имя группы изменено с testgroup на newtestgroup
Ключи groupmod:
-g Установить другой GID.
-n Новое имя группы.
-p Изменить пароль группы.
Удаление группы
Утилита groupdel не имеет никаких дополнительных параметров.
Удалите группу командой:
sudo groupdel <group>
Где <group> – название группы.
Управление пользователями группы
Для управления пользователями группы используется утилита gpasswd.
Чтобы ввести пользователя в группу введите:
gpasswd -a <user> <group>
Где <user> – имя пользователя, <group> – название группы, куда нужно ввести этого пользователя.
Чтобы вывести пользователей из группы:
gpasswd -d [user] [group]
Где <user> – имя пользователя, <group> – название группы, откуда нужно вывести этого пользователя.
Файлы конфигурации#
/etc/passwd
В файле /etc/passwd хранится вся информация о пользователях кроме пароля. Одна строка из этого файла соответствует описанию одного пользователя.
Примерное содержание строки таково:
namename:x:1000:1000:Name Name:/home/nname:/bin/bash
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля:
namename - Имя пользователя для входа в систему.
x - Необязательный зашифрованный пароль.
1000 - Числовой идентификатор пользователя (UID).
1000 - Числовой идентификатор группы (GID).
Name Name - Поле комментария
/home/nname - Домашний каталог пользователя.
/bin/bash - Оболочка пользователя.
Второе и последнее поля необязательные и могут не иметь значения.
/etc/group#
В файле /etc/groupхранится информация о группах. Она записана в аналогичном /etc/passwd виде:
namenamegroup:x:1000:namename,second name
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля:
namenamegroup - Название группы
x - Необязательный зашифрованный пароль.
1000 - Числовой идентификатор группы (GID).
namename,second name - Список пользователей, находящихся в группе.
В этом файле второе и четвертое поля могут быть пустыми.
/etc/shadow
Файл /etc/shadow хранит в себе пароли, по этому права, установленные на этот файл, не дают считать его простому пользователю. Пример одной из записей из этого файла:
namename:xxx:15803:0:99999:7:::
Значение каждого поля:
namename - Имя пользователя для входа в систему.
xxx - Необязательный зашифрованный пароль.
15803 - Дата последней смены пароля.
0 - Минимальный срок действия пароля.
99999 - Максимальный срок действия пароля.
7 - Период предупреждения о пароле.
[пусто] - Период неактивности пароля.
[пусто] - Дата истечения срока действия учетной записи.
История команд (history)#
Важное свойство полноценной командной строки — история команд.
Выполните несколько команд: hostname, ls, pwd, whoami и нажмите клавишу вверх. В строке ввода появится предыдущая команда.
Клавишами вверх и вниз перемещайтесь вперед и назад по истории команд.
Команды из истории редактировать. Отмотайте историю до команды ls, добавьте к ней ключ -l (получилось ls -l <перед минусом пробел есть, а после — нет>).
Нажмите клавишу Enter — выполнится модифицированная команда.
Ключи и опции#
У команды ls есть два варианта. Если вызвать ее, она выводит простой список:
[22:26]user@latitude-e7240:
~/shell-survival-quide> ls
Makefile shell-first-steps.md shell-first-steps.pdf
shell-survival-quide.md shell-survival-quide.pdf
Если же добавить ключ -l, к каждому файлу выводится подробная информация:
[22:28]user@latitude-e7240:
~/shell-survival-quide> ls -l
total 332
-rw-rw-r-- 1 user user 198 Feb 13 11:48 Makefile
-rw-rw-r-- 1 user user 15107 Feb 14 22:26 shell-first-steps.md
-rw-rw-r-- 1 user user 146226 Feb 13 11:49 shell-first-steps.pdf
-rw-rw-r-- 1 user user 16626 Feb 13 11:45 shell-survival-quide.md
-rw-rw-r-- 1 user user 146203 Feb 13 11:35 shell-survival-quide.pdf
Примечание: если к вызову команды добавлять специальные модификаторы (ключи, опции, параметры), поведение команды меняется. Кроме того, команды могут принимать в качестве параметров имена файлов, каталогов или просто текстовые строки.
Введите:
ls -ld /home
ls -l /home
grep root /etc/passwd
man#
man — справка по командам и программам, доступным на машине, а также по системным вызовам и стандартной библиотеке C.
Введите в командную строку команду на выбор из следующего списка:
man grep;
man atoi;
man chdir;
man man.
Пролистайте вперед или назад при помощи клавиш вверх, вниз/ PageUp, PageDown/ ( ↑ ), (↓ ).
При необходимости нажмите клавишу qдля выхода.
Для поиска определенного текста в справочной статье нажмите / (слеш), введите текст для поиска и нажмите Enter. Перемещение к следующим вхождениям — клавиша n.
Все справочные статьи делятся на категории. Самые важные:
1 — исполняемые программы и Shell команды (wc, ls, pwd и т.п.);
2 — системные вызовы (fork, dup2 и т.п.)
3 — библиотечные функции (printf, scanf, cos, exec).
Указывать, из какой именно категории надо показать справку, нужно в случаях совпадений имен. Например, man 3 printf описывает функцию из стандартной библиотеки C, а man 1 printf — консольную программу с таким же именем.
Посмотреть список всех доступных на машине справочных статей можно с помощью команды man -k. (точка — тоже часть команды).
less#
Когда в небольшом окне терминала надо просмотреть очень длинный текст (содержимое какого-то файла, длинный man и т.п.), используют специальные программы пейджеры (от слова page/страница, то есть программы, позволяющие просматривать текст постранично). Например, less.
Пролистайте вперед или назад при помощи клавиш вверх, вниз/ PageUp, PageDown/ (↑), (↓).
При необходимости нажмите клавишу q для выхода.
Для поиска определенного текста в справочной статье нажмите / (слеш), введите текст для поиска и нажмите Enter. Перемещение к следующим вхождениям — клавиша n.
Права#
С любым файлом или каталогом связан набор <<прав>>: право на чтение файла, право на запись в файл, право исполнять файл. Все пользователи делятся на три категории: владелец файла, группа владельца файла, все прочие пользователи.
Посмотреть права на файл можно с помощью команды ls -l.
Если при работе получите сообщение permission denied, это значит, что недостаточно прав на объект, с которым необходимо работать.
Дополнительные источники информации:
Справочная страница: chmod.
STDIN, STDOUT, конвейеры (pipe)#
Программы можно соединять между собой: выход (STDOUT) одной программы передавать в качестве входных данных (STDIN) другой программе.
Такая конструкция из соединенных программ называется по-английски pipe (труба), по-русски — конвейер. С каждой исполняющейся программой связаны 3 стандартных потока данных:
поток входных данных STDIN;
поток выходных данных STDOUT;
поток для вывода ошибок STDERR.
Для примера:
Впишите команду wc. Отобразятся пустые строки для ввода текста.
Введите текст "good day today", нажмите Enter.
Введите текст "good day", нажмите Enter.
Нажмите клавиши Ctrl+d (см. рисунок ниже).
Программа wc покажет статистику по количеству букв, слов и строк в тексте и завершится.

Рисунок. Статистика по количеству букв
В данном случае в STDIN программы отображен двухстрочный текст, а в STDOUT получили три числа. Впишите команду head -n3 /etc/passwd, появится результат (см. рисунок ниже):

Рисунок. Результат команды head -n3 /etc/passwd
В этом случае программа head ничего не читала из STDIN, а в STDOUT написала три строки.
Объединение программ в конвейер делается символом | <вертикальная черта>.
Выполните команду head -n3 /etc/passwd |wc, получится следующее (см. рисунок ниже):

Рисунок. Результат команды head -n3 /etc/passwd |wc
Программа head выдала в STDOUT три строки текста, которые сразу же попали на вход программе wc, и та подсчитала количество символов, слов и строк в полученном тексте. В конвейер можно объединять сколько угодно программ. Например, можно добавить к предыдущему конвейеру еще одну программу wc, которая подсчитает, сколько слов и букв было в выводе первой wc:
head -n3 /etc/passwd |wc |wc
1 3 24
Перенаправление ввода-вывода#
Вывод (STDOUT) программы можно не только передать другой программе по конвейеру, но и просто записать в файл. Перенаправьте его с помощью > (знака "больше"):
date > /tmp/today.txt
В результате выполнения этой команды на диске появится файл /tmp/today.txt. Посмотрите его содержимое с помощью cat /tmp/today.txt. Если файл с таким именем уже существовал, его старое содержимое будет удалено. Если файл не существовал, он будет создан. Каталог, в котором создается файл, должен существовать до выполнения команды.
Если надо не перезаписать файл, а добавить вывод в его конец, используйте >> (два знака «больше»):
date >> /tmp/today.txt
Проверьте, что записано в файле.
Кроме того, программе можно вместо STDIN передать любой файл. Введите:
wc </etc/passwd
Команда истории <history>#
Чтобы вызвать предыдущую команду, нажмите клавишу со стрелкой вверх, после приглашения к вводу появится предыдущая команда.
Это называется историей команд. Большинство дистрибутивов Linux по умолчанию запоминают последние 500 команд.
Нажмите клавишу со стрелкой вниз, и предыдущая команда исчезнет.
Управление курсором#
Вызовите предыдущую команду, еще раз нажав клавишу со стрелкой вверх.
Нажмите клавиши со стрелками влево и вправо. Позиция курсора в командной строке изменится. Благодаря этому легко можно редактировать команды.
Домашняя директория пользователя#
В экосистеме Linux домашний каталог также называется домашним директорией. Это основная точка входа пользователя при входе в среду Linux. Он отвечает за хранение файлов, папок, данных и программного обеспечения в каталоге /home с соответствующим индивидуальным профилем пользователя.
Синтаксис домашнего каталога
/home [ User Name ]
Где:
/home: можно использовать /home в качестве пути по умолчанию для домашнего каталога. Это основной или начальный путь для входа в индивидуальный профиль пользователя.
[User Name]: можно передать имя пользователя по пути /home. Это поможет ввести индивидуальный путь к профилю пользователя (с точки зрения файловой системы).
Как работает команда Linux Home Directory?#
Каталог пользователя обеспечивает базовую среду shell и bash. По умолчанию список файлов создается в пользовательском каталоге /home.
файл bash_logout: отвечает за выполнение любого действия, когда пользователь или терминал выходят из системы.
файл bash_profile: отвечает за выполнение любых действий при загрузке профиля пользователя в среде Linux.
файл Bashrc: отвечает за все необходимые материалы в нем. Это поможет в работе с bash, shell или другими приложениями. Мы можем указать функции, псевдоним, параметры оболочки или bash и т.д.
Путь к домашнему каталогу по умолчанию будет представлен в пути /home. Пользователь может изменить домашний каталог с помощью команды usermod (в соответствии с уровнем пользователя).
Примеры реализации домашнего каталога Linux#
Ниже приведены примеры:
Домашний каталог#
Любой пользователь на уровне Linux имеет домашний каталог автоматически созданный по пути / home с тем же именем пользователя.
Команда:
ls /home/
Результат:

Рисунок 1. Домашний каталог Linux
ls -al /home/user1/

Рисунок 2. Домашний каталог Linux
Пояснение: Согласно приведенной выше команде, здесь перечислено количество домашних каталогов пользователя. Перед добавлением любого пользователя убедитесь, что в среде отсутствует домашний каталог (см. рисунок 1), когда мы добавляем пользователя в среду Linux. Домашний каталог будет создан по пути /home. Имя домашнего каталога аналогично только имени пользователя (см. рисунок 1). Пользователь может использовать один и тот же каталог для хранения количества файлов, папок, данных и т.д. У него есть необходимые разрешения в файловой системе для хранения или извлечения данных из домашнего каталога.
Когда любой пользователь или домашний каталог будет создан по пути /home. Это создаст 3 файла по умолчанию в одном рабочем каталоге, т.е. bash_logout, bash_profile и bashrc.
useradd user1
ls /home/
Домашний каталог с помощью команды cd#
В среде Linux существует функциональность, доступная непосредственно в домашнем каталоге. Для этого нам просто нужно запустить простую команду cd в командной строке командной строки.
Использование:
cd
Результат:

Рисунок 1. Домашний каталог Linux
cd
pwd

Рисунок 2. Домашний каталог Linux
Пояснение: Согласно приведенной выше команде, используется команда cd. Это простая команда, но ее можно использовать в среде Linux. Когда пользователь работает в любом текущем каталоге, и ему нужно перейти из текущего рабочего каталога в домашний каталог, он использует команду cd. Согласно приведенному выше рисунку 1, пользователь входит в систему с именем пользователя user1, а текущий рабочий каталог - /home/user1/data. Нужно переместить или вернуться в домашний каталог, была использована команда cd в окне командной строки (см. рисунок 2).
Whoami
Pwd
ls
Домашний каталог с опцией тильды#
Можно использовать команду cd для входа в домашний каталог из любого места. Аналогично, можно добиться той же функциональности с помощью опции тильда (~).
Команда:
cd ~
Результат:

Рисунок 1. Домашний каталог Linux
cd ~

Рисунок 2. Домашний каталог Linux
Пояснение: Концепция команды cd находится в домашнем каталоге. Аналогично, можно увидеть концепцию со знаком тильды или опцией. Согласно приведенному выше рисунку 1, текущий рабочий каталог - /home/user1/data. Независимо от того, в каком месте находится пользователь, если нужно перейти из текущего рабочего каталога в домашний каталог. Можно использовать знак тильды с помощью команды cd. Согласно приведенной ниже команде, перемещайтесь из текущего рабочего каталога в домашний каталог (см. рисунок 2).
ls
cd ~
Домашний каталог с переменной HOME#
Существует функциональность для использования переменных среды. С помощью переменной HOME можно напрямую перейти в домашний каталог.
Примечание: Это поможет напрямую заходить в домашнюю директорию в различных заданиях оболочки или других приложениях.
Команда:
cd #HOME
Результат:

Снимок экрана 1. Выход
cd #HOME
pwd

Снимок экрана 2. Производительность
Пояснение: В Linux существует множество глобальных переменных. Переменная #HOME является одной из глобальных переменных. Согласно приведенной выше команде, можно перейти из любого рабочего каталога в домашний каталог. Согласно приведенному выше рисунку 1, пользователь находится в каталоге /home/user1/data. В соответствии с текущим рабочим каталогом, перейдите из каталога /home/user1/data в домашний каталог (см. рисунок 2).
pwd
ls
Перемена домашней директории на другую директорию#
Чтобы сменить рабочую директорию или перейти в другую существует команда cd (change directory — сменить директорию). Для этого после команды cd необходимо указать путь желаемой рабочей директории. Он может быть указан двумя способами: абсолютный путь или относительный путь.
Он начинается с указания корневой директории, за которой следуют ветки дерева файловой системы до тех пор, пока не достигнута желаемая директория. В качестве примера рассмотрена директория в, в которой установлено большинство программ. Ее абсолютный путь — /usr/bin. Это значит, что в корневой директории (обозначается начальным слэш-символом (/)) нужно перейти сначала в директорию с именем usr, а затем в директорию bin, которая в ней расположена.
В окне терминала введите команду cd /usr/bin для входа в директорию /usr/bin, которая стала рабочей директорией.
[test@localhost ~]$ cd /usr/bin
[test@localhost bin]$
Специальные ярлыки#
Если ввести команду cd без указания пути, то будет выполнен переход в домашнюю директорию.
[test@localhost bin]$ cd
[test@localhost ~]$ pwd
/home/test
Чтобы сменить рабочую директорию на предыдущую, используйте символ -cd. Введите команду cd -, чтобы снова вернуться в /usr/bin.
[test@localhost ~]$ cd -
/usr/bin
[test@localhost bin]$ pwd
/usr/bin
Чтобы сослаться на домашнюю директорию любого пользователя, добавьте перед именем учетной записи символ ~ (тильда), например ~test.
[test@localhost bin]$ cd ~test
[test@localhost ~]$ pwd
/home/test
Если после символа ~ (тильда) не указать имя пользователя, то данный символ будет ссылаться на собственную домашнюю директорию.
[test@localhost bin]$ cd ~test
[test@localhost ~]$ pwd
/home/test
Пользовательский systemd#
Как системный администратор, необходимо взаимодействовать с системным и сервисным менеджером для операционных систем Linux. Программный пакет предоставляет инструменты и службы для контроля и отчетности о состоянии системы, для инициализации системы во время запуска и многое другое. Программный пакет предоставляет ряд функций, таких как:
параллельный запуск системных служб во время загрузки;
активация демонов по требованию;
логика управления сервисом на основе зависимостей.
В качестве представления системных ресурсов и сервисов systemd вводится понятие systemd units. Модуль systemd, который выполняет или управляет определенной задачей, является основным объектом для systemd. Смотрите следующие примеры различных типов модулей systemd:
обслуживание;
цель;
устройство;
монтирование;
таймер;
другие типы, которые имеют отношение к системе инициализации.
Примечание: Если необходимо отобразить все доступные типы модулей, используйте:
-t # systemctl -t help
Модуль systemd состоит из имени, типа и файла конфигурации, который определяет задачу модуля. Файлы конфигурации устройства расположены в одном из каталогов, перечисленных в следующей таблице:
Таблица. Расположение файлов юнитов systemd
Каталог |
Описание |
|---|---|
/usr/lib/systemd/system/ |
Юнит-файлы systemd, распространяемые вместе с установленными пакетами RPM |
/run/systemd/system/ |
Юнит-файлы systemd, созданные во время выполнения. Этот каталог имеет приоритет над каталогом с установленными файлами юнитов |
/etc/systemd/system/ |
Юнит-файлы systemd, созданные systemctl enable, а также юнит-файлы, добавленные для расширения службы. Этот каталог имеет приоритет над каталогом с файлами модулей среды выполнения (то есть - инструментом, помогающим пользователям управлять средой оболочки Linux) |
Конфигурация systemd по умолчанию определяется во время компиляции. Конфигурацию можно найти в/etc/systemd/system.conf** файле. Используйте этот файл, если необходимо отклониться и переопределить выбранные значения для юнитов systemd
Например, чтобы переопределить значение ограничения времени ожидания по умолчанию, которое установлено равным 90 секундам, используйте DefaultTimeoutStartSec параметр для ввода требуемого значения в секундах.
DefaultTimeoutStartSec=required value
Команды пользователя#
При необходимости просмотрите информацию при помощи команд из следующей таблицы:
Таблица. Доступные команды пользователя SberLinux
Команда |
Функциональность |
|---|---|
|
Добавить новую группу |
|
Добавить нового пользователя |
|
Добавьте пользователя в группу |
|
Изменить информацию о пользователе |
|
Посмотреть список всех установленных пакетов с yum |
|
Посмотреть список всех установленных пакетов с dnf |
|
Посмотреть список всех установленных групп пакетов с dnf |
|
Найти пакет по связанному ключевому слову |
|
Посмотреть информацию и краткую сводку о пакете |
|
Установить пакет с помощью менеджера пакетов YUM |
|
Установить пакет .rpm из локального файла |
|
Удалить пакет .rpm |
|
Посмотреть снимок активных процессов |
|
Посмотреть процессы в древовидной диаграмме |
|
Посмотреть карту использования памяти процессами |
|
Посмотреть все запущенные процессы |
|
Посмотреть содержимое каталога |
|
Посмотреть информацию о системе |
|
Посмотреть информацию о релизе ядра |
|
Посмотреть, как долго работает система, включая среднюю нагрузку |
|
Посмотреть имя хоста системы |
|
Посмотреть IP-адрес системы |
|
Посмотреть историю перезагрузки системы |
|
Посмотреть текущее время и дату |
|
Запросить и изменить системные часы |
|
Посмотреть текущий календарь (месяц и день) |
|
Посмотреть путь к директории |
|
Посмотреть домашний каталог |
|
Посмотреть справочные страницы, в которых можно найти информацию о команде (системном вызове, подпрограмме, формате файлов и т.д.), которые указали |
|
Посмотреть текущего пользователя |
|
Посмотреть информацию о конкретном пользователе |
|
Посмотреть разделы диска, размеры и типы |
|
Посмотреть использование диска для всех файлов и каталогов |
|
Посмотреть использование диска в каталоге, в котором находитесь |
|
Посмотреть целевую точку монтирования для всей файловой системы |
Использование средств разработки#
Для разработки или создания приложений с открытым исходным кодом, рекомендуется установить следующие инструменты разработки:
autoconf automake gcc gcc-c++ go bison flex binutils gdb glibc-devel libtool make pkgconf pkgconf-m4 pkgconf–pkg-config redhat-rpm-config rpm-build rpm-sign strace
Перечислите группы пакетов.
Введите следующую команду dnf, чтобы получить список групп пакетов.
$ dnf group list
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:02:38 ago on Sun 17 Mar 2019 09:28:36 AM EAT.
Available Environment Groups:
Minimal Install
Workstation
Custom Operating System
Installed Environment Groups:
Server
Installed Groups:
Container Management
Development Tools
Available Groups:
.NET Core Development
RPM Development Tools
Smart Card Support
Scientific Support
Security Tools
System Tools
Headless Management
Network Servers
Legacy UNIX Compatibility
Graphical Administration Tools
Можно передать параметр summary для просмотра количества установленных групп, доступных групп и т.д.
$ sudo dnf groups summary
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:33 ago on Sun 17 Mar 2019 09:28:36 AM EAT.
Installed Groups: 2
Available Groups: 10
Установите GCC и средства разработки на машине.
Следующая команда используется для установки GCC и средств разработки на машине.
sudo dnf group install "Development Tools"
Или:
sudo dnf groupinstall "Development Tools"
Можно просмотреть информацию о группе пакетов Development Tools.
sudo dnf group info "Development Tools"
Проверьте установку, проверив места расположения инструментов.
$ whereis bison gcc flex
bison: /usr/bin/bison /usr/share/bison /usr/share/man/man1/bison.1.gz /usr/share/info/bison.info.gz
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/share/man/man1/gcc.1.gz /usr/share/info/gcc.info.gz
flex: /usr/bin/flex /usr/share/man/man1/flex.1.gz /usr/share/info/flex.info-1.gz /usr/share/info/flex.info-2.gz /usr/share/info/flex.info.gz
Проверьте установленную версию GCC.
$ gcc --version
gcc (GCC) 8.2.1 20180905 (sberlinux 8.8)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Удаление GCC и средств разработки на сервере
Ниже приведена команда, используемая для удаления группы пакетов.
sudo dnf group remove "Development Tools"
Примечание: Будьте внимательны к дереву зависимостей, чтобы не нарушить зависимости других системных пакетов.