Управляем пользователями и правами в Linux (rwx, useradd, sudo, su)
В данном видео наконец разберемся, что скрывается за этими загадочными "drwxr-xr--". Спойлер: там нет ничего лишнего, только чёткая логика.
Из видео вы узнаете:
🔹 Почему у "ls -l" такие странные символы и как прочитать их как открытую книгу
🔹 Чем "r" отличается от "w" и "x" (и почему для папки "x" — это «войти», а не «запустить»)
🔹 Кто такой владелец, группа и «все остальные» (и почему при создании пользователя появляется группа с тем же именем)
🔹 Почему "sudo" просит пароль, даже если вы и так "root" (спойлер: безопасность, а не издевательство)
🔹 В чём разница между "su" и "sudo" (подмена пользователя Vs подмена пользователя и выполнение)
🔹 Как создать нового пользователя одной командой и почему без "sudo" у вас ничего не выйдет
Смотрите видео и переставайте бояться терминала. Ошибка "Permission denied" - это не приговор, а подсказка.
⇓ Запись видеоурока на RuTuBe ⇓
⇓ Запись видеоурока во ВКонтакте ⇓
⇓ Запись видеоурока на YouTuBe ⇓
Команды:
{useradd} -m (home) - добавить с созданием домашнего каталога
{useradd} -s (shell) /bin/bash - добавить с указанием оболочки bash
{useradd} -p (password) 123qwerty user1 - добавить с указанием пароля
useradd -m (home) -s (shell) /bin/bash -p (password) 123qwerty user1 - добавить пользователя user1 с домашним каталогом, оболочкой bash и паролем 123qwerty
sudo (substitute user and do) - подменить пользователя и сделать
su (substitute user) - подменить пользователя
Теперь давайте немного разберемся с правами доступа к директориям и файлам внутри Linux системы.
Перейдем в корневой каталог и выведем его содержимое
cd /
ll
lrwxrwxrwx 1 root root 8 фев 17 17:19 sbin -> usr/sbin/
drwxr-xr-x 6 root root 4096 фев 17 17:25 snap/
drwxr-xr-x 2 root root 4096 фев 17 17:19 srv/
-rw------- 1 root root 1908408320 июл 17 07:48 swap.img
Смотрите, слева у нас есть куча непонятных символов и как кажется написанных вообще хаотично, однако это не так. Этот непонятный набор символов и прочерков и есть права доступа на файл или директории.
Во-первых, самый первый символ указывает, что это, файл или директория. Если указан «-» значит это файл, если «d» (directory) значит это директория. Так же бывают ссылки, которые обозначаются символом «l» (link), где в имени данной ссылки отображается элемент, на который ведет данная ссылка.
Далее идет 9 символов, а точнее 3 группы по 3 символа, это и есть права доступа.
У каждой директории и файла есть 3 типа прав, это права владельца, права группы и права для всех остальных. Так вот, первая группа из трех символов, это права владельца (user), вторая права группы (group) и третья для всех остальных (other).
Права могу иметь три значения:
r - read - чтение
w - write - запись
x - executable - выполнение
Если в списке значений прав доступа присутствует прочерк «-» это означает, что у данного пользователя, группы или всех остальных нет определенных прав.
В нашем случае, мы видим, что для указанной директории владелец, т.е. пользователь, имеет полные права, т.е. на чтение, запись и выполнение. Члены группы только на запись и чтение, а остальные только на чтение и выполнение.
И кстати, стоит учитывать, что права доступа всегда идут как rwx, т.е. сначала чтение, потом запись и выполнение. Они не меняют своей последовательности.
А как определить кто у нас владелец и как называется группа для который настраивается доступ? Так вот следующие записи root root это название пользователя и группы. Т.е. пользователь root, или суперпользователь, и группа root.
Давайте перейдем в домашний каталог текущего пользователя и посмотрим какие права на файлы и директории указаны там.
cd ~
ll
Как вы видите, здесь имя пользователя и название группы изменилось на it-skills.
Тут может возникнуть вопрос: - «Почему имя пользователя и имя группы совпадают?»
Все по тому, что при создании пользователя в системе автоматически создается группа с таким же названием и если пользователь создает какой-то файл или директорию, то он автоматически становится её владельцем, а в качестве группы так же указывается группа данного пользователя. Хотя, потом, при желании все это можно изменить.
И так, давайте изучим права доступа к папке профиля данного пользователя. Как я говорил ранее символ «.» обозначает текущий каталог. И получается, что на данный каталог
- владелец: it-skills имеет полный доступ
- участники группы: it-skills имеют доступ на чтение и выполнение (для директории, права на выполнение позволяют просто войти в данную папку) но ничего не могут записывать в неё
- все остальные: ничего не могут делать с этой папкой
Мы поможем вам легко получить базовые навыки работы с Linux, без лишней теории и воды. Убедитесь, что осваивать новое может быть просто!
Получите бесплатный доступ к первым модулям курса.
Чтобы удостовериться, что мы действительно правильно прочитали права доступа, давайте перейдем на уровень выше и посмотрим какие права указаны там для директории it-skills
cd ..
ll
Как вы видите, права те же самые, а значит символ «.» действительно указывает на текущую директорию.
Кстати, как вы видите права на директорию «.» стали такие же как на директорию «..» когда мы просматривали список файлов и директорий из профиля пользователя. Т.е. это говорит о том, что директория «..» действительно является каталогом выше и мы можем посмотреть на неё права.
Давайте поэкспериментируем с правами доступа для разных пользователей. Однако, у нас в системе на данный момент один пользователь, точнее два это it-skills и root, но под root-ом никто не работает и ему разрешено все в системе так как он является супер пользователем.
Поэтому создадим еще одного пользователя в системе
useradd -m -s /bin/bash -p 123qwerty user1
useradd -m (home) -s (shell) /bin/bash -p (password) 123qwerty user1 - добавить пользователя user1 с домашним каталогом, оболочкой bash и паролем 123qwerty
Данную команду можно разложить на следующие составляющие.
-m (home) - создание домашнего каталога
-s (shell) /bin/bash - оболочка в которой будет работать пользователь
-p (password) 123qwerty - пароль пользователя
user1 - имя пользователя
Однако, у нас выдается сообщение, что недостаточно прав на выполнение данной операции. И раз уж мы дошли до урока связанного с правами доступа, давайте разберемся, что это за команда sudo, которую мы до этого использовали?
sudo (substitute user and do) - подменить пользователя и сделать
Указание данной команды позволяет запускать команды с повышением прав, опять же в рамках разрешенных для данного пользователя. Любые плюс минус серьезные изменения вносятся в систему с использованием данной команды.
sudo useradd -m -s /bin/bash -p 123qwerty user1
Вводим пароль для пользователя it-skills, это нужно для того, чтобы посторонний человек, если сел за терминал, а вы на нем авторизованы, то система все равно попросит повторить пароль, чтобы точно убедиться, что это вы.
Перейдем в каталог home и убедимся, что у нас создалась директория для пользователя user1
cd /home
ll
Директория создана, а значит команда выполнена успешно.
Кстати, в Линукс системах, если вам не выдается никакой ошибки или дополнительного сообщения, значит команда выполнена успешно!
Теперь давайте авторизуемся под пользователем user1
su user1
sudo su user1
su (substitute user) - подменить пользователя
cd /home
ll
cd it-skills
Выдается сообщение bash: cd: it-skills/: Permission denied - это означает, что нам запрещено входить в данную папку.
Проверяем по правам и действительно, для остальных (other) стоят прочерки ---, т.е. вообще нет никаких прав.
Поэтому в следующем видео мы рассмотрим команды по изменению прав доступа.
Резюме: В итоге мы изучили следующие команды ключи:
{useradd} -m (home) - добавить с созданием домашнего каталога
{useradd} -s (shell) /bin/bash - добавить с указанием оболочки bash
{useradd} -p (password) 123qwerty user1 - добавить с указанием пароля
useradd -m (home) -s (shell) /bin/bash -p (password) 123qwerty user1 - добавить пользователя user1 с домашним каталогом, оболочкой bash и паролем 123qwerty
sudo (substitute user and do) - подменить пользователя и сделать
su (substitute user) - подменить пользователя