В данной статье мы рассмотрим такие важные команды, которые позволяют изменять права доступа. Каждому файлу или категории можно выставить свои права доступа.

Например если мы воспользуемся командой ls с ключом -l, который позволяет вывести список файлов и каталогов с указанием прав доступа то увидим следующую картину:    

ls -l

Вывод списка файлов командой ls -l

Здесь стоит обратить внимание на первый столбец, который состоит из непонятного повторяющегося набора букв. Этими символами и обозначаются права доступа к файлу или каталогу. 

Первая буква обозначает является ли объект каталогом. В данном случае один является каталогом 1, а 1.txt - файлом, что подтверждают первый символ прочерк. 

Права на файлы и каталоги распространяться на три категории. За это отвечает 9 остальных символов. Каждой категории выделено по три символа: первая категория это владелец файла или каталога, вторая категория это группа пользователей и третья категория это остальные пользователи. Символы обозначается следующим образом: r это доступ на чтение, w этот доступ на запись, x это доступ на выполнения файла, прочерк - это отсутствие прав.

В итоге если объединить все знания, то получается то, что 1 это директория d, владельцу данной директории предоставлен доступ на чтение, запись и выполнение rwx, группе пользователей данной директории предоставлен такой же доступ, на чтение, запись и выполнение rwx, а всем остальным пользователям установлен доступ на чтение и выполнение r-x

Так же следует обратить внимание на третий и четвертый столбец. В третьем столбце отображается имя владельца файла или каталога, а в четвертом столбце название группы.

Команда chmod

Первая команда, которая позволит нам изменять права доступа называется change mod. Она пишет следующим образом chmod. Для того, чтобы получить дополнительную информацию можно воспользоваться мануалом при помощи команды help:   

chmod --help

Так же на википедии есть статья более подробно описывающая данную команду. Так же помимо символьного представления доступа можно воспользоваться цифровым. Для удобства можно воспользоваться данной таблицей:

двоичная восьмеричная символьная права на файл права на каталог
000 0 --- нет нет
001 1 --x выполнение чтение свойств файлов
010 2 -w- запись нет
011 3 -wx запись и выполнение всё, кроме получения имени файлов
100 4 r-- чтение чтение имён файлов
101 5 r-x чтение и выполнение доступ на чтение файлов/их свойств
110 6 rw- чтение и запись чтение имён файлов
111 7 rwx все права все права

Установим нашему файлу 1.txt такие же права, которые у него есть сейчас. А именно чтение и запись для владельца, чтение и запись для группы и только чтение для остальных пользователей.

Для начала воспользуемся цифровой вариацией. Для этого пишем chmod цифровое представление прав доступа, в нашем случае это 664 и в конце указываем название файла или папки, в нашем случае это 1.txt:

chmod 664 1.txt

Вывод списка файлов командой ls -l

Как мы видим права у файл 1.txt  не изменились. Для наглядности установим все возможные права всем пользователям. Для этого поменяем наше число на 777:

chmod 777 1.txt

Вывод списка файлов командой ls -l

Как мы видим мы установили все права для данного файла. Теперь вернем исходная права при помощи символьного представления. Для пользователя укажем права на чтение и запись, для группы укажем такие же права, а для всех остальных только на чтение:

chmod u=rw,g=rw,o=r 1.txt

Так же можно добавлять или удалять права при помощи ключевых символов плюс и минус соответственно. Например добавим владельцу файла право на выполнение. Для этого добавим ключевое слово +x к нашему пользователю:

chmod u+x 1.txt

Вывод списка файлов командой ls -l

Как мы видим владельцу файла добавилось право на выполнение файла.

Теперь уберем это право при помощи ключевого слова -x:

chmod u-x 1.txt

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

Например добавим всем пользователям доступ на выполнения к файлу 1.txt. Для этого пропишем следующую команду:

chmod a+x 1.txt

Так же может возникнуть такая ситуация, когда необходимо установить права всему содержимому каталога. Для этого воспользуемся знакомым нам ключом -R и следующей командой мы установим права 777 всему содержимому каталога 1:

chmod -R 777 1/

Перейдем в каталог 1 и проверим:

cd 1/
ls -l

Вывод списка файлов командой ls -l

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

find /home/ub/Загрузки/ -type f -exec chmod 644 {} \;

Здесь мы указываем что необходимо найти все файлы в папке загрузки и для них установить права доступа 644. Тоже самое можно сделать и для каталогов. Только в качестве типа укажем d место f.

find /home/ub/Загрузки/ -type d -exec chmod 755 {} \;

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

Вывод списка файлов командой ls -l

Как мы видим наши каталоги имеет права 755, а наши файлы имеют права 644.

Команда chown

Следующая команда chown. Она позволяет сменить владельца файла или каталога или его группу. Например изменим владельца файла 1.txt. Для этого введем следующую команду:

chown root:ub 1.txt

Здесь вначале мы укажем нового владельца файла - это у нас root и через двоеточие укажем группу - это у нас ub. Так как в качестве владельца указывается пользователь root, то данную команду нужно выполнить от имени администратора:

sudo chown root:ub 1.txt

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

Команда chgrp

Теперь изменим группу нашего файла для этого воспользуемся командой change group. В сокращенном варианте она пишется следующим образом:

chgrp root 1.txt

Здесь через пробел укажем название группы и название файла. Эту команду так же необходимо выполнить от имени администратора. 

sudo chgrp root 1.txt

Вывод списка файлов командой ls -l

Как мы видим наш файл принадлежит группе root.