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

Рисунок. Окно ввода логина и пароля
На экране монитора появится приглашение командной строки.
Использование команды su#
Команда su позволяет пользователям открывать окно терминала и с этого терминала запускать новый экземпляр оболочки, с другими идентификаторами пользователя и группы. Например, для выполнения административных задач можно войти в систему с учетной записью обычного пользователя и набрать su, чтобы открыть оболочку с административными полномочиями.
Если команда su набрана без дополнительных аргументов, осуществляется вход от имени пользователя с административными полномочиями.
При использовании su под учетной записью обычного пользователя будет предложено ввести пароль, и после ввода будут получены учетные данные целевого пользователя:
[user@localhost ~]$ su
Password:
[root@localhost user]#
Команду su можно использовать для запуска задач от имени другого пользователя. Например, введите su user, где user - имя целевого пользователя, чтобы открыть новый экземпляр оболочки от имени пользователя user.
При использовании su user выполняется запуск задач от имени пользователя user, без изменения среды. То есть параметры среды для учетной записи user не будут установлены. Если необходим полный доступ ко всей среде целевого пользователя, то используется команда su - user, запускающая оболочку входа в систему. При этом все сценарии, составляющие пользовательскую среду (а также системные переменные и домашняя директория), будут обработаны, и запуск задач будет осуществляться, точно так же, как при входе в систему от имени целевого пользователя.
Аргумент - вызывает переключение контекста выполнения оболочки на контекст целевого пользователя.
Использование команды sudo#
Основное преимущество использования sudo заключается в повышении уровня безопасности. Пользователи не сохраняют постоянных административных полномочий, а получают временный доступ к необходимым привилегиям только на период выполнения конкретной задачи. Это снижает риск несанкционированного доступа и уменьшает вероятность случайного повреждения системы.
Синтаксис команды:
sudo <command>
Где <command> - команда, которую необходимо выполнить с административными полномочиями.
Пример переключения учетных записей пользователей#
Войдите в систему под обычным пользователем;
Введите
whoami, чтобы увидеть, какая учетная запись используется в данный момент. Также введитеidи обратите внимание, что получено больше информации о текущих учетных данных при использованииid;Наберите
su. При запросе пароля введите парольroot. Введитеidеще раз, чтобы получить права администратора;Введите
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 <user_name>@<IP_address>
Где <IP_address> — IP-адрес компьютера с запущенной службой sshd.
Если используется парольная аутентификация, на сервере должна существовать учетная запись с таким именем. Команда ssh берет свои конфигурационные установки сначала из командной строки, затем из пользовательского файла $HOME/.ssh/config и из общесистемного файла /etc/ssh/ssh_config. Если идентичные параметры заданы по-разному, выбирается самое первое значение.
Клиентские конфигурационные файлы бывают глобальными, на уровне системы (/etc/ssh/ssh_config), и локальными, на уровне отдельного пользователя ($HOME/.ssh/config). Следовательно, пользователь может полностью контролировать конфигурацию клиентской части SSH.
Конфигурационные файлы разбиты на разделы, установки которых относятся к отдельной машине, группе или ко всем машинам. Установки разных разделов могут перекрывать друг друга. При наличии нескольких параметров, конфликтующих друг с другом, предпочтение отдается тому, который указан раньше. Порядок анализа значений таков: сначала аргументы командной строки, потом конфигурационный файл пользователя, и, наконец, системный конфигурационный файл. В каждом из случаев берется первое обнаруженное значение параметра. Другими словами, если параметр встречается в нескольких разделах файла, выбирается самый первый вариант.
Дополнительную информацию можно получить, выполнив команду:
man ssh
Создание пары ключей SSH#
Используйте эту процедуру для создания пары ключей SSH в локальной системе и копирования сгенерированного открытого ключа на сервер OpenSSH. Если сервер настроен соответствующим образом, можно войти на сервер OpenSSH без указания какого-либо пароля.
Выполните следующие действия от имени пользователя с административными полномочиями, так как только сможете использовать ключи:
Чтобы сгенерировать пару ключей 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. 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/. После переустановки скопируйте его обратно в свой домашний каталог. Можно сделать это для всех пользователей системы, включая пользователя с правами пользователя с административными полномочиями.Опционально. Войдите на сервер 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 года, когда пароль последний раз изменялся: многие вещи в SberLinux OS относятся к этой дате, которая в SberLinux OS считается началом дней. Это также упоминается как эпоха;
За несколько дней до того, как пароль может быть изменен: это позволяет системным администраторам использовать более строгую политику паролей, когда невозможно сразу вернуться к исходному паролю, если пароль был изменен. Обычно это поле имеет значение
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Команда немедленно отключает компьютер.
Впишите команду
shutdownc указанием временных рамок отключения выбранной опции:shutdown [options] [time] [message]Например,
$ shutdown -h nowПараметр
optionsзадает параметры отключения. Параметрtimeможно задавать в виде чч:мм (hh:mm) в24часовом формате. Также можно использовать минуты, указывающие через сколько минут от текущего момента нужно выключить компьютер. Также доступна константаnow, указывающая, что выключать нужно прямо сейчас. Параметрmessageпозволяет задать сообщение, которое будет выведено в терминал перед выключением.Впишите команду
poweroffдля выхода из SberLinux OS:poweroffВпишите команду
rebootдля перезагрузки системы.rebootВпишите команду exit для завершения сеанса текущего пользователя.
exit
Для остановки всех сессий пользователя можно воспользоваться командной pkill. pkill - это утилита командной строки, которая отправляет сигналы процессам запущенной программы на основе заданных критериев. Процессы могут быть указаны их полными или частичными именами, пользователем, запускающим процесс, или другими атрибутами.
Выполните в терминале команду, например:
sudo pkill -9 -u username
Пользователь под номером 9 закончит все свои процессы.
Работа с Shell#
Говоря о командной строке, на самом деле мы имеем в виду командную оболочку (shell). Командная оболочка — это программа, которая принимает команды, введенные с клавиатуры, и передает их операционной системе для выполнения.
Практически все дистрибутивы SberLinux OS поставляются с командной оболочкой из проекта 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 <user_name>– вывод об идентификаторах пользователя:UID, имя_пользователя,GIDи имя первичной группы и список групп в которых состоит пользователь.groups <user_name>– вывод списка групп в которых состоит пользователь.
Добавление пользователя#
Чтобы добавить нового пользователя в систему, введите следующее в командной строке (подробнее в разделе «База знаний» → «Утилита useradd»):
sudo useradd <options> <username>
Где:
<options>- опции;<username>– имя пользователя.
Опция |
Описание |
|---|---|
|
Разрешить имена, которые не соответствуют стандартным ограничениям |
|
Указать префикс |
|
Создать нового пользователя с указанием определенного каталога при создании домашнего каталога. Если указанный опции каталог не существует, то он будет создан (если не указана опция |
|
Изменить значения по умолчанию. При вызове только с опцией |
|
Указать дату, с которой учетная запись пользователя будет отключена. Если не указана, то |
|
Задать количество дней после превышения максимального срока действия пароля, в течение которых пользователь, как ожидается, заменит пароль. Значение хранится в файле |
|
Указать имя или номер основной группы пользователя. Название группы должно существовать. Номер группы должен относиться к уже существующей группе. Если опция не указана, поведение |
|
Указать список дополнительных групп, в которые также должен входить новый пользователь. Каждая группа отделяется от следующей запятой без пробелов. На группы распространяются те же ограничения, что и на группу, указанную с помощью опции |
|
Указать основной каталог, содержащий файлы и каталоги, которые необходимо скопировать в домашний каталог пользователя при создании. Опция действительна, только если указана опция |
|
Указать необходимость создания домашнего каталога пользователя, если он не существует. Файлы и каталоги, содержащиеся в базовом каталоге (который можно определить с помощью опции |
|
Задать путь к оболочке входа пользователя. Без этой опции система будет использовать переменную |
|
Указать |
|
Определить начальный пароль для учетной записи нового пользователя. |
|
Задать числовое значение идентификатора пользователя. Значение должно быть уникальным и неотрицательным. По умолчанию используется наименьшее значение ID, большее или равное |
|
Создать системную учетную запись пользователя. Системные пользователи создаются без информации об устаревании в |
Изменение пользователя#
Изменение параметров пользователя происходит с помощью утилиты
usermod. Используйте команду:sudo usermod -cЭта команда поменяет комментарий пользователю на
<name>.Измените пароль пользователя при помощи утилиты
passwd.sudo passwd <namename>Где
<namename>- измененное имя пользователя.
Утилита passwd может использоваться и обычным пользователем для смены пароля.
Опция |
Описание |
|---|---|
|
Удалить пароль пользователю. После этого пароль будет пустым, и пользователь сможет входить в систему без предъявления пароля |
|
Сделать пароль устаревшим. Это заставит пользователя изменить пароль при следующем входе в систему |
|
Заблокировать учетную запись пользователя по прошествии указанного количества дней после устаревания пароля |
|
Минимальное количество дней между сменами пароля |
|
Максимальное количество дней, после которого необходимо обязательно сменить пароль |
|
Заблокировать учетную запись пользователя |
|
Разблокировать учетную запись пользователя |
Удаление пользователя#
Чтобы удалить пользователя <name>, воспользуйтесь утилитой userdel
sudo userdel <name>
Опция |
Описание |
|---|---|
|
Принудительно удалить пользователя, даже если он сейчас работает в системе |
|
Удалить домашний каталог пользователя |
Управление группами#
Создание группы#
Чтобы добавить пользователя, воспользуйтесь командой groupadd.
sudo groupadd testgroup
Опция |
Описание |
|---|---|
|
Установить собственный GID |
|
Изменить пароль группы |
|
Создать системную группу |
Изменение группы#
Смените название группы, ее GID или пароль помощи команды groupmod.
sudo groupmod -n newtestgroup testgroup # Имя группы изменено с testgroup на newtestgroup
Опция |
Описание |
|---|---|
|
Установить собственный GID |
|
Добавить новое имя группы |
|
Изменить пароль группы |
Удаление группы#
Утилита 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>#
Чтобы вызвать предыдущую команду, нажмите клавишу со стрелкой вверх, после приглашения к вводу появится предыдущая команда.
Это называется историей команд. Большинство дистрибутивов SberLinux OS по умолчанию запоминают последние 500 команд.
Нажмите клавишу со стрелкой вниз, и предыдущая команда исчезнет.
Управление курсором#
Вызовите предыдущую команду, еще раз нажав клавишу со стрелкой вверх.
Нажмите клавиши со стрелками влево и вправо. Позиция курсора в командной строке изменится. Благодаря этому легко можно редактировать команды.
Домашняя директория пользователя#
В экосистеме SberLinux OS домашний каталог также называется домашним директорией. Это основная точка входа пользователя при входе в среду SberLinux OS. Он отвечает за хранение файлов, папок, данных и программного обеспечения в каталоге /home с соответствующим индивидуальным профилем пользователя.
Синтаксис домашнего каталога
/home [ User Name ]
Где:
/home:можно использовать/homeв качестве пути по умолчанию для домашнего каталога. Это основной или начальный путь для входа в индивидуальный профиль пользователя.[User Name]:можно передать имя пользователя по пути/home. Это поможет ввести индивидуальный путь к профилю пользователя (с точки зрения файловой системы).
Как работает команда SberLinux Home Directory?#
Каталог пользователя обеспечивает базовую среду shell и bash.
По умолчанию список файлов создается в пользовательском каталоге /home.
файл
bash_logout:отвечает за выполнение любого действия, когда пользователь или терминал выходят из системы.файл
bash_profile:отвечает за выполнение любых действий при загрузке профиля пользователя в среде SberLinux OS.файл
Bashrc:отвечает за все необходимые материалы в нем. Это поможет в работе с bash, shell или другими приложениями. Мы можем указать функции, псевдоним, параметры оболочки или bash и т.д.
Путь к домашнему каталогу по умолчанию будет представлен в пути /home. Пользователь может изменить домашний каталог с помощью команды usermod (в соответствии с уровнем пользователя).
Примеры реализации домашнего каталога SberLinux OS#
Ниже приведены примеры:
Домашний каталог#
Любой пользователь на уровне SberLinux OS имеет домашний каталог автоматически созданный по пути /home с тем же именем пользовател:
ls /home/

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

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

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

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

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

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

Рисунок. Выход
cd #HOME
pwd

Рисунок. Производительность
В SberLinux OS существует множество глобальных переменных. Переменная #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#
Как системный администратор, необходимо взаимодействовать с системным и сервисным менеджером для операционных систем SberLinux OS. Программный пакет предоставляет инструменты и службы для контроля и отчетности о состоянии системы, для инициализации системы во время запуска и многое другое. Программный пакет предоставляет ряд функций, таких как:
параллельный запуск системных служб во время загрузки;
активация демонов по требованию;
логика управления сервисом на основе зависимостей.
В качестве представления системных ресурсов и сервисов systemd вводится понятие systemd units. Модуль systemd, который выполняет или управляет определенной задачей, является основным объектом для systemd. Смотрите следующие примеры различных типов модулей systemd:
обслуживание;
цель;
устройство;
монтирование;
таймер;
другие типы, которые имеют отношение к системе инициализации.
Примечание
Если необходимо отобразить все доступные типы модулей, используйте: -t # systemctl -t help
Модуль systemd состоит из имени, типа и файла конфигурации, который определяет задачу модуля. Файлы конфигурации устройства расположены в одном из каталогов, перечисленных в следующей таблице:
Каталог |
Описание |
|---|---|
|
Юнит-файлы systemd, созданные systemctl enable, а также юнит-файлы, добавленные для расширения службы. Этот каталог имеет приоритет над каталогом с файлами модулей среды выполнения (то есть - инструментом, помогающим пользователям управлять средой оболочки SberLinux OS) |
|
Юнит-файлы systemd, созданные во время выполнения. Этот каталог имеет приоритет над каталогом с установленными файлами юнитов |
|
Юнит-файлы systemd, распространяемые вместе с установленными пакетами RPM |
Конфигурация systemd по умолчанию определяется во время компиляции. Конфигурацию можно найти в /etc/systemd/system.conf файле. Используйте этот файл, если необходимо отклониться и переопределить выбранные значения для юнитов systemd.
Например, чтобы переопределить значение ограничения времени ожидания по умолчанию, которое установлено равным 90 секундам, используйте DefaultTimeoutStartSec параметр для ввода требуемого значения в секундах.
DefaultTimeoutStartSec=required value
Команды пользователя#
При необходимости просмотрите информацию при помощи команд из следующей таблицы:
Команда |
Функциональность |
|---|---|
|
Добавить нового пользователя |
|
Посмотреть текущий календарь (месяц и день) |
|
Посмотреть домашний каталог |
|
Посмотреть путь к директории |
|
Посмотреть текущее время и дату |
|
Посмотреть список всех установленных групп пакетов с |
|
Посмотреть список всех установленных пакетов с |
|
Посмотреть использование диска для всех файлов и каталогов |
|
Посмотреть использование диска в каталоге, в котором находитесь |
|
Посмотреть разделы диска, размеры и типы |
|
Посмотреть целевую точку монтирования для всей файловой системы |
|
Посмотреть информацию о конкретном пользователе |
|
Добавить новую группу |
|
Посмотреть IP-адрес системы |
|
Посмотреть имя хоста системы |
|
Посмотреть историю перезагрузки системы |
|
Посмотреть содержимое каталога |
|
Посмотреть справочные страницы, в которых можно найти информацию о команде (системном вызове, подпрограмме, формате файлов и т.д.), которые указали |
|
Посмотреть все запущенные процессы |
|
Посмотреть карту использования памяти процессами |
|
Посмотреть снимок активных процессов |
|
Посмотреть процессы в древовидной диаграмме |
|
Удалить пакет .rpm |
|
Установить пакет .rpm из локального файла |
|
Запросить и изменить системные часы |
|
Посмотреть информацию о релизе ядра |
|
Посмотреть информацию о системе |
|
Посмотреть, как долго работает система, включая среднюю нагрузку |
|
Добавьте пользователя в группу |
|
Изменить информацию о пользователе |
|
Посмотреть текущего пользователя |
|
Посмотреть информацию и краткую сводку о пакете |
|
Установить пакет с помощью менеджера пакетов |
|
Посмотреть список всех установленных пакетов с |
|
Найти пакет по связанному ключевому слову |
Использование средств разработки#
Для разработки или создания приложений с открытым исходным кодом, рекомендуется установить следующие инструменты разработки:
autoconfautomakegccgcc-c++gobisonflexbinutilsgdbglibc-devellibtoolmakepkgconfpkgconf-m4pkgconf–pkg-configredhat-rpm-configrpm-buildrpm-signstrace
Перечислите группы пакетов.
Введите следующую команду
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"
Примечание
Будьте внимательны к дереву зависимостей, чтобы не нарушить зависимости других системных пакетов.