Ubuntu удалить пользователя из группы. Управляем пользователями: useradd, usermod и userdel

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

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

Пользователи:

Business – Internet Access #1.

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

Root (от англ root - корень; читается «рут»), суперпользователь - это аккаунт в UNIX-подобных операционных системах с идентификатором (UID) 0, владелец этого аккаунта имеет право на выполнение любой операции. В целях безопасности работать под суперпользователем root не рекомендуется.

Помимо системного имени, в систему может занестись и хранится полное имя (например Ф.И.О)(full name) реального пользователя. Например, пользователю newuser в реальной жизни может соответствовать человек по имени John Smith. Эта информация позволит лучше контролировать и идентифицировать пользователей системному администратору, тем более, если пользователей в системе сотни или даже тысячи.

Под каждого пользователя, создается свой каталог (home directory). В этот каталог попадает пользователь, после того как он авторизировался и в нем храниться личные файлы и папки пользователя. Все каталоги пользователей собраны в одном месте, обычно это /home.

Также, пользователю назначается командная оболочка (командный интерпретатор, используемый в операционных системах семейства UNIX). Например: /bin/bash, /bin/zsh, /bin/sh и.т.д. У многих дистрибутивов linux, для пользователей, по умолчанию назначается командная оболочка bash.

Каждому пользователю назначается идентификационный номер (User ID). Сокращенно номер обозначается как UID, является уникальным идентификатором пользователя. Операционная система отслеживает пользователя именно по UID, а не по их имени.

Также, каждому пользователю назначается пароль для входа в систему. Пароль храниться в зашифрованном виде (encripted). Для создания и изменения пароля используется команда passwd. Системный администратор может сам назначить пароль или дать возможность пользователю ввести свой пароль при первой авторизации.

Каждый пользователь принадлежит минимум к одной или нескольким группам. (пользователи и группы в linux)

Группы:

Для разграничения прав в linux, помимо пользователей, существуют группы . Так же как и пользователь, группа обладает правам доступа к тем или иным каталогам, файлам, периферии (в системе есть зарезервированные группы). Для каждого файла определён не только пользователь, но и группа. Группы группируют пользователей для предоставления одинаковых полномочий на какие-либо действия.

Каждой группе назначается идентификационный номер (group ID ). Сокращённо GID, является уникальный идентификатором группы. Принадлежность пользователя к группе устанавливается администратором.

Просмотр пользователей

(пользователи и группы в linux) Вся вышеизложенная информация хранится в файле /etc/passwd. Чтобы посмотреть список пользователей нужно ввести команду:

# cat /etc/passwd

Каждый аккаунт занимает одну строку. Вывод может быть следующим:

Root:xD928Jhs7sH32:0:0:root:/root:/bin/bash newuser:Xv8Q981g71oKK:1000:100:John Smith:/home/newuser:/bin/bash

Эта строки имеет следующий формат:

Account:password:UID:GID:GECOS:directory:shell

Account - имя пользователя password - зашифрованный пароль пользователя UID - идентификационный номер пользователя GID - идентификационный номер основной группы пользователя GECOS - необязательное поле, используемое для указания дополнительной информации о пользователе (например, полное имя пользователя) directory - домашний каталог ($HOME) пользователя shell - командный интерпретатор пользователя (обычно /bin/sh)

Для просмотра списка пользователей которые находятся в данный момент времени в системе есть команда who.

Вывод может быть следующий:

Newuser pts/0 2013-11-13 14:19 (:0)

Создание, управление и удаление пользователей

(пользователи и группы в linux) При создании новых пользователей совершается последовательность определенных действий. Сначала заводится запись в файле/etc/passwd, где пользователю назначается уникальное имя, UID, GID и другая информация. UID должен быть больше 1000, а GID более 100, это связано с тем, что система резервирует маленькие значения под свои нужды. Также, создается каталог, устанавливаются права, помещаются файлы инициализации командной оболочки и модифицируются конфигурационные файлы.

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

# cat /etc/default/useradd

Вывод следующий:

GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=no

В нем можно изменить параметры по умолчанию. Например, директорию для пользователей с /home на /home/user или интерпретатор с /bin/bash на /bin/sh.

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

# useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash newuser

Расшифровка:

# useradd -m -g [основная группа] -G [список дополнительных групп] -s [командный интерпретатор] [имя пользователя]

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

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

# man useradd

Командой chfn можно внести или изменить информацию учетной запеси пользователя (ФИО, рабочий телефон, рабочие координаты и.т.д)(username - имя пользователя).

# chfn [-f полное-имя][-о office][-p рабочий-телефон][-h домашний-телефон][-u][-v]

Для задания пароля используется команда passwd:

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

# chage -d 0

Более подробно о команде chage можно почитать в мануале, введите:

# man chage

Для того, чтобы удалить пользователя существует команда userdel

# userdel -r

Параметр -r указывает на то, что следуют вмести с пользователем удалить домашнею директорию и почтовый ящик.

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

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

# cat /etc/group

Файл /etc/group определят группы в системе. Чтобы посмотреть в каких групах состоит пользователь нужно набрать:

# groups

Команда id показывает более подробную информацию.

# id

Для создание новой группы:

# groupadd

Чтобы занести пользователя в группу:

# gpasswd -a

Вывод пользователя из группы:

# gpasswd -d

И для того, чтобы удалить группу, введем следующие:

# groupdel

(пользователи и группы в linux) На этом в принципе все, самое основное изложено.

Основа распределения прав доступа в операционной системе 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:

И изменим для него группу:

Если вы хотите создать группу 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.

Оригинал: Linux Fundamentals
Автор: Paul Cobbaut
Дата публикации: 16 октября 2014 г.
Перевод: А.Панин
Дата перевода: 23 декабря 2014 г.

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

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

В каждом дистрибутиве Unix или Linux имеется инструмент с графическим интерфейсом для управления группами пользователей. Пользователям, не имеющим опыта работы с данными системами, рекомендуется использовать именно эти инструменты. Более опытные пользователи могут использовать инструменты с интерфейсом командной строки для управления учетными записями пользователей, проявляя при этом осторожность: некоторые дистрибутивы не позволяют работать одновременно с инструментами для управления группами пользователей с графическим интерфейсом и интерфейсом командной строки (примером может служить инструмент YaST из состава дистрибутива Novell Suse). Опытные системные администраторы могут осуществлять непосредственное редактирование соответствующих файлов с помощью текстового редактора vi или утилиты vigr .

Утилита groupadd

Группы пользователей могут создаваться с помощью утилиты groupadd . В примере ниже показана методика создания пяти групп (без добавления в них пользователей). root@laika:~# groupadd tennis root@laika:~# groupadd football root@laika:~# groupadd snooker root@laika:~# groupadd formula1 root@laika:~# groupadd salsa

Файл group

Пользователи могут состоять в нескольких группах. Членство пользователей в группах описывается в файле /etc/group . root@laika:~# tail -5 /etc/group tennis:x:1006: football:x:1007: snooker:x:1008: formula1:x:1009: salsa:x:1010: root@laika:~#

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

Команда groups

Пользователь может выполнить команду groups для ознакомления со списком групп, в которых он состоит. $ groups harry sports $

Утилита usermod

Членство пользователя в группах может быть изменено с помощью утилиты useradd или usermod . root@laika:~# usermod -a -G tennis inge root@laika:~# usermod -a -G tennis katrien root@laika:~# usermod -a -G salsa katrien root@laika:~# usermod -a -G snooker sandra root@laika:~# usermod -a -G formula1 annelies root@laika:~# tail -5 /etc/group tennis:x:1006:inge,katrien football:x:1007: snooker:x:1008:sandra formula1:x:1009:annelies salsa:x:1010:katrien root@laika:~#

Проявляйте осторожность при использовании утилиты usermod для добавления пользователей в группы. По умолчанию утилита usermod будет удалять пользователя из всех групп, в которых он состоял, если имена данных групп не были переданы в составе команды! Использование параметра -a (append - дополнение) позволяет избежать данного поведения.

Утилита groupmod

Вы можете изменить имя группы пользователей с помощью утилиты groupmod . root@laika:~# groupmod -n darts snooker root@laika:~# tail -5 /etc/group tennis:x:1006:inge,katrien football:x:1007: formula1:x:1009:annelies salsa:x:1010:katrien darts:x:1008:sandra

Утилита groupdel

Вы можете навсегда удалить группу пользователей с помощью утилиты groupdel . root@laika:~# groupdel tennis root@laika:~#

Утилита gpasswd

Также вы можете делегировать функции контроля над членством в определенной группе пользователей другому пользователю с помощью утилиты gpasswd . В примере ниже мы делегируем права на добавление пользователей в группу sports и удаление их из нее пользователю serena. После этого мы используем команду su для добавления пользователя harry в группу sports от лица пользователя serena. # gpasswd -A serena sports # su - serena $ id harry uid=516(harry) gid=520(harry) группы=520(harry) $ gpasswd -a harry sports Добавление пользователя harry в группу sports $ id harry uid=516(harry) gid=520(harry) группы=520(harry),522(sports) $ tail -1 /etc/group sports:x:522:serena,venus,harry $

Администраторы групп пользователей не обязаны быть членами этих групп. Они могут удалить свои учетные записи из администрируемых ими групп пользователей и это никак не повлияет на их возможности добавления пользователей в эти группы или удаления пользователей из них. $ gpasswd -d serena sports Удаление пользователя serena из группы sports $ exit

Информация об администраторах групп пользователей хранится в файле /etc/gshadow . # tail -1 /etc/gshadow sports:!:serena:venus,harry #

Для удаления всех учетных записей администраторов из группы пользователей следует использовать утилиту gpasswd с параметрами для задания пустого списка администраторов. # gpasswd -A "" sports

Утилита newgrp

Вы можете запустить дочернюю командную оболочку с новой временной основной группой пользователя, воспользовавшись командой newgrp . root@rhel65:~# mkdir prigroup root@rhel65:~# cd prigroup/ root@rhel65:~/prigroup# touch standard.txt root@rhel65:~/prigroup# ls -l итого 0 -rw-r--r--. 1 root root 0 апр 13 17:49 standard.txt root@rhel65:~/prigroup# echo $SHLVL 1 root@rhel65:~/prigroup# newgrp tennis root@rhel65:~/prigroup# echo $SHLVL 2 root@rhel65:~/prigroup# touch newgrp.txt root@rhel65:~/prigroup# ls -l итого 0 -rw-r--r--. 1 root tennis 0 апр 13 17:49 newgrp.txt -rw-r--r--. 1 root root 0 апр 13 17:49 standard.txt root@rhel65:~/prigroup# exit exit root@rhel65:~/prigroup#

Утилита vigr

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

Практическое задание: группы пользователей

Корректная процедура выполнения практического задания: группы пользователей

1. Создайте группы пользователей tennis, football и sports.

Groupadd tennis ; groupadd football ; groupadd sports

2. С помощью одной команды сделайте пользователя venus членом групп tennis и sports.

Usermod -a -G tennis,sports venus

3. Переименуйте группу пользователей fotball в foot.

Groupmod -n foot football

4. Используйте текстовый редактор vi для добавления пользователя serena в группу пользователей tennis.

5. Используйте команду id для того, чтобы убедиться, что пользователь serena состоит в группе пользователей tennis.

Id (после выхода из системы и входа в нее пользователь serena должен быть членом группы)

6. Сделайте кого-либо из пользователей ответственным за управление членством пользователей в группах foot и sports. Проверьте работоспособность использованного механизма.

Gpasswd -A (для того, чтобы сделать пользователя ответственным за управление членством в группе пользователей) gpasswd -a (для того, чтобы сделать пользователя членом группы пользователей)

Создание новой группы в системе
Этой командой можно создать новую группу пользователей (далее группу) group в системе:

Добавление нового пользователя в систему
Нового пользователя user можно добавить командой :


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

Этой командой пользователя можно добавить сразу в несколько групп. Для этого имена групп перечисляем через запятую.

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

useradd -g groupname user

Эта группа для пользователя будет являться основной.

Задание пароля пользователю
Пароль для пользователя user задается командой:


Эта команда попросит ввести пароль дважды. Никогда не оставляйте пользователя без пароля!
Иногда необходимо запретить пользователю вход в систему. Например если нужен доступ только к сетевому общему ресурсу. (Подробнее об этом .) Для этого следует изменить файл passwd следующей командой:

В поле пароля добавляю символ звездочки "*" перед самим паролем (подробнее этот файл описан в конце статьи). Сохраняем сделанные изменения и выходим клавишами Ctrl+X , клавишей Y подтверждаем наш выбор.Для большей безопасности этот файл можно отредактировать командой vipw . Чтобы выйти из редактора с сохранением изменений требуется выполнить :wq . Для выхода без сохранения изменений прописываем :q или :q! , если были произведены какие либо изменения.

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

. Обычно для добавления и редактирования пользователя достаточно выше приведенных команд.
Вся информация о пользователях системы и о группах хранится в следующих файлах:
- /etc/passwd в этом файле содержится весь список пользователей, о которых известно системе. Каждая строка этого файла описывает пользователя и содержит семь полей, в которых указана пользовательская информация. Поля разделены двоеточиями.
1.
2. Шифрованный пароль пользователя (никогда не оствляйте это поле пустым);
3. Идентификатор пользователя (UID);
4. Идентификатор группы (GID);
5. Поле GECOS, в котором можно указать полное имя пользователя, рабочий домашний телефон, место работы и прочее;
6. Путь к домашнему каталогу;
7. Регистрационная оболочка.

- /etc/shadow здесь хранятся пароли в зашифрованном виде. Этот файл доступен суперпользователю только для чтения. Каждая строка соответствует одному пользователю. В нем содержится девять полей, разделенных двоеточиями:
1. Регистрационное имя пользователя;
2. Зашифрованный пароль пользователя;
3. Дата последнего изменения пароля;
4. Минимальное число дней между изменениями пароля;
5. Максимальное число дней между изменениями пароля;
6. Количество дней до предупреждения об окончании действия пароля;
7. Количество дней до окончания действия пароля;
8. Срок действия учетной записи;
9. Зарезервированное пустое поле, которое не используется.
Поля дат в данном файле заполняются числом дней, прошедших от 1 января 1970 года. Обязательно заполнены должны быть первые два поля!

- /etc/group содержит список групп и имена пользователей, входящие в эти группы. Подобно предыдущим файлам каждая строка соответствует одной группе и имеет четыре поля, которые разделены двоеточиями:
1. Имя группы;
2. Зашифрованный пароль или символ x указывающий на использование файла gshadow (когда для подключения пользователя к группе с помощью утилиты newgrp нужно ввести пароль);
3. Идентификатор группы (GID);
4. Список членов данной группы, которые разделены запятой.