Какой uid у пользователя sit2 в какие группы он входит

от admin

Лабораторная работа №2 Работа с пользователями. Управление правами доступа. Управление файлами и каталогами. Ссылки.

Цель работы: Изучить возможности Linux при работе с пользователями и управлении правами доступа.

Рассмотреть концепцию Linux при работе с пользователями;

Изучить управление базами данных пользователей;

Рассмотреть возможности манипулирования доступом к данным.

Работа с пользователями

Linux — это многопользовательская операционная система. Каждый пользователь в Linux принадлежит одной основной группе и одной или нескольким дополнительным группам. В Linux, как и в большинстве других операционных системах, работа с пользователями заключается в наборе следующих манипуляций: добавление пользователя/группы, удаление пользователя/группы, модификация настроек пользователя/группы. Данные манипуляции производятся с помощью команд: useradd, groupadd, userdel, groupdel, usermod, groupmod, а так же passwd, gpasswd, id. Существуют так же и графические средства администрирования пользователями, обычно они расположены в оболочке X в разделе Администрирование — Пользователи и группы. Однако, при администрировании Linux использование графических оболочек не приветствуется.

Каждый пользователь в системе имеет свой уникальный идентификационный номер (user-ID, или UID). Также пользователи могут объединяться в группы, которые в свою очередь имеют group-ID, или GID. Чтобы узнать свой UID и GID, т.е. уникальный номер пользователя и номер группы, к которой вы принадлежите, необходимо ввести команду id (рис. 2.1).

Рис. 2.1. Отобразить UID и GID

Пример добавления пользователя (рис. 2.2.):

Рис. 2.2. Добавление нового пользователя

В примере мы добавляем группу для нового пользователя (groupadd), далее создаем нового пользователя с полным именем Test Test, имеющего основную группу test и логин test, далее задаем пароль для пользователя test (passwd test) и проверяем параметры созданного пользователя (id и созданный каталог пользователя /home/test/). На рис. 2.2 видно, что 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, чтобы попытки зарегистрироваться в системе терпели неудачу.

Управление базами данных пользователей и групп в 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, но может быть запущена любым пользователем.

Операционная система Linux — это многопользовательская система, которая дает огромные возможности манипулирования доступом к данным для каждого пользователя отдельно. Это позволяет гибко регулировать отношения между пользователями, объединяя их в группы, что позволит защитить данные одного пользователя от нежелательного вмешательства других.

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

В UNIX-подобных системах файлы также обеспечивают доступ к периферийным устройствам, дисковым накопителям, принтерам и т.п.

Права доступа к файлам

В свою очередь файлы имеют двух владельцев: пользователя (user owner) и группу пользователей (group owner). Для каждого файла есть индивидуальные права доступа, которые разбиты на три группы:

Доступ для пользователя-владельца файла (owner).

Доступ для группы-владельца файла (group).

Доступ для остальных пользователей (others).

Для каждой категории устанавливаются три вида доступа: (x) — право на запуск файла, (r) — право на чтение файла, (w) — право на изменение (редактирование) файла.

Для того, чтобы увидеть права доступа к файлам необходимо ввести команду ls с ключом –l (рис. 2.3).

Рис. 2.3. Просмотр прав доступа к файлу

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

Изменение прав доступа

Права пользователя могут быть изменены только владельцем файла или пользователем с правами администратора системы. Для изменения прав используется команда:

chmod[u|g|o|a] [+|-|=] [r|w|x] name1 [name2 . ]

В качестве аргументов команда принимает указание классов доступа («u» — владелец-пользователь, «g» — владелец-группа, «o» — остальные пользователи, «a» — все вышеперечисленные группы вместе), права доступа («r» — чтение, «w» — запись, «x» — выполнение) и операцию, которую необходимо произвести («+» — добавить, «-» -убрать, «=» — присвоить).

Таким образом, чтобы разрешить выполнение файла ip, который находиться в директории /home/work/Загрузки всем пользователем необходимо выполнить команду (рис. 2.4):

Рис. 2.4. Команда, выдающая права на исполнение файла

Далее, чтобы оставить права записи только для владельца файла необходимо выполнить (рис.2.5):

Рис. 2.5. Команда, повзоляющая оставить права записи только для владельца файла

Рассмотрим еще несколько примеров:

chmod go=w ip — установить право на запись для всех пользователей кроме владельца;

chmod a+x ip — предоставить право на запись для всех пользователей;

chmod g+x-w ip — добавить для группы право на выполнения файла, но снять право на запись.

Права доступа можно представить в виде битовой строки, в которой каждые 3 бита определяют права доступа для соответствующей категории пользователей, как представлено в таблице 2.1:

Представление прав доступа в виде битовой строки

Таким образом, для команды chmod 666 ip имеем (рис. 2.6):

Рис. 2.6. Пример испоьлзования команды chmod

chmod 644 имя_файла

устанавливает «обычные» права доступа, т.е. владелец может читать и записывать в файл, а все остальные пользователи — только читать.

Особенности прав доступа для каталогов

Права доступа для каталогов не столь очевидны. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет Вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -l), системы придется «заглянуть» в метаданные файлов, что требует права на выполнения для каталога. Право на выполнение также потребуется для каталога, в который Вы захотите перейти (т.е. сделать его текущим) с помощью команды cd.

T-бит, SUID и SGID

Помимо стандартных «rwx» значений существуют еще и буквы «s» и «t». В действительности, битовая маска прав доступа к файлам содержит 4 группы по 3 бита в каждой. Таким образом, команда chmod 755 это всего лишь краткая запись полной формы команды: chmod 0755.

T-бит обычно используется с каталогами. Обычно, когда t-бит для каталога не установлен, файл в данном каталоге может удалить любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на каталог мы меняем это правило таким образом, что удалить файл из каталога может только владелец этого каталога или файла.

Установить t-бит можно при помощи команд:

chmod a+tw имя_файла

chmod 1777 имя_файла

Атрибуты SUID и SGID позволяют изменить права пользователя при запуске на выполнения файла, имеющего эти атрибуты.

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

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

В ОС Linux следует различать физическую файловую систему, которая отвечает за управление дисковым пространством и размещение файлов в физических адресах диска и логическую файловую систему, которая обеспечивает логическую структуру хранения файлов — пространство имен файлов. ОС Unix и Linux могут работать с различными физическими файловыми системами (Ext2, ext3, ufs), логическое же представление файловой системы в Unix/Linux структурировано. Все файлы в логической файловой системе располагаются в виде дерева, промежуточные вершины которого соответствуют каталогам, и листья — файлам и пустым каталогам. Реально на каждом логическом диске (разделе физического дискового пакета) располагается отдельная иерархия каталогов и файлов. Для получения общего дерева в динамике используется «монтирование» отдельных иерархий к фиксированной корневой файловой системе в качестве ветвей общего дерева. Самым верхом иерархии является корень, который имеет предопределенное имя «/» (слэш). Этот же символ используется как разделитель имен в пути. Далее в корне находятся папки с определенными для каждого дистрибутива именами (etc, home, bin, mnt, proc и т.д.).

Полное имя файла, например, /bin/sh означает, что в корневом каталоге должно содержаться имя каталога bin, а в каталоге bin должно содержаться имя файла sh. Коротким или относительным именем файла называется имя, задающее путь к файлу от текущего рабочего каталога. В каждом каталоге содержатся два специальных имени, имя «.» — ссылка на текущий каталог, и имя «. » — ссылка «родительский» каталог данного текущего каталога, т.е. каталог, непосредственно предшествующий данному в иерархии каталогов. Так, например, для структуры, показанной на рис. 2.7 доступ к файлу file2 из текущего каталога (laba) возможен по полному имени: /home/myvar/file2 или по относительному имени: . /. /. /myvar/file2.

Рис. 2.7. Пример дерева каталогов

ОС LINUX поддерживают несколько типов файлов:

Обычные файлы (или регулярные) — представляют собой последовательность байтов. Это текстовые, исполняемые файлы и т.д. Данный тип файла отображается командой ls -l в виде «-» (черточки).

Каталоги — представляют собой особый вид файлов, которые хранятся во внешней памяти подобно обычным файлам, но их структура поддерживается самой файловой системой. Данный тип файла отображается командой ls -l в виде символа «d».

Специальные файлы устройств, бывают блочные и символьные. Данный тип файла отображается командой ls -l в виде символа «b» или «с» соответственно. Специальные файлы не хранят данные. Они обеспечивают механизм отображения физических внешних устройств в имена файлов файловой системы. Каждому устройству, поддерживаемому системой, соответствует, по меньшей мере, один специальный файл. При выполнении чтения или записи по отношению к специальному файлу, производится прямой вызов соответствующего драйвера устройства. При этом имена специальных файлов можно использовать практически всюду, где можно использовать имена обычных файлов.

Ссылка (link). Данный тип файла отображается командой ls -l в виде символа «l». Файловая система UNIX/LINUX обеспечивает возможность связывания одного и того же файла с разными именами.

Именованный программный канал (pipe) — одно из средств межпроцессных взаимодействий (IPC) в ОС UNIX/LINUX. Данный тип файла отображается командой ls -l в виде символа «p». Именованному программному каналу обязательно соответствует элемент некоторого каталога.

Сокет (socket)- предоставляют весьма мощный и гибкий IPC. Данный тип файла отображается командой ls -l в виде символа «s». Они могут использоваться для организации взаимодействия программ на одном компьютере, по локальной сети или через Internet, что позволяет создавать распределённые приложения различной сложности. Кроме того, с их помощью можно организовать взаимодействие с программами, работающими под управлением других операционных систем.

Существуют жесткие и мягкие ссылки.

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

Мягкие (символические) ссылки тоже могут рассматриваться как дополнительные имена файлов, но в то же время они представляются отдельными файлами — файлами типа мягких ссылок и являются самостоятельным типом файла. Однако блоки данных файла в системе представляются в одном экземпляре, у файла-ссылки адреса блоков данных те же, что и у исходного файла. В отличие от жестких ссылок мягкие ссылки могут указывать на файлы, расположенные в другой файловой системе, например, на монтируемом носителе, или даже на другом компьютере. Если исходный файл удален, мягкая ссылка не удаляется, но становится бесполезной. Используйте мягкие ссылки в тех случаях, когда хотите избежать путаницы, связанной с применением жестких ссылок.

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

Для создания ссылки, используется команда ln (рис. 2.8):

ln [-f] файл1 [файл2 . ] целевой_файл

Команда ln делает целевой_файл ссылкой на файл1. Файл1 не должен совпадать с целевым_файлом. Если целевой_файл является каталогом, то в нем создаются ссылки на файл1, файл2. с теми же именами. Только в этом случае можно указывать несколько исходных файлов. Если целевой_файл существует и не является каталогом, его старое содержимое теряется. Аргументы: -f — удаление существующего целевого файла; -s – создание мягкой ссылки (по умолчанию создается жесткая ссылка).

Рис. 2.8. Пример создания ссылки

Управление файлами также можно выполнять с помощью Midnight Commander (mc) — один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных систем. Запуск mc из консоли выполняется с помощью команды mc.

Установить файловый менеджер mc так, как показано на рис. 2.9.

Рис. 2.9. Установка mc

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

запустить программу (ввод команды mc);

используя клавиши управления курсором и клавишу «Enter», добраться до нужного файла и выбрать его;

нажатием клавиши «F4» открыть файл для редактирования;

внести необходимые изменения;

сохранить их (клавиша «F2»);

выйти из режима редактирования (клавиша «F10»).

Просмотр файла выполняется аналогично, только клавишей «F3».

Выйти из mc можно тоже клавишей «F10». Общий вид mc приведен на рис. 2.10.

Рис. 2.10. Midnight Commander

Задания к лабораторной работе:

Выведите на экран UID и GID своего пользователя;

Создайте группу пользователей с именем usersGroup;

Создайте пользователя myUser в группе usersGroup;

Выведите на экран UID и GID пользователя myUser;

В своем пользователе work создайте текстовый файл, и ограничьте к нему доступ на чтение для всех других групп пользователей. Затем, зайдите в систему от имени пользователя myUser и проверьте возможность открыть этот текстовый файл;

От имени пользователя work изменить права доступа к данному файлу, и проверьте изменения;

Для одного и тоже файла создайте мягкую и жесткую ссылку в домашнем каталоге. Попробуйте создать ссылки одновременно для нескольких файлов;

Установите файловый менеджер mc и проверьте его работу.

Расскажите про идентификационные номера пользователей и групп в Linux.

Расскажите о файлах Linux, содержащих информацию о пользователях и группах системы.

Как система Linux хранит пароли пользователей и групп?

Как организуется разграничение доступа к файлам в Linux?

Как изменить права доступа к файлу? Как сделать это с помощью битовой строки?

Группы пользователей в Linux

TuxВ статье о системе распределения прав доступа в операционных системах Linux мы рассматривали не только пользователей ОС, но и объединения этих пользователей — группы. Разберем подробнее, какие функции выполняют группы пользователей в Linux, и как можно ими управлять.

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

Перечень существующих в операционной системе групп находится в файле /etc/group. Открыть его можно любым текстовым редактором как из терминала, так и из графической среды. А вот для редактирования нужны права администратора.

Группы пользователей в Linux

Содержимое файла /etc/group.

В Linux есть довольно значительное количество системных групп. Их предназначение заключается в распределении доступа к системным ресурсам. Различное ПО также может создавать группы для распределения доступа. Для начала рассмотрим основные группы, которые встретятся вам при работе с Linux.

Группа Описание
adm Предоставляет доступ к директории /var/log/
audio Управление аудиодрайвером
cdrom Предоставляет доступ к CD-ROM
daemon От имени данной группы и пользователя daemon запускаются процессы, которым необходима возможность записи на диск
dialout Предоставляет доступ к серийному порту
disk Предоставляет доступ к дискам (/dev/hd*, /dev/sd*)
games Предоставляет играм доступ к папкам для записи (настроек, сохранений и пр.)
list Просмотр сообщений в /var/mail/
lp Использование устройств, подключаемых к параллельным портам
mail Запись в /var/mail/
man Добавление страниц в /var/cache/man/
nogroup Применяется для процессов, имеющих прав только на чтение, но не на запись
plugdev Возможность монтировать внешние устройства
proxy Группа для прокси-серверов, не предоставляет возможности записи на диск
shadow Доступ на чтение файла /etc/shadow
src Полный доступ к /usr/src/
staff Запись в каталог /usr/local/
sync Выполнение команд из /bin/sync/
sys Доступ к исходникам ядра системы
tty Предоставляет доступ на чтение и запись для устройств /dev/vca
utmp Запись в файлы /var/log/utmp и /var/log/wtmp
video Доступ к работе с видеодрайвером
wheel Запуск утилиты sudo
www-data Группа веб-сервера, которая открывает доступ на запись в /var/www/

Управление группами в Linux осуществляется как через уже известный нам файл /etc/group, так и через графический интерфейс. В разных средах рабочего стола есть разные инструменты для управления группами. Кому интересно, может поискать в сети такие названия, как YaST и Kuser. Мы же рассмотрим управление группами через терминал Linux.

Читать:
Ostream c что это

Для создания группы используется команда groupadd . Синтаксис команды очень простой:

groupadd [-g идентификатор [-o]] [-r] [-f] [-p пароль] [-R директория] [-h] [-K ключ=значение] имя_группы

-g — идентификатор создаваемой группы. Представляет из себя целое неотрицательное число. Диапазон, откуда присваиваются числа, задаётся ключами GID_MIN и GID_MAX в файле /etc/login.defs ;

-o — опциональный ключ, который указывает на то, что задаваемый идентификатор не является уникальным (дублирует идентификатор другой группы);

-r — создаваемая группа будет системной. Если не указан идентификатор (-g), будет выбран первый из доступных системных идентификаторов;

-f — данная опция приводит к завершению команды с успешным статусом, если указанная группа уже существует и отменяет -g, если такой идентификатор уже используется (будет выбран другой свободный идентификатор);

-p — пароль для группы;

-R — директория измененного корневого каталога;

-h — вывод справки о команде и выход из команды;

-K — позволяет менять значение ключей в файле /etc/login.defs прямо из команды groupadd. Нужно указать ключ, которым хотим изменить, и его новое значение;

имя_группы — может содержать только строчные буквы, символы подчеркивания, тире и символ доллара. Имя группы может начинаться либо со строчной буквы, либо с символа подчеркивания. Максимальная длина имени — 16 символов.

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

Таким образом мы создали группу primer. После просмотра файла /etc/group мы увидим, что ей присвоен ближайший свободный GID — 1002.

Группы пользователей в Linux

Итак, состав группы можно определять путём простого редактирования файла /etc/group. Но есть и другой способ, предоставляющий свои возможности. Например, мы можем пойти от обратного — не редактировать свойства группы, а редактировать свойства пользователя. Команда usermod в числе прочего обладает рядом нужных нам параметров:

-G — список дополнительных групп, членом которых является пользователь;

-a — добавление пользователя в дополнительную группу, используется только с параметром -G;

-g — изменение основной группы пользователя.

Для того, чтобы добавить пользователя test в только что созданную группу primer, мы можем использовать команду

Можно ли удалить пользователя из группы при помощи команды usermod ? Да, но происходит это не при помощи отдельного параметра, а просто при переопределении дополнительных групп, в которые входит пользователь. В общем виде такая команда будет выглядеть так:

usermod -G имя_группы_1,имя_группы_2,…,имя_группы_n имя_пользователя

Посмотреть, в какие группы входит пользователь, можно командой

Посмотрим на скриншот ниже, а дальше прокомментируем его.

Группы пользователей в Linux

Показывает информацию о пользователе test, его uid, gid, в какие группы он входит (основную и дополнительные). Основная группа для него это группа test с идентификатором 1000. Остальные группы являются дополнительными. Следующей командой

мы меняем перечень дополнительных групп для пользователя test. Опять повторив команду

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

Что касается удаления групп, то здесь также можно воспользоваться редактированием файла /etc/group или отдельной командой. Команда в данном случае называется groupdel .

Удалим группу primer:

Команда groupdel имеет всего два параметра, в общем виде она выглядит так:

groupdel [-R директория] [-h] имя_группы

Выше мы разобрали команду groupadd , поэтому смысл параметров -R и -h должен быть понятен.

На этом можно остановиться с основами управления группами в Linux. Помимо этого, можно было упомянуть в целом похожие инструменты, такие как addgroup и delgroup , но, по сути, они всё равно обращаются к groupadd и groupdel , и изучить их можно самостоятельно.

Права, пользователи и прочее в Linux (часть 2)

Права, пользователи и прочее в Linux (часть 2)

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

В данной статье мы рассмотрим, что такое пользователи в Linux, как их смотреть, как их создавать, изменять и удалять, а так же, как рулить группами пользователей. Поехали?

Что такое пользователи?

По факту это любой кто использует компьютер. Имя пользователя это как правило его псевдоним, логин, который может состоять из букв Eng алфавита, арабских чисел и нижнего подчеркивания. Использовать можно любое имя кроме root, hal и adm, так как эти имена являются зарезервированными системой именами. Кроме логина в системе может храниться и полное имя реального пользователя, что иногда, при администрировании бывает полезным.

Что имеет каждый пользователь в linux системе?

  1. домашняя папка — для каждого пользователя создается своя домашняя директория в директории /home. Там могут храниться все его личные данные;
  2. командная оболочка — каждый пользователь имеет свою командную оболочку (командный интерпретатор), например /bin/bash, bin/sh и другие. (по умолчанию, как правило, используется /bin/bash)
  3. личный идентификатор (User ID) — каждый пользователь нумеруется, чтобы система могла отслеживать его, ибо она это делает только по uid пользователя
  4. пароль — естественно, каждый пользователь имеет свой пароль, которых храниться в зашифрованном виде (encripted)
  5. группа — и каждый пользователь может находиться в одной или более группе, о них мы поговорим немного подробнее..

Что такое группы?

Чтобы администраторам было проще разделять полномочия между пользователями, в Linux системах существуют группы, поэтому для каждого файла в linux системе определяется не только пользователь но и группа. По факту группы нужны для того, чтобы предоставить одинаковые полномочия на файлы или какие-нибудь действия. И опять же, каждая группа имеет свой уникальный идентификатор — GID (GroupID)

Как узнать, какие пользователи есть в системе?

Информация о пользователях храниться в файле /etc/passwd в виде строк, одна строка — это один пользователь, и эта строка имеет следующий формат:

а расшифровывается она следующим образом:

  • account — логин пользователя
  • password — зашифрованный пароль пользователя
  • UID — id пользователя (uid создается более 1000)
  • GID — id основной группы (gid создается более 100)
  • GECOS — дополнительная информация о пользователе (не обязательно)
  • directory — домашний каталог ($HOME) пользователя
  • shell — командный интерпретатор пользователя (обычно /bin/sh)

Чтобы посмотреть какие пользователи существуют в системе, достаточно набрать следующую команду:

Ну и никто не запрещает посмотреть активных в данный момент пользователей:

Создание пользователя

При создании пользователя, нужно выполнить ряд следующих действий:

  1. создается запись в /etc/passwd
  2. создается домашний каталог пользователя (/home/username)
  3. устанавливаются необходимые права
  4. назначается необходимая командная оболочка
  5. модифицируются конфигурационные файлы прочих приложений

Чтобы как то упростить жизнь администраторам, существует специальная утилита useradd. Настройки этой утилиты хранятся в файле /etc/default/useradd, в котором можно изменить применяемые новым пользователям параметры по умолчанию.

Чтобы создать нового пользователя lolosh в группе users и lalki достаточно набрать следующую команду:

расшифровывается эта команда следующим образом:

Что означают эти ключи:

  • m — создаёт домашний каталог, вида /home/[имя пользователя]
  • -g — имя или номер основной группы пользователя
  • -G — список дополнительных групп, в которые входит пользователь
  • -s — определяет командную оболочку пользователя.

Подробнее узнать о том, что умеет эта утилита можно почитать в man страницах.

Добавление и изменение дополнительной информации

Для того, чтобы наделить пользователя дополнительной информацией, можно воспользоваться командой chfn. Рассмотрим что мы можем добавить:

Подробнее, о возможностях этой команды читайте man.

Задаем или изменяем пароль

Для того, чтобы задать пользователю пароль, достаточно воспользоваться следующей командой:

далее программа дважды попросит ввести новый пароль.

Если мы хотим, чтобы пользователь сменил пароль при первом входе, можно воспользоваться следующей командой:

Так же еще можно установить срок годности учетной записи и многое другое, подробно можно почитать man.

Удаление пользователя

Удалить пользователя можно следующей командой:

Обратите внимание, с указанным ключом -r удаляется и его домашняя директория.

Управление группами

Тут так же нет ничего сложного. Чтобы просмотреть список существующих групп, достаточно отобразить файл /etc/group:

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

Пользователи в Linux. Типы пользователей, управление пользователями.

Сегодня я хочу поговорить о пользователях в Linux. Мы познакомимся с типами пользователей и узнаем в каких файлах хранится связанная с ними информация. Изучим команды позволяющие управлять пользователями и изменять их данные. Рассмотрим примеры создания пользователей с различными параметрами и последующим изменениям пользовательских настроек.

Типы пользователей

В ОС Linux существует три типа пользователей:

root (от англ. root — корень) — суперпользователь, аккаунт в UNIX-подобных системах, владелец которого имеет право на выполнение всех операций без исключения. Присутствует в системе по умолчанию.

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

Обычные пользователи — учетные записи пользователей, допущенных к управлению системой. Создаются системным администратором.

Каждый пользователь помимо имени имеет числовой идентификатор пользователя UID (User IDentificator). Пользователь root имеет идентификатор 0. Системные пользователи имеют идентификаторы от 1 до 100. Обычные пользователи имеют UID от 100.

Пользователи могут объединяться в группы. Каждый пользователь обязательно входит в ту или иную группу. Группы имеют числовой идентификатор группы GID (Group IDentificator).

Информация пользователей

В системе присутствует следующая информация о каждом пользователе:

  • Имя пользователя (user name) — в рамках системы имя должно быть уникальным. В именах должны использоваться только английские буквы, числа и символы _ и . (точка).
  • Идентификационный номер пользователя (UID) — является уникальным идентификатором пользователя в системе. Система отслеживает пользователей по UID, а не по именам.
  • Идентификационный номер группы (GID) — обозначает группу, к которой относится пользователь. Каждый пользователь может принадлежать к одной или нескольким группам. Принадлежность пользователя к группе устанавливает системный администратор, чтобы иметь возможность ограничивать доступ пользователей к тем или иным ресурсам системы.
  • Пароль (password) — пароль пользователя в зашифрованном виде.
  • Полное имя (full name) — помимо системного имени может присутствовать полное имя пользователя, например фамилия и имя.
  • Домашний каталог (home directory) — каталог, в который попадает пользователь после входа в систему. Подобный каталог имеется у каждого пользователя, все пользовательские каталоги хранятся в директории /home.
  • Начальная оболочка (login shell) — командная оболочка, которая будет запускаться при входе в систему. Например, /bin/bash.

Вся информация о пользователях хранится в следующих файлах:

passwd (etc/passwd) — содержит информацию о пользователях, имеет следующий формат записи — «user_name:password:UID:GID:full_name:home_directory:login_shell». Элементы записи должны разделяться символом — «:» (двоеточие) и записываются без пробелов. Если пароль хранится в зашифрованном виде в файле /etc/shadow, то вместо пароля указывается — «x».

group (etc/group) — информация о группах, формат — «group_name:password:GID:user1,user2,user3». Элементы записи должны разделяться символом — «:» (двоеточие) записываются без пробелов. Имена пользователей записываются через запятую.

У файлов /etc/passwd и /etc/group всегда определенные права доступа: чтение и запись для root, для остальных только чтение.

shadow (etc/shadow) — в этом файле хранятся так называемые «теневые пароли», информация о паролях пользователей в зашифрованном виде. Cделано это для безопасности, так как файл /etc/passwd может читаться кем угодно, а файл /etc/shadow может прочитать только root.

gshadow (etc/gshadow) — то же самое что и shadow, только для паролей групп.

Помимо основных, в системе присутствуют дополнительные файлы.

useradd (etc/default/useradd) — файл задающий свойства «по умолчанию» для всех добавляемых пользователей. Можно просмотреть командой — useradd -D.

login.defs (/etc/login.defs) — содержит настройки для создания новых пользователей.

/etc/skel — каталог с дефолтными файлами, которые копируются в домашний каталог каждого пользователя при его создании.

Команды управления

Для управления пользователями используются следующие команды:

useradd или adduser — добавить нового пользователя.

passwd — задать пароль для пользователя.

usermod — изменить параметры учетной записи пользователя.

userdel или deluser — удалить учетную запись пользователя.

Для управления группами используются следующие команды:

groupadd — добавляет новую группу.

gpasswd — устанавливает пароль группы.

groupmod — изменение параметров группы.

groupdel — удаление группы.

Обычное добавление пользователя

При создании нового пользователя автоматически указываются несколько параметров. В файле /etc/passwd, заводится запись с указанием имени пользователя, домашнего каталога, UID, GID. В каталог помещаются файлы инициализации командной оболочки. Все можно указать вручную, при помощи дополнительных опций. Список опций можно просмотреть командой useradd —help или useradd -h.

Для создания пользователя достаточно выполнить команду useradd и указать его имя.

Синтаксис команды: useradd options username

Теперь нужно задать пароль для созданного пользователя. Пароль задается командой passwd с указанием имени пользователя.

Можно задать пароль для пользователя сразу при создании, например так:

Проверим с какими параметрами был создан пользователь:

Подобным образом команда useradd работает в CentOS и других подобных ему системах, но в Debian или Ubuntu она просто создаст голого пользователя, а все остальное придется добавлять потом вручную.

Чтобы создать пользователя с подобными параметрами в Debian & Ubuntu команда useradd должна выглядеть следующим образом.

Поэтому в Ubuntu & Debian удобнее пользоваться утилитой adduser, при ее использовании нужно будет ответить на несколько вопросов, в процессе ее выполнения будут видны все шаги по созданию нового пользователя.

Проверим как создался пользователь.

Пользователь создался как и в CentOS, за исключением того, что там мы не указывали полного имени «Techlist. «, через запятые должны были быть указаны номера комнаты и телефонов, которые мы пропустили нажав на <Enter>.

Создание пользователя с домашней директорией, отличной от дефолтной директории

По умолчанию команда useradd создает домашний каталог пользователя в директории /home, имя домашнего каталога всегда совпадает с именем пользователя. Например при создании пользователя techlist, создается домашняя директория /home/techlist.

Допустим что возникла необходимость задать пользователю домашний каталог с размещением и именем отличающимися от стандартных настроек. При использовании опции -d можно задать свой каталог для пользователя.

Как можно видеть, пользователь techlist создался с домашним каталогом в /opt/tech.

Создание пользователя с определенным UID и GID

Каждому пользователю при его создании присваивается UID, присвоение идет по порядку: 1000, 1001 и т.д. При использовании опции -u пользователю можно задать определенный UID. Для примера создадим пользователя techlist c UID равным 777.

Пользователь создался с UID равным 777, но GID был задан дефолтный — 1001, для того чтобы это исправить можно поступить следующим образом.

Сначала создадим группу techlist c GID равным 777.

Обратите внимание, группа создана но пользователей в нет, теперь можно создать пользователя с UID=777 и указать его принадлежность к группе techlist с помощью опции -g и указания GID 777.

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

Если пользователь должен принадлежать сразу к нескольким группам, то указывается опция -G, после чего через запятую указываются группы к которым будет принадлежать пользователь.

Допустим что новый пользователь techlist должен принадлежать к следующим группам: group_1, group_2 и group_3.

Создание пользователя без домашнего каталога

Иногда пользователю не требуется домашний каталог, для этого используется опция -M.

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

По умолчанию каждый пользователь не имеет срока действия аккаунта. Срок действия можно установить задав дату истечения аккаунта. Для этого следует использовать опцию -e после которой указывается дата истечения аккаунта в формате YYYY-MM-DD. Создадим пользователя techlist с истечением аккаунта в 2017-05-01, по достижении даты аккаунт будет недействителен.

Создание пользователя с истекающим сроком действия пароля

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

Создание пользователя с указанием доп. информации

Иногда может возникнуть необходимость указать примечание для пользователя, в виде краткой заметки или указания имени и фамилии пользователя. Для этого можно воспользоваться опцией -c. Создадим пользователя vasek, с указанием имени и фамилии Vasya Pupkin.

Создание пользователя с указанием командной оболочки

Для того чтобы указать командную оболочку для пользователя используется опция -s

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

Изменение существующего пользователя

Иногда может потребоваться внести некоторые изменения в аккаунт пользователя. Сделать это можно при помощи команды usermod.

Синтаксис команды: usermod options username

Команда usermod имеет дополнительные опции, посмотреть список доступных опций можно командой usermod -h.

Рассматривать применение команды будем на примере пользователя techlist.

Пользователь был создан с дефолтными настройками.

Добавление доп. информации пользователю

Для начала добавим имя и фамилию пользователя, опцией -c.

Изменение домашнего каталога пользователя

По умолчанию домашним каталогом пользователя techlist является /home/techlist. Изменим его на каталог /opt/techlist, при помощи опции -d и опцией -m перенесем в новый каталог все содержимое старого.

Установка даты истечения срока аккаунта

Назначим дату истечения действия аккаунта, аккаунт будет действовать до 2017-05-01, дата задается опцией -e.

Изменение группы пользователя

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

Добавим пользователя techlist к группе group_1, используя опцию -g.

Как можно увидеть группа изменилась, если раньше была 1001(techlist), то теперь стала 1002(group_1).

Как добавить пользователя к новой группе без удаления из предыдущей? Для этого существует опция -G.

Теперь пользователь принадлежит одновременно к двум группам 1002(group_1) и 1003(group_2).

Добавление пользователя в дополнительные группы

Для добавления пользователя в одну из дополнительных групп, одновременно используются две опции -a и -G. В качестве дополнительной группы будет выступать группа wheel.

Теперь пользователь techlist относится к дополнительной группе wheel, что может наделить его привилегиями выполнять root-команды.

Изменение имени пользователя

Существующему пользователю можно изменить имя, изменим имя пользователя techlist на techlist_admin, делается это опцией -l.

Блокировка аккаунта пользователя

Для блокировки аккаунта пользователя достаточно выполнить команду с опцией -L.

Разблокировка аккаунта пользователя

Для того чтобы разблокировать аккаунт пользователя, достаточно выполнить команду с опцией -U.

Изменение командной оболочки пользователя

Чтобы изменить командную оболочку пользователя, надо выполнить следующую команду с опцией -s. Изменим пользовательскую оболочку для techlist_admin с /bin/bash/ на /bin/sh/.

Изменение UID и GID пользователя

Для изменения UID пользователя используется опция -u.

Для изменения GID пользователя используется опция -g.

Таким образом можно управлять пользователями и изменять их по своему усмотрению.

Удаление пользователей

Для удаления пользователей в Linux существуют две команды userdel и deluser, команда userdel используется в RedHat — подобных системах, а deluser в Debian и производных системах. Помимо deluser в Debian можно использовать и userdel.

userdel

синтаксис команды: userdel options username

Для того чтобы удалить пользователя, выполняем команду userdel. Команда userdel не удаляет пользователя если он работает в системе, сначала необходимо завершить все связанные с ним процессы. Для просмотра дополнительных опций команды userdel, используется ключ -h.

-f — позволяет удалить залогиненного т.е. работающего в системе пользователя. Рекомендуется использовать только в самых крайних случаях, данная опция может привести к краху системы.

deluser

синтаксис команды: deluser options username

Для просмотра справки используется команда deluser -h.

Настройки команды находятся в файле /etc/deluser.conf, здесь задается поведение утилиты при удалении пользователя.

Правильное удаление пользователя

Под правильным удалением пользователя нужно понимать определенную последовательность команд позволяющих удалить пользователя не оставив мусора и не обрушив систему.

Блокировка пользователя

Удаляемый пользователь не должен быть залогинен в системе и использовать какие либо файлы или программы.

Блокировку пользователя мы рассматривали выше.

Убить все пользовательские процессы

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

Узнаем что это за процессы используя их pid.

Hичего серьезного нет, можно завершать все. Завершение всех процессов вышвырнет пользователя из системы, а заново войти он не сможет, ибо был заранее заблокирован.

Похожие статьи