Права на файлы и папки в Linux: обзорная статья для пользователей и администраторов

24 июля 2024
454
bash
Linux
vds
техподдержка

Вступление

В операционной системе 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, администраторы могут управлять доступом к ресурсам и обеспечивать безопасность системы.

Дополнительные ресурсы

FAQ

Q: Как изменить права доступа к файлу или папке? A: Используйте команду chmod для изменения прав доступа к файлу или папке.

Q: Как изменить владельца файла или папки? A: Используйте команду chown для изменения владельца файла или папки.

Q: Как установить права доступа по умолчанию для новых файлов и папок? A: Используйте команду umask для установки маски прав доступа, которая будет применяться к новым файлам и папкам.

Мы используем файлы cookie для предоставления наших услуг, а также для аналитики и маркетинга. Продолжая просматривать наш веб-сайт, вы соглашаетесь на использование нами файлов cookie.
ОК