Поскольку Linux является многопользовательской системой, где реализован механизм разграничения прав для отдельных пользователей с разным уровнем доступа. Например, для администрирования и внесения необходимых изменений в любой файл или разрешения только на доступ к данным без возможности их редактирования. Сегодня мы рассмотрим, как на Linux дать права на папку пользователю. Для этого используется команда chmod, а также ряд других сопутствующих. Используйте эту инструкцию при работе с
Всего предусмотрено три варианта прав:
Но это касается только файлов. Если речь идет о каталогах, то под правом доступа подразумевается, что пользователь сможет его открыть и просмотреть содержимое.
Администратор сервера может разделять пользователей по группам и давать каждой из них (либо же индивидуально каждому по имени) отдельные права доступа. При этом нужно понимать, что root админа не касаются эти права, он имеет неограниченный доступ на просмотр и изменение файлов.
Узнать Linux права пользователя на папку очень просто. Для этого используется команда:
ls -l имя каталога
Наглядно её использование можно увидеть на следующем примере:
ls -l certs.xml
После введения такой команды вы получите в ответ:
-r-r-- 1 denis 2115693 Jun 11 12:11 certs.xml
Расшифровывается написанное так:
В операционной системе Linux права пользователя на папку можно задать при помощи команды chmod. Это можно сделать одним из двух способов — символьным или абсолютным. В первом случае задаются символы, которые обозначают для пользователя возможности работы с файлами — r, w, x (чтение, редактирование и запись). Но в UNIX намного практичнее использовать абсолютный метод. В чем он заключается можно детально разобраться на примере:
rw-r--
Этот набор символов означает, что пользователь может лишь читать и изменять файл (r и w). При этом члены его группы могут лишь открывать его для просмотра, а посторонние и вовсе не имеют к данным доступа.
Теперь давайте возьмем лишь права только владельца файла: rw-. Ему разрешено чтение, держим в памяти 1, а также редактирование, запоминаем ещё 1. Поскольку запуск запрещен, то добавляем 0 и получаем в итоге цифру 110. Если её перевести из двоичной системы в восьмеричную, то выйдет 6. Для перевода других чисел вы всегда сможете воспользоваться приведенной ниже таблицей.
Таблица 1. Преобразование из двоичной в восьмеричную систему
Двоичная система | Восьмеричная система | Двоичная система | Восьмеричная система |
000 | 0 | 100 | 4 |
001 | 1 | 101 | 5 |
010 | 2 | 110 | 6 |
011 | 3 | 111 | 7 |
Если по подобию разобрать на числа права группы владельца, то выйдет 100. При его переводе в восьмеричную систему останется 4. У посторонних набор и вовсе прост — 000. При переводе останется просто 0. Итак, общие права доступа для данного файла — 640 и чтобы их установить, требуется лишь внести команду следующего формата:
chmod 640 имя_файла
Чаще всего в практике применяются следующие варианты чисел для команды:
Символьный метод оптимальнее только в одном случае, если необходимо быстро сделать файл скрипта (script) исполнимым. Например, для этого потребуется лишь прописать команду:
chmod +x script
А если нужно запретить выполнение, то просто укажите -х, это будет выглядеть так:
chmod -x script
Получить все необходимые детали относительно применения символьного метода можно, вызвав инструкцию с помощью команды
man chmod.
Выводится она (ls -l) следующим образом:
-r-r-- 1 denis 2115693 Jun 11 12:11 certs.xml
После установки прав доступа требуется ввести имя пользователя и данные его группы. С помощью такой команды можно в Linux расширить права на папку пользователю владельцу — denis, если его группа носит одноименное название. Но если вам нужно передать файл другому владельцу, то необходимо для этого использовать chown. Наглядно она выглядит так:
chown пользователь файл
Важно понимать, что после смены владельца, возможно, вы потеряете доступ к файлу, если он не будет разрешен новым собственником. Кроме этого, передать другому файл посредством этой команды может только тот, кто является владельцем на данный момент. Это правило не касается только администраторов root имеющих полный доступ как к каталогам, так и к файлам.
Для смены атрибутов выбранного файла применяется команда chattr. Используя «+» можно добавить атрибут, а с помощью «-» наоборот его убрать. Для примера давайте возьмем:
# chattr +i /boot/grub/menu.lst
Введение такой команды приведет к тому, что файл нельзя редактировать, менять его имя или даже удалять. Установить атрибут «i» может лишь суперпользователь или процесс CAP_LINUX_IMMUTABLE. Удаление данного атрибута производится командой:
# chattr -i /boot/grub/menu.lst
Полезным является и атрибут «j». Он предназначен, чтобы вносимые в файл данные предварительно были записаны в журнал файловой системы. Функционировать такой атрибут будет только в системах, имеющих опции data=ordered или data=writeback. Если изначально использовано data=journal, то данные уже автоматически сохраняются и он ничего не изменит.
Прочие важные атрибуты:
Для установки любого атрибута можно воспользоваться chattr, а посмотреть права на папку Linux пользователя получится командой lsattr. Другие атрибуты есть в справочнике — man chattr.