Права на файлы и папки в Linux: обзорная статья для пользователей и администраторов
Вступление
В операционной системе Linux существует концепция “Всё это файл” в рамках которой, любые данные можно выразить в виде байтов, занимающих определённый объём в оперативной или постоянной памяти. Файлом может быть представлен как простой текстовый документ, так и целый жёсткий диск.
Потому, права на файлы и папки в Linux играют важную роль в обеспечении безопасности и организации доступа к ресурсам. В этой статье мы подробно рассмотрим права на файлы и папки, а также роль пользователя root в управлении доступом к ресурсам.
Владелец и группа владельцев
- Владелец файла или папки - это пользователь, который создал ресурс или был назначен администратором. Группа владельцев - это группа пользователей, которые имеют доступ к ресурсу.
- В Linux каждый пользователь имеет уникальный идентификатор (UID) и групповой идентификатор (GID). UID и GID используются для определения прав доступа к ресурсам.
- Каждый файл, папка или процесс имеет владельца-пользователя, который имеет широкие (но не всегда полные) права на объект. А также владельца-группу
- Владелец файла управляет правами на файл для себя, группы, и остальных пользователей
- Группа позволяет нескольким пользователям работать с одним файлом
Права доступа
Права на доступ к файлам и папкам в linux организованы в виде прав на чтение, запись, выполнение для пользователя, группы, остальных пользователей. И представлены в двоичном, восьмеричном, и символьном виде. Для простоты, ниже мы будем использовать только символьный и числовой (восьмеричный) вид.
- Чтение (r) или (4): право на чтение файла или просмотр содержимого папки.
- Запись (w) или (2) : право на запись в файл или создание файлов в папке.
- Выполнение (x) или (1): право на выполнение файла как программы или доступ к папке как к каталогу.
Например, права доступа в символьном виде можно интерпретировать следующим образом:
rwx r-x r--
- Владелец имеет право на чтение (r), запись (w) и выполнение (x) файла.
- Группа владельцев имеет право на чтение (r) и выполнение (x) файла, но не имеет права на запись (w).
- Все остальные пользователи имеют право только на чтение (r) файла.
Те же права вместо символьного вида можно представить в числовом (восьмеричном) виде:
"rwx r-x r--" = "4+2+1 4+0+1 0+0+2" = "752"
Проверка прав
Для проверки прав на файл или папку, можно использовать утилиту ls с ключом ‘-l’, пример:
ls -l /tmp/test.txt
-rw-r--r-- 1 user group 0 июл 25 10:49 /tmp/test.txt
Либо утилиту stat которая покажет более подробную информацию о правах
stat /tmp/test.txt
Файл: /tmp/test.txt
Размер: 0 Блоков: 0 Блок В/В: 4096 пустой обычный файл
Устройство: 0/34 Инода: 42 Ссылки: 1
Доступ: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ group)
Доступ: 2024-07-25 10:49:49.003515392 +0500
Модифицирован: 2024-07-25 10:49:49.003515392 +0500
Изменён: 2024-07-25 10:49:49.003515392 +0500
Создан: 2024-07-25 10:49:49.003515392 +0500
Роль пользователя root
Пользователь root - это суперпользователь в Linux, который имеет неограниченный доступ к ресурсам. UID пользователя root равен 0, что дает ему право на выполнение любых операций в системе.
Пользователь root имеет следующие привилегии:
- Неограниченный доступ к любым файлам и папкам.
- Право на изменение прав доступа к любым файлам и папкам.
- Право на выполнение любых операций в системе, включая запуск программ и изменение конфигурации системы.
Однако, использовать пользователя root для повседневной работы не рекомендуется, поскольку это может привести к уязвимостям в безопасности системы. Вместо этого, рекомендуется использовать обычный пользовательский аккаунт и использовать команду sudo
для выполнения операций, требующих привилегий root.
Команда chmod
Команда chmod
используется для изменения прав доступа к файлам и папкам. Синтаксис команды chmod
следующий:
chmod [права доступа] [файл или папка]
Например, чтобы дать владельцу файла право на чтение запись и выполнение, а группе владельцев - право на чтение и выполнение, можно использовать следующую команду:
chmod u=rwx,g=rx,o=r file.txt
Либо, в числовом выражении:
chmod 754 file.txt
Владельцам сайтов часто требуется изменить права на файлы и папки массово, для целого сайта. Пример как это сделать:
find /home/web/sitename -type d -exec chmod 755 {} \;
find /home/web/sitename -type f -exec chmod 644 {} \;
Команда chown
Команда chown
используется для изменения владельца файла или папки. Синтаксис команды chown
следующий:
chown [владелец]:[группа владельцев] [файл или папка]
Например, чтобы изменить владельца файла на пользователя user
и группу владельцев на group
, можно использовать следующую команду:
chown user:group file.txt
Изменить владельца всех файлов в папке рекурсивно для всех вложенных файлов и папок:
chown -R web:web /home/web/sitename
Влияние прав доступа на безопасность
Права доступа играют важную роль в обеспечении безопасности системы. Например, если файл имеет права доступа 777
, это означает, что любой пользователь может читать, записывать и выполнять файл. Это может привести к уязвимостям в безопасности системы, поскольку злоумышленник может использовать файл для выполнения вредоносных операций.
Лучшие практики
Вот несколько лучших практик, связанных с правами доступа в Linux:
- Используйте права доступа
755
для папок, которые должны быть доступны для чтения и выполнения, но не для записи. - Используйте права доступа
644
для файлов, которые должны быть доступны для чтения, но не для записи и выполнения. - Используйте команду
sudo
для выполнения операций, требующих привилегий root. - Регулярно проверяйте права доступа к файлам и папкам, чтобы убедиться, что они установлены должным образом.
По умолчанию, в большинстве Linux систем при создании файла или папки права устанавливаются как 644 для файла, и 755 для папки. Права устанавливаются именно таким образом, благодаря стандартным настройкам маски прав 022. При создании файла или папки, значение маски “вычитается”, и объект создаётся с получившимися правами. Пример: “права на файл 666 минус маска 022” значит файл создастся с правами 644.
Можно временно (в текущей сессии) изменить права на создаваемые файлы и папки с помощью утилиты umask, пример:
umask 066
touch новый_файл.txt
ls -la новый_файл.txt
-rw------- 1 user group 0 июл 25 11:17 /tmp/test5.txt
Вывод
Права на файлы и папки в Linux играют важную роль в обеспечении безопасности и организации доступа к ресурсам. Понимание прав доступа и роли пользователя root является необходимым для системных администраторов, чтобы обеспечить безопасность и эффективность работы системы. Используя команды chmod
, chown
и umask
, администраторы могут управлять доступом к ресурсам и обеспечивать безопасность системы.
Дополнительные ресурсы
- Официальная документация Linux: https://www.linux.org/docs/man1/chmod.html
- Официальная документация Linux: https://www.linux.org/docs/man1/chown.html
- Официальная документация Linux: https://www.linux.org/docs/man1/umask.html
- Руководство по безопасности Linux: https://www.linuxsecurity.com/docs/
FAQ
Q: Как изменить права доступа к файлу или папке?
A: Используйте команду chmod
для изменения прав доступа к файлу или папке.
Q: Как изменить владельца файла или папки?
A: Используйте команду chown
для изменения владельца файла или папки.
Q: Как установить права доступа по умолчанию для новых файлов и папок?
A: Используйте команду umask
для установки маски прав доступа, которая будет применяться к новым файлам и папкам.