среда, 20 декабря 2017 г.

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

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

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

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

Пользователь - это любой кто пользуется компьютером. Пользователю назначается имя, имя должно быть уникальным в системе (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][username]
Для задания пароля используется команда passwd:
# passwd [username]
Далее, нам будут предложено ввести новый пароль и повторить его.
Если мы хотим заставить пользователя сменить пароль на свой при первом входе в систему нужно применить команду:
# chage -d 0 [username]
Более подробно о команде chage можно почитать в мануале, введите:
# man chage
Для того, чтобы удалить пользователя существует команда userdel
# userdel -r [username]
Параметр -r указывает на то, что следуют вмести с пользователем удалить домашнею директорию и почтовый ящик.

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

Для просмотра всех групп системы и каким пользователем они принадлежат нужно ввести следующее:
# cat /etc/group
Файл /etc/group определят группы в системе. Чтобы посмотреть в каких групах состоит пользователь нужно набрать:
# groups [username]
Команда id показывает более подробную информацию.
# id [username]
Для создание новой группы:
# groupadd [group]
Чтобы занести пользователя в группу:
# gpasswd -a [user] [group]
Вывод пользователя из группы:
# gpasswd -d [user] [group]
И для того, чтобы удалить группу, введем следующие:
# groupdel [group]
(пользователи и группы в linux)  На этом в принципе все, самое основное изложено.


Как в Linux добавить пользователя в группу (или вторичную группу)

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

Как создать новую группу в Linux

Если вы хотите создать новую группу в своей системе, используйте команду groupadd, заменив new_group на имя группы, которую вы хотите создать. Вам также нужно будет использовать sudo с этой командой (или в дистрибутивах Linux, которые не используют sudo, вам нужно будет запустить команду su, чтобы получить повышенные разрешения перед запуском команды).
1
sudo groupadd new_group

Добавление существующей учетной записи пользователя в группу

Чтобы добавить существующую учетную запись пользователя в группу в вашей системе, используйте команду usermod, заменив group_name на имя группы, в которую вы хотите добавить пользователя, в user_name на имя пользователя, которого хотите добавить.
1
usermod -a -G group_name user_name
Например, для добавления пользователя mial в группу sudo, используйте следующую команду:
1
usermod -a -G sudo mial

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

Хотя учетная запись пользователя может входить в нескольких групп, одна из групп всегда является «основной группой», а остальные являются «вторичными группами». Процесс входа пользователя, файлы и папки, созданные пользователем, будут назначены первичной группе.
Чтобы изменить основную группу, которой назначен пользователь, запустите команду usermod, заменив group_name на имя группы, а user_name на имя учетной записи пользователя.
1
usermod -g group_name user_name
Обратите внимание здесь на -g. Когда вы используете маленькую g, вы назначаете главную группу. Когда вы используете заглавную -G , как в примерах выше, вы назначаете вторичную группу.

Как узнать, в какие группы входит пользователь

Чтобы просмотреть группы, которым назначена текущая учетная запись пользователя, выполните команду groups. Вы увидите список групп.
1
groups
Чтобы просмотреть числовые идентификаторы, связанные с каждой группой, выполните команду id:
id
Для просмотра групп в которые входит другая учетная запись пользователя, запустите команду groups и укажите имя учетной записи пользователя.
1
groups user_name
Вы также можете просмотреть числовые идентификаторы, связанные с каждой группой, запустив команду id и указав имя пользователя.
1
id user_name
Первой группой в списке групп или группой, показанной после «gid=» в списке идентификаторов, является первичная группа учетной записи пользователя. Другие группы – это вторичные группы. Итак, на скриншоте ниже основной группой учетной записи пользователя является mial.

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

Иногда вам может понадобиться создать новую учетную запись пользователя, которая имеет доступ к определенному ресурсу или каталогу, например, новому пользователю FTP. С помощью команды useradd при создании учетной записи пользователя вы можете указать группы, которым будет назначена учетная запись пользователя, например:
1
useradd -G group_name user_name
Например, чтобы создать новую учетную запись пользователя с именем jsmith и назначить эту учетную запись группе ftp, вы должны запустить:
1
useradd -G ftp jsmith
Конечно, вы захотите назначить пароль для этого пользователя:
1
passwd jsmith

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

Вы можете добавить пользователя сразу в несколько вторичных групп, разделив список запятой:
1
usermod -a -G group1,group2,group3 user_name
Например, чтобы добавить пользователя с именем mial в группы ftp, sudo и example, вы должны запустить:
1
usermod -a -G ftp,sudo,example mial
Вы можете указать столько групп, сколько хотите – просто разделите их все запятой.

Как просмотреть все группы в системе

Если вы хотите просмотреть список всех групп в вашей системе, вы можете использовать команду getent:
1
getent group
Этот вывод также покажет вам, какие учетные записи пользователей являются членами групп. Итак, на скриншоте ниже мы видим, что учетные записи пользователей syslog и mial являются членами группы adm.
Это должно охватывать все, что вам нужно знать о добавлении пользователей в группы в командной строке Linux.

Шпаргалка по работе в командной строке Linux

Прошли те времена, когда для управления операционной системой Linux требовалось знание командной строки. Сегодня в распоряжении пользователей Linux несколько отличных графических интерфейсов (лично я предпочитаю GNOME). Однако необязательное не означает бесполезное — знание команд открывает мощные возможности настройки и управления системой. Время, вложенное в изучение команд, окупится сторицей. Ниже несколько полезных команд. В Ubuntu Linux операции, требующие полномочий администратора, должны предваряться командой sudo
Переход в терминал: Alr+Ctr+F1(-F6)
Переключение между текстовыми консолями: Alr+F1(-F6)
Переход в графический режим: Alr+F7
Аварийный выход из системы X Window: Ctr+Alt+Backspace

Включение/выключение

Перезагрузить компьютер:
rebootили shutdown -r now
Выключить компьютер:
shutdown -h now
Выключить компьютер через заданное время:
shutdown -h hh:mmили
shutdown -h +m
Окончание сеанса работы в терминале:
exit

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

Включить корневую учетную запись:
sudo passwd root
Заблокировать корневую учетную запись:
sudo passwd -l root
Добавить пользователя:
adduser имя_пользователя
Удалить пользователя:
deluser имя_пользователя
Удалить пользователя вместе с домашним каталогом:
deluser имя_пользователя -remove-home
Изменить имя пользователя и название его домашнего каталога:
usermod -l новое_имя_пользователя -d /home/новое_имя_пользователя -m старое_имя_пользователя
Изменить пароль пользователя:
passwd имя_пользователя
Восстановить пароль к учетной записи в режиме восстановления системы (нажать Esc в процессе загрузки GRUB):
passwd имя_записи

Управление каталогами

Показать информацию о файловых системах:
sudo mount
Показать список разделов:
df
Показать содержание текущего каталога:
du -h
Показать объем указанного каталога:
du -S имя_каталога
Отобразить путь к текущему каталогу:
pwd
Создать каталог:
mkdir имя_каталога
Скопировать каталог:
cp каталог_1 каталог_2
Переместить каталог_1 в каталог_2:
mv каталог_1 каталог_2
Войти в каталог:
cd /имя_каталога
Показать содержание каталога:
ls /имя_каталога
Показать содержание каталога, включая скрытые файлы и каталоги:
ls -a /имя_каталога
Показать полную информацию о содержании каталога:
ls -l /имя_каталога
Удалить пустой каталог:
rmdir имя_каталога
Удалить каталог с содержанием:
rm -r имя_каталога

Работа с файлами

Создать файл в текущем каталоге:
touch имя_файла.txt
Найти файл:
locate имя_файла
Обновить базу поиска файлов:
updatedb
Просмотреть текстовый файл:
cat /путь/имя_файла
Просмотреть текстовый файл в обратном порядке — от последней строки к первой:
tac /путь/имя_файла
Скопировать файл_1 в файл_2:
cp файл_1 файл_2
Переместить файл_1 в файл_2:
mv файл_1 файл_2
Переместить файл с сохранением оригинала (в конец имени файла дописывается символ ~):
mv -b файл целевой_каталог
Удалить файл:
rm имя_файла
Записать информацию в файл, перезаписав его:
echo текст > имя_файла.txt
Добавить информацию в файл без его перезаписи:
echo текст >> имя_файла.txt
Слить несколько текстовых файлов в один:
cat файл_1 файл_2 > итоговый_файл

Работа с архивами

Создать архив из содержимого каталога:
tar -cvf имя_архива.tar имя_каталога/
Сжать файлы:
bzip2 имя_файла
gzip имя_файла zip имя_файла
Распаковать архив:
gunzip имя_архива.tar.gz bunzip имя_архива.tar.bz bunzip2 имя_архива. ar.bz2 tar xvf имя_архива.tar tar xzf имя_архива.tgz

Управление правами доступа

Пример:
-r--r----- dr--r-----
Дефис вначале означает обычный файл, d — каталог (директорию). Дальше три группы по три символа означают права доступа для владельца, членов группы, в которую входит владелец, и для всех остальных пользователей соответственно.
дефис означает отсутствие прав,
r — означает право на чтение,
w — право на запись,
x — право на выполнение.
Просмотреть права доступа:
ls -l имя_файла_или_каталога
Задать права доступа:
chmod *** имя_файла_или_каталога где *** — права доступа, указанные абсолютным способом, или:
chmod группа=/+/-тип доступа имя_файла_или_каталога где группа: u (user, владелец), g (group, группа), o (other, другие), a (all, все), например: chmod a+rw имя_файла
Изменить владельца:
chown имя_пользователя имя_файла
Распространенные права доступа:
644 = rw-r--r--
666 = rw-rw-rw-
777 = rwxrwxrwx
Порядок цифр соответствует порядку пользователей (ugo), цифра в каждой позиции складывается из значений 4, 2 и 1 для прав r, w и x, соответственно. Так право полного доступа для владельца и отсуствие каких-либо прав для группы и прочих пользователей будет 700 (4+2+1.0.0).

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

Обновить список программного обеспечения:
apt-get update
Обновить систему:
apt-get upgrade
Найти программу в репозитарии по ключевому слову:

apt-cache search ключевое_слово
Показать информацию о пакете:
apt-cache show название_пакета
Установить программу из репозитария:
apt-get install имя_пакета
Удалить установленную программу:
apt-get remove имя_пакета
Удалить программу вместе с файлами настройки:
apt-get remove purge имя_пакета
Установить программу из скомпилированного пакета:
dpkg -i имя_пакета.deb
Удалить программу:
dpkg -r имя_пакета.deb
Очистить локальное хранилище полученных файлов пакетов:
apt-get clean
Просмотреть список установленных пакетов:
dpkg -l
Добавить частный источник программного обеспечения PPA (Personal Package Archive):
add-apt-repository ppa:user/ppa-name
Установить программу из бинарного файла (предварительно необходимо перейти в каталог с файлом программы):
./имя_файла.bin
Разрешить исполнение файла (если необходимо):
chmod a+x имя_файла.bin
/>
Установить программу из исходных файлов (предварительно необходимо перейти в каталог с файлом программы):
./configure
make
make install
Удалить программу, установленную из исходных файлов:
make uninstall
Запустить графическую программу с правами root:
gksudo имя_программы

Управление системой

Отобразить список зарегистрированных в системе пользователей:
who
Показать информацию об использовании оперативной памяти:
free
Показать список запущенных процессов:
ps
Завершить процесс:
killall имя_процесса
Показать список процессов в реальном времени:
top
Внести изменения в файл конфигурации
gedit /путь/к_файлу
Снизить скорость чтения диска в приводе:
hdparm -E 4 /dev/dvdrom

Диагностика системы

Проверить жесткий диск на «битые» секторы:
badblocks
Показать состояние сетевых интерфейсов:
ifconfig
Показать состояние беспроводных сетевых устройств:
iwconfig
Проверить таблицу маршрутизации:
route
Проверить доступность компьютера в сети:
ping имя_сайта_или_ip_адрес Остановить процесс: Ctrl+C
Проверить маршрут следования пакета:
traceroute имя_сайта_или_ip_адрес
Показать информацию о подключенных USB-устройствах:
lsusb
Отобразить список PCI-шин и подключенных к ним устройств:
lspci
Отобразить список оборудования системы:
lshw

Получение помощи

Показать Введение в пользовательские команды:
man intro
Отобразить краткое описание команды:
whatis имя_команды
Вывести информацию о команде:
man имя_команды info имя_команды имя_команды --help
Найти информацию по ключевым словам:
man -k ключевое_слово
Поиск по странице:
/ключевое_слово
Продолжить поиск:
N
Вывести историю команд:
history
Выполнить команду из списка истории команд:
!номер_команды !первые_буквы_команды
Очистить экран консоли:
clear

Объединение команд

Последовательное выполнение команд:
команда1 ; команда2
Последовательное выполнение команд при условии успешного выполнения предыдущей команды:
команда1 && команда2
Последовательное выполнение команд при условии неудачного выполнения предыдущей команды:
команда1 || команда2
Последовательное выполнение команд с передачей результатов выполнения предыдущей команды последующей:
команда1 | команда2
Запуск команды в фоновом режиме:
команда &

Символы подстановки

  • Текущий каталог: .
  • Родительский каталог: ..
  • Домашний каталог пользователя: ~
  • Один произвольный символ: ?
  • Любое количество произвольных символов: *
  • Символ из указанного диапазона: [a,b,x-z], например, [a,b].rar
  • Любые символы, кроме указанных: [!ab], например, [!ab].rar
  • Подстановка с помощью фигурных скобок: например, {a,b}{1,2} создаст строку a1 a2 b1 b2
  • Указание специального символа: \ или апостроф, например, ’имя файла’, или имя\ файла