Как управлять правами в Linux: chmod, chown
В этом видео мы наконец разберёмся, как Linux решает, кому можно зайти в папку, кому — изменить файл, а кому — только посмотреть. Спойлер: никакого хаоса, всё подчиняется простым и логичным правилам.
Из видео вы узнаете:
🔹 Почему права на папку работают не так, как права на файл
🔹 Кто такие "владелец", "группа" и "все остальные" - и почему их нельзя путать
🔹 Как одной короткой командой дать доступ к своей папке другому пользователю
🔹 Как запретить группе что-то менять, но оставить право читать
🔹 Как применить новые права сразу ко всем файлам внутри папки (и не перебирать их по одному)
🔹 Как передать папку другому владельцу или сменить её группу
🔹 Почему обычный пользователь не может просто так отобрать файл у соседа
🔹 Кто такой root и почему он может всё — даже если вы очень старались всё сломать
⇓ Запись видеоурока на RuTuBe ⇓
⇓ Запись видеоурока во ВКонтакте ⇓
⇓ Запись видеоурока на YouTuBe ⇓
Смотрите видео и переставайте дёргаться при каждом "Permission denied". Это не ошибка — это просто Linux вежливо спрашивает: "А ты точно уверен, что тебе сюда можно?"
Подробности о курсе "ЛУНА" здесь 👉 https://pages.it-skills.online/luna-linux-ustanovka-nastrojka-administrirovanie.html
Команды:
chmod (change mode) - изменения прав доступа (изменить режим)
chmod o+rwx it-skills (other) - добавить остальным пользователям полные права на директорию it-skills
chmod g-w access_test (group) - убрать права на запись у группы
chmod u+x access_test (user) - добавить права на исполнение для владельца файла
chmod a+x access_test (all) - сделать файл исполняемым для всех
chmod -R a+rwx access (Recursive) - изменить права для директории access и всех содержащихся в ней объектов
chmod -R a-w access/* - изменить права для всех объектов содержащихся в директории access
chown (change owner) - изменяет владельца и группу файла
chown it-skills access - сменить владельца для папки access
chown :it-skills access - сменить группу для папки access
chown user1:user1 access - сменить владельца и группу для папки access
Как вы видите, настройка прав по умолчанию для домашних каталогов пользователей выглядит следующим образом.
d rwx r-x --- - владелец имеет полные права, группа только права на чтение и выполнение, а все остальные не имеют вообще никаких прав.
Давайте поэкспериментируем с данными настройками, а конкретно разрешим всем пользователям доступ к домашнему каталогу пользователя it-skills.
Для этого используется команда
chmod (change mode) - изменения прав доступа к файлам и каталогам (изменить режим).
Однако, она используется только с определенными ключами
chmod o+rwx it-skills (other) - добавить остальным пользователям полные права на директорию it-skills
Однако, нам не получится это сделать, так как user1 не может изменять права доступа для папки профиля пользователя it-skills. Поэтому войдем под пользователем it-skills и изменим права на свой домашний каталог, а потом проверим открылся ли доступ у пользователя user1
su it-skills
chmod o+rwx it-skills
ll
sudo su user1
ll
cd it-skills
У нас получилось зайти в директорию и как вы видите права для остальных пользователей действительно изменились.
Судя по правам, мы можем создавать в данной директории файлы и папки, давайте это проверим.
touch access_test
ll
Файл был создан, значит права действительно есть.
Но, как вы видите, она распространяются только на текущую папку, для всех остальных файлов и подпапкой действуют свои определенные права.
Рас уж мы создали файл access_test, давайте поэкспериментируем с настройкой прав.
Как вы уже, наверное, поняли, общий синтаксис команды chmod выглядит следующим образом:
chmod
{u (user) g (group) o (other)}
{- (убрать права) + (добавить права)}
{r (read) w (write) x (execute)}
Таким образом, если мы хотим убрать у группы пользователей возможность вносить изменения в данный файл, то команда будет выглядеть следующим образом.
chmod g-w access_test (change mode group - write) - изменить режим убрав у группы права на запись
chmod g-w access_test
ll
Как мы видим, теперь у группы нет прав на запись в данный файл.
Аналогичным образом давайте добавим владельцу права на выполнение файла
chmod u+x access_test
Так же, если вы хотите добавить или убрать какие-то права сразу для владельца, группы и остальных, то есть ключ a (all) который позволяет назначить нужные права для всех.
chmod a+x access_test
Давайте сделаем следующее, создадим папку, а в ней несколько файлов:
mkdir access && cd access && touch test1 && touch test2 && touch test3
ll
cd ..
Мы поможем вам легко получить базовые навыки работы с Linux, без лишней теории и воды. Убедитесь, что осваивать новое может быть просто!
Получите бесплатный доступ к первым модулям курса.
Перейдем на уровень вверх.
Смотрите, допустим нам надо изменить права для папки, всех её подпапок и файлов. Как вы понимаете, выполнять все эти операции для каждого файла довольно сложно и долго. Именно для облегчения данной задачи есть у команды chmod дополнительный ключ -R (Recursive) который вносит изменения прав во все файлы, каталогов и подкаталогов.
chmod -R a+rwx access (Recursive) - изменить права для директории access и всех содержащихся в ней объектов
chmod -R a+rwx access
cd access
ll
Как вы видите, права для всех папок были изменены.
Если вам нужно изменить права только для всех файлов, каталогов и подкаталогов, содержащихся в определенной папке, то можно это сделать следующим образом
chmod -R a-w access/* - изменить права для всех объектов содержащихся в директории access
cd ..
chmod -R a-w access/*
cd access
ll
Ну и наконец, нам осталось разобраться как изменять владельца и группу для файла или директории?
Для этого существует команда chown
chown (change owner) - изменяет владельца и группу файла
Синтаксис у неё следующий
chown it-skills access - сменить владельца для папки access
chown it-skills:it-skills access - сменить владельца и группу для папки access
chown :it-skills access - сменить группу для папки access
cd ..
ll
chown it-skills access
sudo !!
Так, у пользователя user1 недостаточно прав для смены владельца и группы для данной папки. Давайте авторизуемся тогда под it-skills и под ним выполним все нужные нам операции.
su it-skills
ll
chown it-skills access
sudo !!
ll
Владелец изменился.
Теперь изменим группу.
chown :it-skills access
ll
И теперь давайте изменим обратно на владельца и группу на user1 и user1
chown user1:user1 access
ll
Отлично, все прекрасно отработало!
Ну, а если вы вдруг где-то накосячили с правами, залогиньтесь под root-ом и измените права на нужные. root является суперпользователем и он может в системе все!
Резюме: В итоге мы изучили следующие команды
chmod (change mode) - изменения прав доступа (изменить режим)
chmod o+rwx it-skills (other) - добавить остальным пользователям полные права на директорию it-skills
chmod g-w access_test (group) - убрать права на запись у группы
chmod u+x access_test (user) - добавить права на исполнение для владельца файла
chmod a+x access_test (all) - сделать файл исполняемым для всех
chmod -R a+rwx access (Recursive) - изменить права для директории access и всех содержащихся в ней объектов
chmod -R a-w access/* - изменить права для всех объектов содержащихся в директории access
chown (change owner) - изменяет владельца и группу файла
chown it-skills access - сменить владельца для папки access
chown :it-skills access - сменить группу для папки access
chown user1:user1 access - сменить владельца и группу для папки access