Содержание
Управление пользователями
Добавление пользователя
Добавление пользователя осуществляется при помощи команды useradd . Пример использоания:
Эта команда создаст в системе нового пользователя vasyapupkin. Чтобы изменить настройки создаваемого пользователя, вы можете использовать следующие ключи:
Ключ | Описание |
---|---|
-b | Базовый каталог. Это каталог, в котором будет создана домашняя папка пользователя. По умолчанию /home |
-с | Комментарий. В нем вы можете напечатать любой текст. |
-d | Название домашнего каталога. По умолчанию название совпадает с именем создаваемого пользователя. |
-e | Дата, после которой пользователь будет отключен. Задается в формате ГГГГ-ММ-ДД. По умолчанию отключено. |
-f | Количество дней, которые должны пройти после устаревания пароля до блокировки пользователя, если пароль не будет изменен (период неактивности). Если значение равно 0, то запись блокируется сразу после устаревания пароля, при -1 – не блокируется. По умолчанию -1. |
-g | Первичная группа пользователя. Можно указывать как GID, так и имя группы. Если параметр не задан будет создана новая группа название которой совпадает с именем пользователя. |
-G | Список вторичных групп в которых будет находится создаваемый пользователь |
-k | Каталог шаблонов. Файлы и папки из этого каталога будут помещены в домашнюю папку пользователя. По умолчанию /etc/skel. |
-m | Ключ, указывающий, что необходимо создать домашнюю папку. По умолчанию домашняя папка не создается. |
-p | Зашифрованный пароль пользователя. По умолчанию пароль не задается, но учетная пользователь будет заблокирован до установки пароля |
-s | Оболочка, используемая пользователем. По умолчанию /bin/sh. |
-u | Вручную задать UID пользователю. |
Параметры создания пользователя по умолчанию
Если при создании пользователя не указываются дополнительные ключи, то берутся настройки по умолчанию. Эти настройки вы можете посмотреть выполнив
Результат будет примерно следующий:
Если вас не устраивают такие настройки, вы можете поменять их выполнив
где -s это ключ из таблицы выше.
Изменение пользователя
Изменение параметров пользователя происходит с помощью утилиты usermod . Пример использования:
usermod использует те же опции, что и useradd.
Изменение пароля
Изменить пароль пользователю можно при помощи утилиты passwd .
и ввести старый и новый пароли.
Основные ключи passwd:
Ключ | Описание |
---|---|
-d | Удалить пароль пользователю. После этого пароль будет пустым, и пользователь сможет входить в систему без предъявления пароля. |
-e | Сделать пароль устаревшим. Это заставит пользователя изменить пароль при следующем входе в систему. |
-i | Заблокировать учетную запись пользователя по прошествии указанного количества дней после устаревания пароля. |
-n | Минимальное количество дней между сменами пароля. |
-x | Максимальное количество дней, после которого необходимо обязательно сменить пароль. |
-l | Заблокировать учетную запись пользователя. |
-u | Разблокировать учетную запись пользователя. |
Установка пустого пароля пользователя
Супер пользователь с помощью утилит командной строки passwd и usermod или путем редактирования файла /etc/shadow может удалить пароль пользователь, дав возможность входить в систему без указания пароля.
Установка пустого пароля может быть полезна как временное решение проблемы в ситуации, когда пользователь забыл свой пароль или не может его ввести из-за проблем с раскладкой клавиатуры. После этого имеет смысл принудить пользователя установить себе новый пароль при следующем входе в систему
Получение информации о пользователях
Удаление пользователя
Для того, чтобы удалить пользователя воспользуйтесь утилитой userdel . Пример использования:
userdel имеет всего два основных ключа:
Ключ | Описание |
---|---|
-f | Принудительно удалить пользователя, даже если он сейчас работает в системе. |
-r | Удалить домашний каталог пользователя. |
Управление группами
Создание группы
Программа groupadd создаёт новую группу согласно указанным значениям командной строки и системным значениям по умолчанию. Пример использования:
Ключ | Описание |
---|---|
-g | Установить собственный GID. |
-p | Пароль группы. |
-r | Создать системную группу. |
Изменение группы
Сменить название группы, ее GID или пароль можно при помощи groupmod . Пример:
Ключ | Описание |
---|---|
-g | Установить другой GID. |
-n | Новое имя группы. |
-p | Изменить пароль группы. |
Удаление группы
Удаление группы происходит так:
groupdel не имеет никаких дополнительных параметров.
Файлы конфигурации
Изменять параметры пользователей и групп можно не только при помощи специальных утилит, но и вручную. Все настройки хранятся в текстовых файлах. Описание каждого из них приведено ниже.
/etc/passwd
В файле /etc/passwd хранится вся информация о пользователях кроме пароля. Одна строка из этого файла соответствует описанию одного пользователя. Примерное содержание строки таково:
Строка состоит из нескольких полей, каждое из которых отделено от другого двоеточием. Значение каждого поля приведено в таблице.
№ | Поле | Описание |
---|---|---|
1 | vasyapupkin | Имя пользователя для входа в систему. |
2 | x | Необязательный зашифрованный пароль. |
3 | 1000 | Числовой идентификатор пользователя (UID). |
4 | 1000 | Числовой идентификатор группы (GID). |
5 | Vasya Pupkin | Поле комментария |
6 | /home/vpupkin | Домашний каталог пользователя. |
7 | /bin/bash | Оболочка пользователя. |
Второе и последнее поля необязательные и могут не иметь значения.
/etc/group
В /etc/group, как очевидно из названия хранится информация о группах. Она записана в аналогичном /etc/passwd виде:
№ | Поле | Описание |
---|---|---|
1 | vasyapupkin | Название группы |
2 | x | Необязательный зашифрованный пароль. |
3 | 1000 | Числовой идентификатор группы (GID). |
4 | vasyapupkin,petya | Список пользователей, находящихся в группе. |
В этом файле второе и четвертое поля могут быть пустыми.
/etc/shadow
Файл /etc/shadow хранит в себе пароли, по этому права, установленные на этот файл, не дают считать его простому пользователю. Пример одной из записей из этого файла:
№ | Поле | Описание |
---|---|---|
1 | vasyapupkin | Имя пользователя для входа в систему. |
2 | $6$Yvp9VO2s$VfI0t.o754QB3HcvVbz5hlOafmO.LaHXwfavJHniHNzq/bCI3AEo562hhiWLoBSqxLy7RJJNm3fwz.sdhEhHL0 | Необязательный зашифрованный пароль. |
3 | 15803 | Дата последней смены пароля. |
4 | Минимальный срок действия пароля. | |
5 | 99999 | Максимальный срок действия пароля. |
6 | 7 | Период предупреждения о пароле. |
7 | Период неактивности пароля. | |
9 | Дата истечения срока действия учётной записи. |
Управление пользователями и группами через GUI
В текущей версии Ubuntu отсутствует штатная утилита управления группами пользователей системы, поэтому по умолчанию все действия с группами необходимо выполнять в консоли. Однако для этих целей существует специальная утилита «Пользователи и группы».
Установка
Пакет gnome-system-tools находится в репозитории Ubuntu, поэтому ставится одной командой:
Управление группами
Для добавления, удаления групп, а также добавленияудаления пользователей виз конкретных групп, необходимо в главном окне нажать кнопку «Управление группами», после чего вы увидите окно, отображающее все присутствующие в системе группы: в котором выбрав нужную группу и нажав «Свойства» можно отметить галочкой пользователей, которых необходимо внести в группу.
Основа распределения прав доступа в операционной системе Linux лежит на понятии пользователь. Пользователю-владельцу файла выдаются определенные полномочия для работы с ним, а именно на чтение, запись и выполнение. Также отдельно устанавливаются полномочия на чтение, запись и выполнение для всех остальных пользователей. Поскольку в Linux все есть файлом, то такая система позволяет регулировать доступ к любому действию в этой операционной системе с помощью установки прав доступа на файлы. Но еще при создании Linux, разработчики поняли, что этого явно недостаточно.
Поэтому и были придуманы группы пользователей. Пользователи могут объединяться в группы, чтобы уже группам выдавать нужные полномочия на доступ к тем или иным файлам, а соответственно и действиям. В этой статье мы рассмотрим группы пользователей в Linux, рассмотрим зачем они нужны, как добавить пользователя в группу и управлять группами.
Что такое группы?
Как я уже сказал группы в Linux появились еще в самом начале разработки этой операционной системы. Они были разработаны для того, чтобы расширить возможности управления правами. Разберем небольшой пример, возьмем организацию в которой есть только один компьютер, у нас есть администраторы и пользователи. У каждого человека свой аккаунт на нашем компьютере. Администраторы могут настраивать систему, пользователям же лучше не давать воли, чтобы что-то не сломали. Поэтому администраторы объединяются в группу admin, и ей дается доступ ко всему оборудованию, реально же ко всем файлам в каталоге dev, а пользователи, объеденные в группу users, и этой группе дается возможность читать и записывать файлы в общий каталог, с помощью которого они могут обмениваться результатами своей работы. Мы могли бы назначать права для каждого пользователя отдельно разрешая ему доступ к тому или иному файлу, но это слишком неудобно. Поэтому и были придуманы группы. Говорите, да ничего, можно назначить? Ну а теперь представьте что наши пользователи – это процессы. Вот тут вся краса групп выходит на передний план, группы используются не столько для обеспечения доступа для пользователей, сколько для управления правами программ, особенно их доступом к оборудованию. Для сервисов создаются отдельные группы и пользователь, от имени которого запущен он, сервис может состоять в нескольких группах, что обеспечивает ему доступ к определенным ресурсам.
А теперь давайте рассмотрим как посмотреть группы linux.
Группы в Linux
Все группы, созданные в системе, находятся в файле /etc/group. Посмотрев содержимое этого файла, вы можете узнать список групп linux, которые уже есть в вашей системе. И вы будете удивлены.
Кроме стандартных root и users, здесь есть еще пару десятков групп. Это группы, созданные программами, для управления доступом этих программ к общим ресурсам. Каждая группа разрешает чтение или запись определенного файла или каталога системы, тем самым регулируя полномочия пользователя, а следовательно, и процесса, запущенного от этого пользователя. Здесь можно считать, что пользователь – это одно и то же что процесс, потому что у процесса все полномочия пользователя, от которого он запущен.
Давайте подробнее рассмотрим каждую из групп, чтобы лучше понимать зачем они нужны:
- daemon – от имени этой группы и пользователя daemon запускаютcя сервисы, которым необходима возможность записи файлов на диск.
- sys – группа открывает доступ к исходникам ядра и файлам include сохраненным в системе
- sync – позволяет выполнять команду /bin/sync
- games – разрешает играм записывать свои файлы настроек и историю в определенную папку
- man – позволяет добавлять страницы в директорию /var/cache/man
- lp – позволяет использовать устройства параллельных портов
- mail – позволяет записывать данные в почтовые ящики /var/mail/
- proxy – используется прокси серверами, нет доступа записи файлов на диск
- www-data – с этой группой запускается веб-сервер, она дает доступ на запись /var/www, где находятся файлы веб-документов
- list – позволяет просматривать сообщения в /var/mail
- nogroup – используется для процессов, которые не могут создавать файлов на жестком диске, а только читать, обычно применяется вместе с пользователем nobody.
- adm – позволяет читать логи из директории /var/log
- tty – все устройства /dev/vca разрешают доступ на чтение и запись пользователям из этой группы
- disk – открывает доступ к жестким дискам /dev/sd* /dev/hd*, можно сказать, что это аналог рут доступа.
- dialout – полный доступ к серийному порту
- cdrom – доступ к CD-ROM
- wheel – позволяет запускать утилиту sudo для повышения привилегий
- audio – управление аудиодрайвером
- src – полный доступ к исходникам в каталоге /usr/src/
- shadow – разрешает чтение файла /etc/shadow
- utmp – разрешает запись в файлы /var/log/utmp /var/log/wtmp
- video – позволяет работать с видеодрайвером
- plugdev – позволяет монтировать внешние устройства USB, CD и т д
- staff – разрешает запись в папку /usr/local
Теперь, когда вы знаете зачем использовать группы в linux и какие они есть по умолчанию, рассмотрим управление группами LInux.
Управление группами Linux
Управлять группами можно и с помощью графического интерфейса. В KDE есть программа Kuser специально предназначенная для этого, в Gnome это выполняется с помощью настроек системы. Кроме того, в популярных дистрибутивах есть отдельные инструменты, такие как YaST в OpenSUSE или Настройки Ubuntu. Но с графическим интерфейсом я думаю вы разберетесь. А мы рассмотрим управление группами linux через терминал. Сначала разберемся с файлами, а уже потом с пользователями.
При создании файла ему назначается основная группа пользователя который его создал. Это просто например:
Здесь вы можете видеть, что владелец всех папок sergiy и группа тоже sergiy. Правильно, так как эти пользователи были созданы мной. Но давайте пойдем дальше:
Здесь мы видим что дисковым устройствам sd* назначена группа disk, а это все значит, что пользователь, состоящий в этой группе, может получить к ним доступ. Или еще пример:
Все как мы рассматривали в предыдущем пункте. Но эти группы могут быть не только установлены системой, но и вы сами вручную можете менять группы файлов для этого есть команда chgrp:
chgrp имя_группы имя_файла
Например создадим файл test:
И изменим для него группу:
Теперь этот файл смогут прочитать все пользователи из группы adm.
Если вы хотите создать группу linux, это можно сделать командой newgrp:
sudo groupadd test
С пользователями ситуация немного сложнее. Пользователь имеет основную группу, она указывается при создании, а также несколько дополнительных. Основная группа отличается от обычных тем, что все файлы в домашнем каталоге пользователя имеют эту группу, и при ее смене, группа этих каталогов тоже поменяется. Также именно эту группу получают все файлы созданные пользователем. Дополнительные группы нужны, чтобы мы могли разрешить пользователям доступ к разным ресурсам добавив его в эти группы в linux.
Управление группами Linux для пользователя выполняется с помощью команды usermod. Рассмотрим ее синтаксис и опции:
$ usermod опции имя_пользователя
- -G – дополнительные группы, в которые нужно добавить пользователя
- -g изменить основную группу для пользователя
- -R удалить пользователя из группы.
Добавить пользователя в группу можно командой usermod:
sudo usermod -G -a имя_группы имя_пользователя
Можно добавить пользователя в группу linux временно, командой newgrp. Откроется новая оболочка, и в ней пользователь будет иметь нужные полномочия, но после закрытия все вернется как было:
sudo newgrp имя_группы
Для примера давайте добавим нашего пользователя в группу disk, чтобы иметь прямой доступ к жестким дискам без команды sudo:
sudo usermod -G -a disk sergiy
Теперь вы можете монтировать диски без команды sudo:
mount /dev/sda1 /mnt
Посмотреть группы linux, в которых состоит пользователь можно командой:
Также можно использовать команду id. В первом случае мы просто видим список групп linux, во втором дополнительно указанны id группы и пользователя. Чтобы включить пользователя в группу Linux, для основной группы используется опция -g:
sudo usermod -g test sergiy
Теперь все каталоги в домашней папке пользователя имеют группу test. Удалить пользователя из группы в linux можно той же командой с опцией R:
sudo usermod -R группа пользователь
Ну и наконец, удалить группу Linux можно командой:
sudo delgroup имя_группы
Выводы
Как видите, группы пользователей Linux не такое уж сложное дело. Вы можете в несколько команд добавить пользователя в группу linux или дать ему полномочия на доступ к определенным ресурсам. Если вы надумали изменять группы для системных устройств, тут все не так просто, но в этом вопросе вам поможет статья про правила udev в linux. Теперь управление группами Linux вам не кажется таким сложным. Если остались вопросы, пишите в комментариях!
Будучи новичком в администрировании Linux, я немного запутался в следующих командах:
Я только что закончил читать книгу администрирования пользователей в руководстве администратора Linux /Unix, но некоторые вещи все еще немного туманны.
В основном useradd кажется достаточно прямым:
Я могу добавить «David Hilbert» с именем пользователя hilbert , установив свой каталог по умолчанию, оболочку и группы. И я думаю, что -g является его основной /стандартной группой и -G – его другие группы.
Итак, это мои следующие вопросы:
- Будет ли эта команда работать, если группы faculty и famous не существует? Будет ли это просто создавать их?
- Если нет, какую команду я могу использовать для создания новых групп?
- Если я удалю пользователя hilbert , и нет других пользователей в этих группах, они все еще будут существовать? Должен ли я их удалить?
- После выполнения команды useradd , как удалить David из famous и переназначить свою основную группу на hilbert , который еще не существует?