Sobes.tech
Middle
128
questionbank

Как устроена система прав доступа в операционной системе Linux?

Ответ от нейросети

sobes.tech AI

В Linux используется дискреционный контроль доступа (DAC). Права назначаются пользователям, группам и остальным. Для каждого из этих трех категорий определяются права на чтение (r), запись (w) и выполнение (x).

ls -l # Пример вывода команды ls -l
# drwxr-xr-x 2 user group 4096 Oct 26 10:00 directory_name
# -rw-r--r-- 1 user group 1024 Oct 26 10:00 file_name

Первый символ указывает тип файла (- для обычного файла, d для директории). Следующие девять символов представляют права:

  • Первые три: Права владельца (rwx)
  • Следующие три: Права группы (r-x)
  • Последние три: Права остальных (r-x)

Права можно изменить с помощью команды chmod, используя восьмеричное или символьное представление:

# Добавить право на запись для группы
chmod g+w some_file.txt

# Установить права чтения, записи и выполнения для владельца,
# чтения и выполнения для группы,
# и только чтения для остальных (754 в восьмеричной)
chmod 754 some_other_file.txt

Владельца файла или директории можно изменить командой chown:

# Изменить владельца на new_user
chown new_user some_file.txt

# Изменить владельца на new_user и группу на new_group
chown new_user:new_group some_file.txt

Группа файла или директории изменяется командой chgrp:

# Изменить группу на new_group
chgrp new_group some_file.txt

Дополнительные специальные биты:

Символ Описание Применение
s SUID (Set User ID): Если установлен на исполняемом файле, процесс будет выполняться с правами владельца файла, а не запускающего пользователя. Используется для программ, которым требуются повышенные права для выполнения задач, например, passwd.
s SGID (Set Group ID): Если установлен на исполняемом файле, процесс будет выполняться с правами группы файла. Если установлен на директории, новые файлы, созданные в этой директории, будут принадлежать группе этой директории. На исполняемых файлах используется реже SUID. На директориях полезно для общих директорий, где все файлы должны принадлежать одной группе.
t Sticky Bit: Если установлен на директории, файлы в этой директории могут быть удалены или переименованы только их владельцем, владельцем директории или root. Часто используется в директории /tmp, чтобы пользователи не могли удалять файлы других пользователей, даже если у них есть право на запись в эту директорию.
# Пример файла с SUID
# -rwsr-xr-x 1 root root 50000 Oct 26 10:00 /usr/bin/passwd

# Пример директории со SGID
# drwxrwsr-x 2 user shared_group 4096 Oct 26 10:00 shared_directory

# Пример директории со Sticky Bit
# drwxrwxrwt 10 root root 4096 Oct 26 10:00 /tmp

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