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

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

Просмотр прав доступа на файлы и каталоги в Linux.

Прежде, чем двигаться далее, советую прочитать первую статью (если Вы этого не сделали, конечно) данного цикла про навигацию в терминале.

Для статьи я создал несколько файлов и каталогов в домашней папке.

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

ls -l

У нас будет выведено следующее сообщение в терминале:

Просмотр прав доступа на файлы и каталоги в Linux

Как видно, для наших файлов и каталогов вывелась подробная информация.

Слева отображены права доступа на файл и директорию вида:

drwxrwxr-x

Чуть ниже подробно разберём это "непонятную" надпись, а пока двигаемся дальше.

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

ls -l имя_нужного_файла

Вот как это выглядит:

Просмотр прав доступа на файлы и каталоги в Linux

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

ls -l имя_нужной_директории

Выглядит это следующим образом:

Просмотр прав доступа на файлы и каталоги в Linux

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

ls -Rl

либо ввести каталог:

ls -Rl имя_нужной_директории

Выглядит это следующим образом:

Просмотр прав доступа на файлы и каталоги в Linux

Расшифровка "символьной формы" прав доступа на каталоги и файлы в Linux.

После выполнения команд из первого пункта у нас выдавалось сообщение вида:

drwxrwxr-x

Будем использовать в качестве примера в этом пункте.

Это символьная форма прав доступа в Linux. Давайте разберем её подробно.

Данное сообщение состоит из 10 символов.

Первый символ обозначает тип данных.

Данный символ может быть следующим:

В большинстве случаев это будет:

-обычный файл;
dдиректория/каталог/папка (directory);
lсимволическая ссылка (link).

Но может быть следующим:

bфайл блочного устройства (block);
cфайл символьного устройства;
sдоменное гнездо (socket);
pименованный канал (pipe).

Следовательно, в нашем случае это директория (каталог, папка).

Следующие 9 символов обозначают права доступа.

rwxrwxr-x

Данные 9 символов состоят из трех групп:

rwx rwx r-x

  • Первая группа из трех символов обозначает права доступа владельца файла или директории (u - user).

  • Вторая группа из трех символов обозначает права доступа на файл или директорию для системной группы (g - group).

  • Третья группа из трех символов обозначает права доступа на файл или директорию для всех остальных (o - other).

У этих трёх групп одинаковая комбинация символов, то есть:

rwx

Что же они обозначают?

Очень легко запомнить:

rread, то есть, право доступа на чтение файла или директории.
wwrite, то есть, право на изменение и удаление файла или директории.
xeXecute, то есть, право на запуск файла как программы или вход в директорию.

Всегда располагаются в таком порядке:

rwx

Если вместо какого-то символа идёт тире (минус), к примеру:

r-x

то это значит, что отсутствуют права на изменение и удаление файла или директории.

Или так:

r--

то это обозначает, что отсутствуют права на изменение и запуск файла или директории. Доступен только просмотр.

Таким образом, из нашего примера:

drwxrwxr-x

это сообщение обозначает, что является директорией, у владельца и у группы есть полные права доступа - на чтение, изменение, удаление, запуск (вход внутрь каталога), у всех остальных есть только права на чтение и запуск(вход внутрь каталога).

Как видите, ничего сложного нет.

Определение владельца и группы файла или директории.

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

Те же самые команды из первого пункта:

ls -l

Определение владельца и группы файла или директории

Как видно на скриншоте:

  • в третей колонке идет имя владельца файла;
  • в четвертой колонке идет название группы.

Следовательно, если пользователь не владелец файла, но входит в группу, то у него будут права на файл или директорию этой самой группы.

Небольшое отступление.

В Nautilus (файловом менеджере Ubuntu), можно нажать правой кнопкой мыши на файле, открыть свойства, перейти на вкладку "Права" и увидеть:

Определение владельца и группы файла или директории

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

Подробно разобрали просмотр прав доступа на файлы и каталоги Linux.

Теперь приступим к их изменению в терминале.

Изменение прав доступа на файлы и каталоги в Linux в символьном режиме.

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

chmod personsOperatorRights имя_файла_или_имя_директории

Вместо persons нужно использовать совокупность символов или один из:

uuser, пользователь, владелец файла или директории.
ggroup, группа файла или директории.
oother, все другие.
aall, то есть, все вместе взятые - владелец, группа и все остальные.

Этот символ обозначает субъект, которому будут назначены, удалены или изменены права.

Вместо Operator, может быть один из следующих символов:

+"плюс", добавляем нужные права.
-"минус", удаляем нужные права.
="равно", устанавливаем нужные права.

Этот символ обозначает оператор, от которого зависит, будут ли добавлены, удалены или установлены нужные права, которые последуют за оператором.

Вместо Rights перечисляем символы прав доступа:

rread - чтение.
wwrite - запись.
xeXecute - выполнение.

Важно замечание.

Здесь идёт цепочка из трёх перечисленных символов, но в определённом порядке rwx. Но при этом, не нужно указывать тире для пропуска. Примеры: rwx, rw, wx, rx, r, w, x.

Вместо имя_файла_или_имя_директории указываем путь к файлу или директории.

Для рекурсивного изменения прав в каталоге используется параметр -R.

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

chmod -R personsOperatorRights имя_директории

Важно.

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

sudo chmod personsOperatorRights имя_файла_или_имя_директории

Приступим к практике. Разберём примеры.

1. Убираем права для группы на изменение файла:

chmod g-w file1

Убираем права для группы на изменение файла

2. Убираем права на чтение у группы и всех остальных:

chmod go-r file1

Убираем права для группы на изменение файла

3. Добавим для группы права на чтение и изменение:

chmod g+rw file1

Убираем права для группы на изменение файла

4. Изменим рекурсивно права на файлы и директории внутри нужной директории. Отменим, к примеру, все права у остальных пользователей и групп:

chmod -R o-rwx ~/linuxrussia.com/

Убираем права для группы на изменение файла

Дополнительно.

Вы, наверное, зачастую видели команду:

chmod +x имя_файла.sh

Это значит, что мы даём права на выполнение данного файла как программы всем.

Это аналогично следующим командам:

chmod ugo+x имя_файла.sh  
chmod a+x имя_файла.sh

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

Изменение прав доступа на файлы и каталоги в абсолютном режиме.

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

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

chmod 775 имя_файла

Вы их выполняли в терминале. А многие из вас задумывались, что это за "магические цифры". Но на самом деле никакая это не магия.

Давайте разберем, что же значат эти цифры.

Итак, у нас есть комбинация прав доступа на директорию:

rwxrwxr-x

А теперь делим на группы:

rwx rwx r-x

Теперь преобразуем в двоичном виде наши права доступа:

  • если есть символ, то это 1.
  • если тире (пропуск), то это 0.

Следовательно, наша комбинация будет выглядеть следующим образом:

111 111 101

А теперь переведем из двоичной в восьмеричную систему исчисления:

7 7 5

Вот и получили наше "магическое" число 775.

Более проще запомнить:

rэто 4
wэто 2
xэто 1

Каждая цифра обозначает определенную группу:

  • Первая цифра - права для владельца,
  • вторая цифра - права для группы,
  • третья цифра - права для остальных.

Просто прибавляем цифры. К примеру, нам нужно чтение r и изменение w. Прибавляем 4+2, получаем 6.

Если хотим выдать полные права только владельцу файла, а остальным убрать все:

chmod 700 имя_файла

Изменение прав доступа на файлы и каталоги в абсолютном режиме

Вот так меняются права в абсолютном (числовом) режиме.

Изменение владельца и группы файла или каталога.

Для изменения владельца и группы файла или каталога есть команда chown.

Используется следующий шаблон выполнения данной команды chown:

sudo chown имя_нового_владельца:имя_новой_группы имя_файла_или_директории

Если хотим изменить только группу, то шаблон следующий:

sudo chown :имя_новой_группы имя_файла_или_директории

Если хотим изменить только владельца, то шаблон следующий:

sudo chown имя_нового_владельца имя_файла_или_директории

Если рекурсивно:

sudo chown -R имя_нового_владельца:имя_новой_группы имя_директории

В принципе, ничего сложного.

Чтобы узнать имя текущего пользователя, используется команда:

whoami

Чтобы узнать в каких группах состоит текущий пользователь:

groups

Получить список пользователей:

users

Получить группы конкретного пользователя (вместо user_name ввести имя пользователя):

groups user_name

Давайте сменим владельца у файла на root:

sudo chown root file1

Изменение владельца и группы файла или каталога

Вот таким образом меняются владельцы и группы.


Комментарии отключены