1. Понятие прав доступа
Когда вы работаете с файлами или директориями в Linux, возникает необходимость управлять доступом к ним. Представьте, что вы оставили свои носки на виду, и теперь каждый в доме может их использовать! Права доступа в Linux позволяют предотвращать "несанкционированное использование носков" (или чего-то важнее, например, ваших скриптов). Давайте начнем разбираться.
Каждый файл (и директория) в Linux имеет три набора прав доступа, которые определяют, кто может их читать, записывать или выполнять:
- Чтение (r): Позволяет просматривать содержимое файла или список файлов в директории.
- Запись (w): Разрешает изменять содержимое файла или добавлять/удалять файлы из директории.
- Выполнение (x): Даёт возможность выполнять файл как программу (или заходить в директорию).
Трёхуровневая модель

Каждое право применяется к трём группам пользователей:
- Владелец (owner): Тот, кто создал файл.
- Группа (group): Пользователи, объединенные в группу, которой назначен файл.
- Остальные (others): Все остальные пользователи системы.
Пример прав доступа для файла:
-rwxr-xr--
Расшифруем:
- Первый символ
-обозначает, что это файл (для директории будетd). - Первые три символа
rwx— права для владельца (чтение, запись, выполнение). - Следующие три символа
r-x— права для группы (чтение, выполнение). - Последние три символа
r--— права для остальных (только чтение).
2. Команда chmod: управление правами доступа
Символьный формат записи
Команда chmod изменяет права доступа к файлам и директориям. Символьный формат записи выглядит так:
chmod [кто][действие][права] имя_файла
- Кто:
u(владелец),g(группа),o(остальные),a(все). - Действие:
+(добавить права),-(убрать права),=(установить права точно). - Права:
r(чтение),w(запись),x(выполнение).
Примеры:
# Установим права на выполнение для всех
chmod a+x script.sh
# Добавим возможность записи только для группы
chmod g+w file.txt
# Заберем право чтения у остальных
chmod o-r document.txt
Восьмеричный формат записи

Восьмеричный формат (или числовой) более компактный, но требует понимания "магии чисел". В этом формате каждая комбинация прав представляется числом:
r = 4w = 2x = 1
Права складываются:
rwx = 7(4 + 2 + 1)rw- = 6(4 + 2)r-- = 4
Формат записи:
chmod [число][число][число] имя_файла
Пример:
# Установим права rwx для владельца, r-x для группы, r-- для остальных
chmod 754 file.sh
3. Изменение владельца файла: команда chown
Если вам нужно передать файл другому пользователю (или группе), поможет команда chown.
Формат:
chown [пользователь]:[группа] имя_файла
Примеры:
# Передача владения пользователю user1
chown user1 myfile.txt
# Передача владельца и группы
chown user1:group1 myfile.txt
# Только смена группы
chown :group2 myfile.txt
4. Маска по умолчанию: umask
Когда вы создаете файл, права доступа для него определяются системой. Например, права могут быть rw-r--r--. Но откуда они берутся? Ответ: от команды umask.
Что такое umask?
umask определяет, какие права не будут установлены для новых файлов.
Например:
- Базовый набор прав для файла:
666(нет выполнения). - Маска:
022. - Итоговые права:
644(666 - 022).
Команды:
- Посмотреть текущую маску:
umask - Установить новую маску:
umask 0022
Пример:
# Установка маски, чтобы новые файлы имели rw-rw-r--
umask 0002
5. Права администратора и sudo
Что такое sudo?
sudo (аббревиатура от "superuser do") — это команда в Linux и Unix-подобных системах, которая позволяет пользователю выполнять команды от имени суперпользователя (root) или другого пользователя с повышенными привилегиями.
Система sudo обеспечивает временный доступ к административным возможностям без необходимости постоянно работать под учетной записью root, что снижает риски случайного или вредоносного изменения системы.
Если очень упростить, то sudo пишется перед командой, которую нужно выполнить с правами администратора.

Как работает sudo?
Запуск команды:
Когда вы вводите команду с sudo, система проверяет, есть ли у вашего пользователя право выполнять команды с повышенными привилегиями.
Например:
sudo apt update
Аутентификация:
При первом использовании sudo в текущей сессии система попросит ввести пароль текущего пользователя (не root).
После успешного ввода пароля система сохраняет аутентификацию на короткий промежуток времени (обычно 5-15 минут), чтобы не запрашивать пароль для каждой команды.
Выполнение команды:
Если пользователь имеет права, указанные в конфигурации sudo, команда будет выполнена с правами суперпользователя.
Основные функции и команды sudo
Запуск команды с привилегиями:
sudo <команда>
Например:
sudo apt install nginx
Выполнение команды от имени другого пользователя: Используйте флаг -u:
sudo -u <имя_пользователя> <команда>
Например:
sudo -u user1 ls /home/user1
Получение административного терминала: Запустите оболочку с правами root:
sudo -i
или:
sudo su
Просмотр конфигурации sudo:
sudo -l
Показывает команды, которые текущий пользователь имеет право выполнять.
Редактирование конфигурации sudo:
sudo visudo
Эта команда открывает файл конфигурации /etc/sudoers для безопасного редактирования.
6. Примеры
Попробуем применить наши знания на практике.
Задание 1: Управление правами с chmod
Создайте файл:
touch myfile.txtУстановите для владельца права на чтение, запись и выполнение:
chmod u+rwx myfile.txtДобавьте права только на чтение для остальных:
chmod o+r myfile.txtПроверьте права:
ls -l myfile.txt
Задание 2: Смена владельца с chown
Создайте файл:
touch ownedfile.txtИзмените владельца на пользователя
user1(понадобятся права администратора):sudo chown user1 ownedfile.txtПроверьте изменения:
ls -l ownedfile.txt
Задание 3: Эксперименты с umask
Проверьте текущую маску:
umaskУстановите маску
027:umask 027Создайте новый файл:
touch newfile.txtПроверьте права созданного файла:
ls -l newfile.txt
7. Типичные ошибки и особенности
- Забыли
sudoпри смене владельца: Только администратор может менять владельца файла. Если вы получили ошибку "Operation not permitted", попробуйте добавитьsudo. - Неправильный порядок в команде
chmod: Поменяли права не тому объекту. Убедитесь, что выбрали нужный файл или директорию. umaskвлияет только на новые файлы: Если вы пытаетесь поменять права уже существующих файлов с помощьюumask, это не сработает. Используйтеchmod.
Знаете ли вы, что права доступа в Linux настолько гибкие, что можно создать файл, который "видит" только один человек во всей вселенной? Как говорится, с великими правами приходит великая ответственность! Теперь, вооруженные chmod, chown и umask, вы готовы делать свои Linux-системы не только удобными, но и безопасными.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ