Поиск по сайту:

Управление пользователями и группами, разрешениями и атрибутами файлов, а также включение доступа sudo к учетным записям. Часть 8


В августе прошлого года Linux Foundation запустила сертификацию LFCS (Сертифицированный системный администратор Linux Foundation), совершенно новую программу, цель которой – дать людям возможность где угодно и где угодно сдавать экзамен, чтобы получите сертификат по базовой и промежуточной оперативной поддержке систем Linux, которая включает поддержку работающих систем и служб, а также общий мониторинг и анализ, а также интеллектуальное принятие решений, чтобы иметь возможность решать, когда необходимо передать проблемы группам поддержки более высокого уровня.

Просмотрите следующее видео, в котором описывается введение в программу сертификации Linux Foundation.

Эта статья является восьмой частью длинной серии из 10 руководств. Здесь, в этом разделе, мы расскажем вам, как управлять разрешениями пользователей и групп в системе Linux, которые необходимы для сертификационного экзамена LFCS.

Поскольку Linux является многопользовательской операционной системой (в том смысле, что она позволяет нескольким пользователям на разных компьютерах или терминалах получать доступ к одной системе), вам необходимо знать, как осуществлять эффективное управление пользователями: как добавлять, редактировать, приостанавливать или удалять учетные записи пользователей, а также предоставление им необходимых разрешений для выполнения назначенных им задач.

Добавление учетных записей пользователей

Чтобы добавить новую учетную запись пользователя, вы можете выполнить любую из следующих двух команд от имени пользователя root.

adduser [new_account]
useradd [new_account]

При добавлении новой учетной записи пользователя в систему выполняются следующие операции.

1. Создается его/ее домашний каталог (по умолчанию /home/username).

2. Следующие скрытые файлы копируются в домашний каталог пользователя и будут использоваться для предоставления переменных среды для его пользовательского сеанса.

.bash_logout
.bash_profile
.bashrc

3. Для пользователя в /var/spool/mail/имя_пользователя создается почтовая очередь.

4. Создается группа, которой присваивается то же имя, что и у новой учетной записи пользователя.

Понимание /etc/passwd

Полная информация об учетной записи хранится в файле /etc/passwd. Этот файл содержит записи для каждой учетной записи системного пользователя и имеет следующий формат (поля разделяются двоеточием).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. Поля [имя пользователя] и [Комментарий] говорят сами за себя.
  2. Символ x во втором поле указывает, что учетная запись защищена скрытым паролем (в /etc/shadow), который необходим для входа в систему под именем [имя пользователя] .
  3. Поля [UID] и [GID] представляют собой целые числа, представляющие идентификатор пользователя и основной идентификатор группы, к которой принадлежит [имя пользователя], соответственно. .
  4. [Домашний каталог] указывает абсолютный путь к домашнему каталогу [имя пользователя], а
  5. [Оболочка по умолчанию] — это оболочка, которая будет доступна этому пользователю при входе в систему.
Понимание /etc/group

Информация о группе хранится в файле /etc/group. Каждая запись имеет следующий формат.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Имя группы] — имя группы.
  2. Знак x в [Пароль группы] указывает на то, что групповые пароли не используются.
  3. [GID]: то же, что и в /etc/passwd.
  4. [Члены группы]: список пользователей, разделенных запятыми, которые являются членами [название группы].

После добавления учетной записи вы можете отредактировать следующую информацию (чтобы назвать несколько полей) с помощью команды usermod, основной синтаксис usermod которой следующий.

usermod [options] [username]
Установка срока действия учетной записи

Используйте флаг –expiredate, за которым следует дата в формате ГГГГ-ММ-ДД.

usermod --expiredate 2014-10-30 tecmint
Добавление пользователя в дополнительные группы

Используйте комбинированные параметры -aG или -append -groups, за которыми следует список групп, разделенных запятыми.

usermod --append --groups root,users tecmint
Изменение местоположения домашнего каталога пользователя по умолчанию

Используйте параметры -d или -home, за которыми следует абсолютный путь к новому домашнему каталогу.

usermod --home /tmp tecmint
Изменение оболочки, которую пользователь будет использовать по умолчанию

Используйте -shell, а затем путь к новой оболочке.

usermod --shell /bin/sh tecmint
Отображение групп, в которых состоит пользователь
groups tecmint
id tecmint

Теперь давайте выполним все вышеперечисленные команды за один раз.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

В приведенном выше примере мы установим дату истечения срока действия учетной записи пользователя tecmint на 30 октября 2014 г.. Мы также добавим учетную запись в группу root и пользователей. Наконец, мы установим sh в качестве оболочки по умолчанию и изменим расположение домашнего каталога на /tmp:

Читайте также:

  1. 15 примеров команд useradd в Linux
  2. 15 примеров команд usermod в Linux

Для существующих учетных записей мы также можем сделать следующее.

Отключение учетной записи путем блокировки пароля

Используйте -L (заглавная буква L) или параметр -lock, чтобы заблокировать пароль пользователя.

usermod --lock tecmint
Разблокировка пароля пользователя

Используйте параметр -u или -unlock, чтобы разблокировать пароль пользователя, который ранее был заблокирован.

usermod --unlock tecmint

Создание новой группы для доступа на чтение и запись к файлам, к которым должен иметь доступ несколько пользователей.

Выполните следующую серию команд для достижения цели.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Удаление группы

Вы можете удалить группу с помощью следующей команды.

groupdel [group_name]

Если существуют файлы, принадлежащие group_name, они не будут удалены, но владельцу группы будет присвоен GID удаленной группы.

Разрешения для файлов Linux

Помимо основных разрешений на чтение, запись и выполнение, которые мы обсуждали в разделе «Инструменты архивирования и установка атрибутов файлов – часть 3» этой серии, существуют и другие менее используемые (но не менее важные) настройки разрешений, иногда называемые «специальными». разрешения ».

Как и базовые разрешения, обсуждавшиеся ранее, они устанавливаются с помощью восьмеричного файла или буквы (символической записи), обозначающей тип разрешения.

Удаление учетных записей пользователей

Вы можете удалить учетную запись (вместе с ее домашним каталогом, если он принадлежит пользователю, и всеми файлами, находящимися в нем, а также спулом почты) с помощью команды userdel с командой -remove. вариант.

userdel --remove [username]

Управление группой

Каждый раз, когда в систему добавляется новая учетная запись пользователя, создается группа с тем же именем, единственным участником которой является это имя пользователя. Позже в группу можно будет добавить других пользователей. Одна из целей групп — реализовать простой контроль доступа к файлам и другим системным ресурсам путем установки правильных разрешений для этих ресурсов.

Например, предположим, что у вас есть следующие пользователи.

  1. пользователь1 (основная группа: пользователь1)
  2. пользователь2 (основная группа: пользователь2)
  3. пользователь3 (основная группа: пользователь3)

Всем им нужен доступ чтение и запись к файлу с именем common.txt, расположенному где-то в вашей локальной системе или, возможно, в общей сетевой папке, пользователь1 создан. У вас может возникнуть соблазн сделать что-то вроде:

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Однако это обеспечит доступ чтение и запись только владельцу файла и тем пользователям, которые являются членами группы владельцев файла (user1 в данном случае). Опять же, у вас может возникнуть соблазн добавить user2 и user3 в группу user1, но это также предоставит им доступ к остальным принадлежащим им файлам. пользователем user1 и группой user1.

Вот тут-то и пригодятся группы, и вот что следует делать в таком случае.

Понимание Setuid

Когда разрешение setuid применяется к исполняемому файлу, пользователь, запускающий программу, наследует действующие привилегии владельца программы. Поскольку этот подход может вызвать серьезные проблемы с безопасностью, количество файлов с разрешением setuid должно быть сведено к минимуму. Скорее всего, вы найдете программы с этим набором разрешений, когда пользователю системы потребуется доступ к файлу, принадлежащему root.

Подводя итог, можно сказать, что пользователь может не только выполнить двоичный файл, но и сделать это с правами root. Например, давайте проверим разрешения /bin/passwd. Этот двоичный файл используется для изменения пароля учетной записи и изменяет файл /etc/shadow. Суперпользователь может изменить чей-либо пароль, но все остальные пользователи должны иметь возможность менять только свой собственный.

Таким образом, любой пользователь должен иметь разрешение на запуск /bin/passwd, но только root сможет указать учетную запись. Другие пользователи могут менять только соответствующие пароли.

Понимание Setgid

Когда бит setgid установлен, эффективный GID реального пользователя становится идентификатором владельца группы. Таким образом, любой пользователь может получить доступ к файлу с правами, предоставленными владельцу группы такого файла. Кроме того, когда для каталога установлен бит setgid, вновь созданные файлы наследуют ту же группу, что и каталог, а вновь созданные подкаталоги также наследуют бит setgid родительского каталога. Скорее всего, вы будете использовать этот подход всякий раз, когда членам определенной группы потребуется доступ ко всем файлам в каталоге, независимо от основной группы владельца файла.

chmod g+s [filename]

Чтобы установить setgid в восьмеричной форме, добавьте число 2 к текущим (или желаемым) базовым разрешениям.

chmod 2755 [directory]
Установка SETGID в каталоге

Понимание липкого бита

Когда для файлов установлен «sticky bit», Linux просто игнорирует его, тогда как для каталогов он не позволяет пользователям удалять или даже переименовывать содержащиеся в нем файлы, если только пользователь не является владельцем каталога, файл или является корневым.

chmod o+t [directory]

Чтобы установить фиксирующий бит в восьмеричной форме, добавьте число 1 к текущим (или желаемым) базовым разрешениям.

chmod 1755 [directory]

Без липкого бита любой, кто может писать в каталог, может удалять или переименовывать файлы. По этой причине липкий бит обычно встречается в каталогах, таких как /tmp, которые доступны для записи всем пользователям.

Специальные атрибуты файлов Linux

Существуют и другие атрибуты, которые включают дополнительные ограничения на операции, разрешенные с файлами. Например, запретите переименование, перемещение, удаление или даже изменение файла. Они устанавливаются с помощью командыchattr, и их можно просмотреть с помощью инструмента lsattr следующим образом.

chattr +i file1
chattr +a file2

После выполнения этих двух команд file1 станет неизменяемым (что означает, что его нельзя переместить, переименовать, изменить или удалить), тогда как file2 перейдет в режим только добавления (можно только открыть в режиме добавления для записи).

Доступ к учетной записи root и использование sudo

Один из способов, с помощью которого пользователи могут получить доступ к учетной записи root, — это набрать текст.

su

а затем введите пароль root.

Если аутентификация прошла успешно, вы войдете в систему как root с тем же текущим рабочим каталогом, что и раньше. Если вы хотите, чтобы вместо этого вас поместили в домашний каталог root, запустите.

su -

а затем введите пароль root.

Вышеописанная процедура требует, чтобы обычный пользователь знал пароль root, что представляет собой серьезную угрозу безопасности. По этой причине системный администратор может настроить команду sudo, чтобы позволить обычному пользователю выполнять команды от имени другого пользователя (обычно суперпользователя) очень контролируемым и ограниченным способом. Таким образом, для пользователя могут быть установлены ограничения, позволяющие ему выполнять одну или несколько конкретных привилегированных команд и никаких других.

Читайте также: разница между пользователем su и sudo

Для аутентификации с помощью sudo пользователь использует свой собственный пароль. После ввода команды нам будет предложено ввести наш пароль (не пароль суперпользователя), и если аутентификация пройдет успешно (и если пользователю предоставлены права на запуск команды), указанная команда будет выполнена.

Чтобы предоставить доступ к sudo, системный администратор должен отредактировать файл /etc/sudoers. Рекомендуется редактировать этот файл с помощью команды visudo, а не открывать его напрямую в текстовом редакторе.

visudo

При этом открывается файл /etc/sudoers с помощью vim (для редактирования файла вы можете следовать инструкциям, приведенным в разделе «Установка и использование vim в качестве редактора — часть 2 этой серии»).

Это самые актуальные строки.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Давайте посмотрим на них поближе.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Эта строка позволяет указать каталоги, которые будут использоваться для sudo, и используется для предотвращения использования пользовательских каталогов, которые могут нанести вред системе.

Следующие строки используются для указания разрешений.

root        ALL=(ALL) ALL
  1. Первое ключевое слово ALL указывает, что это правило применяется ко всем хостам.
  2. Второй ALL указывает, что пользователь в первом столбце может запускать команды с привилегиями любого пользователя.
  3. Третий ALL означает, что можно выполнить любую команду.
tecmint     ALL=/bin/yum update

Если после знака = не указан пользователь, sudo предполагает пользователя root. В этом случае пользователь tecmint сможет запустить yum update от имени пользователя root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

Директива NOPASSWD позволяет пользователю gacanepa запускать /bin/updatedb без необходимости ввода пароля.

%admin      ALL=(ALL) ALL

Знак % указывает, что эта строка относится к группе под названием «admin». Смысл остальной строки идентичен значению обычного пользователя. Это означает, что члены группы «admin» могут выполнять все команды от имени любого пользователя на всех хостах.

Чтобы увидеть, какие привилегии предоставлены вам sudo, используйте опцию «-l», чтобы перечислить их.

PAM (подключаемые модули аутентификации)

Подключаемые модули аутентификации (PAM) обеспечивают гибкость настройки конкретной схемы аутентификации для каждого приложения и/или каждой службы с использованием модулей. Этот инструмент, присутствующий во всех современных дистрибутивах Linux, позволил решить проблему, с которой часто сталкивались разработчики на заре Linux, когда каждую программу, требующую аутентификации, приходилось компилировать специально, чтобы знать, как получить необходимую информацию.

Например, при использовании PAM не имеет значения, хранится ли ваш пароль в /etc/shadow или на отдельном сервере внутри вашей сети.

Например, когда программе входа необходимо аутентифицировать пользователя, PAM динамически предоставляет библиотеку, содержащую функции для правильной схемы аутентификации. Таким образом, изменить схему аутентификации для приложения входа в систему (или любой другой программы, использующей PAM) легко, поскольку для этого требуется лишь редактирование файла конфигурации (скорее всего, файла с именем приложения, расположенного внутри /etc/pam.d). и, реже, в /etc/pam.conf).

Файлы внутри /etc/pam.d указывают, какие приложения изначально используют PAM. Кроме того, мы можем определить, использует ли определенное приложение PAM, проверив, связана ли с ним библиотека PAM (libpam):


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

На изображении выше мы видим, что libpam связан с приложением входа в систему. Это имеет смысл, поскольку данное приложение участвует в аутентификации пользователей системы, а top — нет.

Давайте рассмотрим файл конфигурации PAM для passwd – да, известной утилиты для изменения паролей пользователей. Он расположен по адресу /etc/pam.d/passwd:


cat /etc/passwd

В первом столбце указывается тип аутентификации, который будет использоваться с путь-модулем (третий столбец). Если перед типом стоит дефис, PAM не будет записывать в системный журнал, если модуль не может быть загружен, поскольку его не удалось найти в системе.

Доступны следующие типы аутентификации:

  1. account: этот тип модуля проверяет, предоставил ли пользователь или служба действительные учетные данные для аутентификации.
  2. auth: этот тип модуля проверяет, является ли пользователь тем, кем он себя называет, и предоставляет все необходимые привилегии.
  3. пароль: этот тип модуля позволяет пользователю или службе обновлять свой пароль.
  4. session: этот тип модуля указывает, что следует сделать до и/или после успешной аутентификации.

Второй столбец (называемый control) указывает, что должно произойти, если аутентификация с помощью этого модуля не удалась:

  1. реквизит: если аутентификация через этот модуль не удалась, общая аутентификация будет немедленно отклонена.
  2. required аналогичен quired, хотя все остальные перечисленные модули для этой службы будут вызываться перед отказом в аутентификации.
  3. достаточно: если аутентификация через этот модуль не удалась, PAM все равно предоставит аутентификацию, даже если предыдущая проверка, помеченная как обязательная, не удалась.
  4. необязательно: если аутентификация через этот модуль завершается неудачно или успешно, ничего не происходит, если только это не единственный модуль такого типа, определенный для этой службы.
  5. include означает, что строки данного типа следует читать из другого файла.
  6. substack аналогичен include, но неудачи или успехи аутентификации не приводят к выходу всего модуля, а только подстека.

Четвертый столбец, если он существует, показывает аргументы, которые необходимо передать модулю.

Первые три строки в /etc/pam.d/passwd (показаны выше) загружают модуль system-auth, чтобы проверить, что пользователь предоставил действительные учетные данные (учетную запись). . Если да, то это позволяет ему/ей изменить токен аутентификации (пароль), предоставив разрешение на использование passwd (auth).

Например, если вы добавите


remember=2

на следующую строку


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

в /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

последние два хешированных пароля каждого пользователя сохраняются в /etc/security/opasswd, поэтому их нельзя использовать повторно:

Краткое содержание

Навыки эффективного управления пользователями и файлами являются важными инструментами для любого системного администратора. В этой статье мы рассмотрели основы и надеемся, что вы сможете использовать ее как хорошую отправную точку для дальнейшего развития. Не стесняйтесь оставлять свои комментарии или вопросы ниже, и мы быстро ответим.