- Права, пользователи и прочее в Linux (часть 2)
- Что такое пользователи?
- Что имеет каждый пользователь в linux системе?
- Что такое группы?
- Как узнать, какие пользователи есть в системе?
- Создание пользователя
- Добавление и изменение дополнительной информации
- Задаем или изменяем пароль
- Удаление пользователя
- Управление группами
- Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.
- Особенности управления пользователями в Linux
- Управление базами данных пользователей и групп в Linux
- Файл /etc/passwd
- Файл /etc/group
- Файл /etc/shadow
- Файл /etc/gshadow
Права, пользователи и прочее в Linux (часть 2)
В далеком 2011 мы выживали как могли я написал небольшую заметку про атрибуты файлов и директорий и то как их изменять, но вот про основы пользователей и групп так и не написал.. Ну пришло время исправиться, тем более я обещал)
В данной статье мы рассмотрим, что такое пользователи в Linux, как их смотреть, как их создавать, изменять и удалять, а так же, как рулить группами пользователей. Поехали?
Что такое пользователи?
По факту это любой кто использует компьютер. Имя пользователя это как правило его псевдоним, логин, который может состоять из букв Eng алфавита, арабских чисел и нижнего подчеркивания. Использовать можно любое имя кроме root, hal и adm, так как эти имена являются зарезервированными системой именами. Кроме логина в системе может храниться и полное имя реального пользователя, что иногда, при администрировании бывает полезным.
Что имеет каждый пользователь в linux системе?
- домашняя папка — для каждого пользователя создается своя домашняя директория в директории /home. Там могут храниться все его личные данные;
- командная оболочка — каждый пользователь имеет свою командную оболочку (командный интерпретатор), например /bin/bash, bin/sh и другие. (по умолчанию, как правило, используется /bin/bash)
- личный идентификатор (User ID) — каждый пользователь нумеруется, чтобы система могла отслеживать его, ибо она это делает только по uid пользователя
- пароль — естественно, каждый пользователь имеет свой пароль, которых храниться в зашифрованном виде (encripted)
- группа — и каждый пользователь может находиться в одной или более группе, о них мы поговорим немного подробнее..
Что такое группы?
Чтобы администраторам было проще разделять полномочия между пользователями, в Linux системах существуют группы, поэтому для каждого файла в linux системе определяется не только пользователь но и группа. По факту группы нужны для того, чтобы предоставить одинаковые полномочия на файлы или какие-нибудь действия. И опять же, каждая группа имеет свой уникальный идентификатор — GID (GroupID)
Как узнать, какие пользователи есть в системе?
Информация о пользователях храниться в файле /etc/passwd в виде строк, одна строка — это один пользователь, и эта строка имеет следующий формат:
а расшифровывается она следующим образом:
- account — логин пользователя
- password — зашифрованный пароль пользователя
- UID — id пользователя (uid создается более 1000)
- GID — id основной группы (gid создается более 100)
- GECOS — дополнительная информация о пользователе (не обязательно)
- directory — домашний каталог ($HOME) пользователя
- shell — командный интерпретатор пользователя (обычно /bin/sh)
Чтобы посмотреть какие пользователи существуют в системе, достаточно набрать следующую команду:
Ну и никто не запрещает посмотреть активных в данный момент пользователей:
Создание пользователя
При создании пользователя, нужно выполнить ряд следующих действий:
- создается запись в /etc/passwd
- создается домашний каталог пользователя (/home/username)
- устанавливаются необходимые права
- назначается необходимая командная оболочка
- модифицируются конфигурационные файлы прочих приложений
Чтобы как то упростить жизнь администраторам, существует специальная утилита useradd. Настройки этой утилиты хранятся в файле /etc/default/useradd, в котором можно изменить применяемые новым пользователям параметры по умолчанию.
Чтобы создать нового пользователя lolosh в группе users и lalki достаточно набрать следующую команду:
расшифровывается эта команда следующим образом:
Что означают эти ключи:
- m — создаёт домашний каталог, вида /home/[имя пользователя]
- -g — имя или номер основной группы пользователя
- -G — список дополнительных групп, в которые входит пользователь
- -s — определяет командную оболочку пользователя.
Подробнее узнать о том, что умеет эта утилита можно почитать в man страницах.
Добавление и изменение дополнительной информации
Для того, чтобы наделить пользователя дополнительной информацией, можно воспользоваться командой chfn. Рассмотрим что мы можем добавить:
Подробнее, о возможностях этой команды читайте man.
Задаем или изменяем пароль
Для того, чтобы задать пользователю пароль, достаточно воспользоваться следующей командой:
далее программа дважды попросит ввести новый пароль.
Если мы хотим, чтобы пользователь сменил пароль при первом входе, можно воспользоваться следующей командой:
Так же еще можно установить срок годности учетной записи и многое другое, подробно можно почитать man.
Удаление пользователя
Удалить пользователя можно следующей командой:
Обратите внимание, с указанным ключом -r удаляется и его домашняя директория.
Управление группами
Тут так же нет ничего сложного. Чтобы просмотреть список существующих групп, достаточно отобразить файл /etc/group:
чтобы посмотреть в каких группах обитает определенный пользователь, можно воспользоваться двумя командами, а именно простым выводом:
и более подробным выводом:
Чтобы создать новую группу, введите следующее:
Для добавления пользователя в эту группу, достаточно ввести:
Чтобы убрать из группы пользователя, достаточно ввести
Для удаления группы из системы, можно ввести следующее:
На этом, пожалуй, все. Если есть чем дополнить, то пишите комментарии.
Источник
Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.
В своих прошлых постах блога я уже затрагивал тему пользователей в операционной системе Linux. Например в теме о правах доступа в Linux я затрагивал вопросы принадлежности пользователя к группе, а так же то, что пользователи и группы имеют свои UID и GID. Так же поднималась тема о сбросе пароля пользователя root. Сегодня я бы хотел систематизировать знания о базе локальных пользователей в Linux, о том, как управлять пользователями и о файлах, отвечающих за управление пользователями.
Linux — это многопользовательская операционная система. Каждый пользователь в Linux принадлежит одной основной группе и одной или нескольким дополнительным группам. В Linux, как и в большинстве других операционных системах работа с пользователями заключается в наборе следующих манипуляций: добавление пользователя/группы, удаление пользователя/группы, модификация настроек пользователя/группы. Данные манипуляции производятся с помощью команд: useradd, groupadd, userdel, groupdel, usermod, groupmod, а так же passwd, gpasswd, id. Более подробно: Описание команд управления пользователями Linux. Существуют так же и графические средства администрирования пользователями, обычно они расположены в оболочке X в разделе Администрирование — Пользователи и группы.
Особенности управления пользователями в Linux
Пример добавления пользователя с помощью шелла:
В примере мы добавляем группу для нового пользователя (groupadd), далее создаем нового пользователя с полным именем Test Test, имеющего основную группу test и логин test, далее задаем пароль для пользователя test (passwd test) и проверяем параметры созданного пользователя (id и созданный каталог пользователя /home/test/). В листинге видно, что UID и GID — более 1000. Данная особенность является признаком обычного пользователя. Значения ниже (меньше) 1000 (а в некоторых дистрибутивах — меньше 500) указывают на то, что пользователь является системным пользователем.
В соответствии с соглашением, системные пользователи обычно имеют id меньше, чем 100, а пользователь root имеет id, равный 0. Автоматическая нумерация обычных пользователей начинается со значения UID_MIN, установленного в файле /etc/login.defs, это значение обычно установлено в 500 или 1000.
Помимо учетных записей обычных пользователей и учетной записи пользователя root, обычно в системе бывает несколько учетных записей специального назначения для демонов, таких как FTP, SSH, mail, news и т.д. Такие учетные записи часто управляют файлами, но к ним невозможно получить доступ путем обычной регистрации в системе. Поэтому обычно они имеют login shell, определенный как /sbin/nologin или /bin/false, чтобы попытки зарегистрироваться в системе терпели неудачу.
В некоторых системах, команда(ы) добавления пользователей имеют расширенный функционал. То есть, для примера, команда useradd в дистрибутивах Fedora и Red Hat по умолчанию, для нового пользователя создает новую группу и для отмены данной функции, необходимо использовать опцию -n. Для уточнения таких вопросов, необходимо обратиться к документации дистрибутива.
При удалении пользователя, его каталог не удаляется. В результате можно получить интересную ситуацию:
В приведенном примере мы удаляем пользователя и группу test, созданную ранее. При этом каталог данного пользователя остался не тронутым. Как видно из листинга, права у каталога остались для id 1001. Далее мы создаем нового пользователя и группу, но уже с другим именем — test123. Данному пользователю присваивается UID и GID — ранее существующего пользователя test. Посмотрев список каталогов, начинающиеся на /home/test* с ключом -n и без него, видим, что получилось — каталог пользователя test стал принадлежать пользователю test123, о чем нам говорят права доступа -rw-r—r— test123 test123. Входим в систему под пользователем test123 и для проверки прав доступа, в каталоге /home/test пробуем удалить файл, а так же пробуем удалить файл из каталога третьего пользователя — mc-sim. Данный пример хорошо иллюстрирует, что в Linux все привязано к идентификаторам.
Управление базами данных пользователей и групп в Linux
Основные файлы, содержащие информацию о пользователях и группах, — это четыре файла в каталоге /etc.
/etc/passwd
файл паролей, содержащий основную информацию о пользователях
/etc/shadow
файл теневых шифрованных паролей, содержащий зашифрованные пароли
/etc/group
файл групп, содержащий основную информацию о группах и принадлежащих этим группам пользователях
/etc/gshadow
файл теневых групп, содержащий шифрованные пароли групп
Данные файлы редактировать обычным текстовым редактором крайне не рекомендуется. Они (файлы), обновляются при выполнении вышеуказанных команд, при этом при изменении — блокируются и синхронизируются.
Если все же есть острая необходимость в редактировании указанный файлов, то при помощи команды vipw можно безопасно редактировать файл /etc/passwd, а при помощи команды vigr безопасно редактировать файл /etc/group. Эти команды заблокируют необходимые файлы на то время, пока при помощи редактора vi будут производиться изменения. Если вы вносите изменения в файл /etc/passwd, команда vipw подскажет, что необходимо проверить, не нужно ли обновить и файл /etc/shadow. Подобным образом, если вы обновляете файл /etc/group при помощи команды vigr, вы получите подсказку, что необходимо обновить и файл /etc/gshadow. Если необходимо удалить администраторов группы, необходимо использовать команду vigr, поскольку команда gpasswd позволяет только добавлять администраторов.
Обращаю внимание, что в современных системах, файлы passwd и group не хранят пароли в открытом виде. Это сделано из соображений безопасности. Сами файлы passwd и group должны быть доступными для чтения для всех, а зашифрованные пароли — недоступными для чтения для всех. Поэтому зашифрованные пароли хранятся в теневых файлах, и эти файлы доступны для чтения только пользователю root. Необходимый доступ для изменения аутентификационных данных обеспечивается при помощи suid-программы, которая имеет полномочия пользователя root, но может быть запущена любым пользователем.
Файл /etc/passwd
Файл /etc/passwd содержит одну строку для каждого пользователя системы. Каждая строка содержит семь полей, разделенных двоеточиями (:), описание полей на примере пользователя root:
поле | значение | описание |
Имя пользователя | root | имя, используемое для входа в систему (логин) |
Пароль | x | пароль пользователя (если зашифрован, используется символ — x) |
id пользователя (UID) | 0 | Идентификатор пользователя |
id группы (GID) | 0 | Идентификатор группы |
Комментарий | root | Необязательное поле, используемое для описания пользователя. Например, для указания полного имени. Это поле может содержать несколько разделенных запятыми записей. |
Домашний каталог | /root | Абсолютный путь для домашнего каталога пользователя. |
Командная оболочка | /bin/bash | Программа, которая автоматически запускается при входе пользователя в систему. Обычно это интерактивный shell, такой как /bin/bash или /bin/sh, но это может быть и другая программа, не обязательно интерактивный shell. |
Файл /etc/group
Файл /etc/group содержит одну строку для каждой группы системы.Каждая строка содержит четыре поля, разделенных двоеточиями (:), описание на примере группы root:
поле | значение | описание |
Имя группы | root | Имя группы |
Пароль | x | пароль группы (если зашифрован, используется символ — x) |
id группы (GID) | 0 | идентификатор группы |
Члены группы | Разделенный запятыми список членов группы, за исключением тех членов, для которых это группа является основной. |
Файл /etc/shadow
Файл /etc/shadow должен быть доступен для чтения только для пользователя root. Пароли могут быть зашифрованы при помощи DES, но чаще для шифрования используется MD5. Описание полей файла:
поле | значение | описание |
имя пользователя | test123 | имя, используемое для входа в систему (логин) |
Зашифрованный пароль | $1$.ArJtddq$H399O2dO6aDa99UmDjJ7/1 | Пароль в зашифрованном виде |
количество дней | 14959 | количество дней с 1 января 1970, после которых производилось последнее изменение пароля |
количество дней | 0 | количество дней до смены пароля |
количество дней | 99999 | количество дней, после которых пользователь должен сменить пароль |
количество дней | 7 | количество дней, после которых пользователь получает предупреждение о необходимости смены пароля |
количество дней | пусто | количество дней, после истечения срока действия пароля, после которых учетная запись блокируется |
количество дней | пусто | количество дней, с 1 января 1970, до которых действует учетная запись |
количество дней | пусто | зарезервированное поле |
Файл /etc/gshadow
Файл /etc/gshadow содержит информацию о группах, состоит из четырех полей для каждой записи:
поле | значение | описание |
Имя группы | test123 | Имя группы |
Пароль | ! | Поле используется для хранения зашифрованного пароля, если у группы имеется пароль. Если группа не имеет пароля, здесь можно увидеть ‘x’, ‘!’ или ‘!!’. |
Администраторы | пусто | Разделенный запятыми список администраторов группы. |
Члены группы | пусто | Разделенный запятыми список членов группы. |
Вот такая ситуация с пользователями в Linux.
Подведу маленький итог:
Пользователи в Linux управляются командами указанными тут. Информация о пользователях и группах храниться в четырех файлах /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow. Данные файлы не редактируются стандартным редактором, только специальными командами управления пользователями и группами (useradd, userdel, usermod, groupadd, groupdel, groupmod, passwd и т.д.) или специальными командами редактирования (vipw, vigr и т.д.). Формат содержимого файлов представляет собой несколько строк, каждая из которых соответствует одному пользователю или группе.
Источник