Top.Mail.Ru

Как управлять правами в 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