Аннотация
Отображение разрешений файловой системы для файлов и каталогов; объяснение влияния этих разрешений на доступ пользователей и групп
Изменение разрешений и прав владения для файлов с помощью утилит командной строки
Управление разрешениями по умолчанию для новых файлов, создаваемых пользователями; объяснения влияния специальных разрешений; использование специальных разрешений и разрешений по умолчанию для назначения группы-владельца для файлов, созданных в определенном каталоге
Интерпретация разрешений файловой системы Linux (и тест)
Управление разрешениями файловой системы из командной строки (и упражнение)
Управление разрешениями по умолчанию и доступом к файлам (и упражнение)
Управление доступом к файлам
После завершения этого раздела вы сможете отобразить разрешения файловой системы для файлов и каталогов и объяснить влияние этих разрешений на доступ пользователей и групп.
Разрешения файлов позволяют контролировать доступ к файлам. Система файловых разрешений в Linux простая, но гибкая. Ее несложно освоить и применять, и при этом она позволяет легко справиться с большинством обычных случаев назначения разрешений.
Есть три категории пользователей файлов, к которым применяются разрешения. Файл принадлежит пользователю, обычно тому, который создал этот файл. Файл также принадлежит одной группе, обычно основной группе пользователя, который создал файл, но эта принадлежность может быть изменена. Для пользователя-владельца, группы-владельца и всех остальных пользователей в системе, не являющихся пользователем-владельцем или участником группы-владельца, могут быть заданы разные разрешения.
Приоритет отдается наиболее конкретным разрешениям. Разрешения для пользователя переопределяют разрешения для группы, которые в свою очередь переопределяют разрешения для остальных пользователей.
На Рисунок 7.1: Пример участия в группах для совместной работы joshua — участник групп joshua и web, а allison — участник групп allison, wheel и web. Если требуется обеспечить совместную работу joshua и allison, необходимо связать файлы с группой web, а разрешения группы должны обеспечивать необходимый доступ.
joshua
web
allison
wheel
Доступны три категории разрешений: чтение, запись и выполнение. В следующей таблице объясняется, как эти разрешения влияют на доступ к файлам и каталогам.
Таблица 7.1. Влияние разрешений на файлы и каталоги
Разрешение
Влияние на файлы
Влияние на каталоги
r (чтение)
r
Разрешено читать содержимое файлов.
Разрешено отображать содержимое каталога (имена файлов).
w (запись)
w
Разрешено изменять содержимое файлов.
Разрешено создавать и удалять любые файлы в каталоге.
x (выполнение)
x
Разрешено выполнять файлы как команды.
Каталог может стать текущим рабочим каталогом. (Вы можете перейти в него с помощью команды cd, но при этом вам потребуется разрешение на чтение, чтобы просмотреть список файлов в каталоге.)
У пользователей обычно есть разрешения на чтение и выполнение для каталогов, доступных только для чтения, и они могут отображать такие каталоги и просматривать всю информацию об их содержимом. Если у пользователя есть только разрешение на чтение для каталога, он сможет отобразить список имен файлов в этом каталоге, но другая информация, включая разрешения и метки времени, будет недоступна. Если у пользователя есть только разрешение на выполнение для каталога, он не может получить список файлов в каталоге. Если пользователь знает имя файла, на чтение которого у него есть разрешение, то может получить доступ к содержимому этого файла вне каталога, явно указав относительное имя файла.
Файл может быть удален любым пользователем, являющимся владельцем каталога, в котором находится файл, или имеющим соответствующее разрешение на запись, независимо от прав доступа к самому файлу. Это поведение можно переопределить с помощью специального разрешения ― sticky bit, которое будет рассматриваться позже в этой главе.
Система файловых разрешений в Linux работает не так, как система разрешений, используемая файловой системой NTFS в Microsoft Windows.
В Linux разрешения применяются только к файлу или каталогу, для которого они установлены. Это значит, что разрешения для каталога не наследуются автоматически находящимися в нем файлами и подкаталогами. Однако разрешения каталога могут блокировать доступ к содержимому каталога в зависимости от того, насколько они строгие.
Разрешение на чтение для каталога в Linux примерно эквивалентно отображению содержимого папки в Windows.
Разрешение на запись для каталога в Linux эквивалентно разрешению на изменение в Windows и предполагает возможность удаления файлов и подкаталогов. Если в Linux для каталога одновременно заданы разрешение на запись и sticky bit, то удалить его может только владелец файла или подкаталога. Это соответствует тому, как работает разрешение на запись в Windows.
Пользователь root в Linux имеет эквивалентное Windows разрешение на полный доступ для всех файлов. Однако права доступа пользователя root могут быть ограничены политикой SELinux системы с помощью контекстов безопасности процессов и файлов. Политика SELinux будет рассматриваться в следующем курсе.
Опция -l команды ls отображает подробные сведения о разрешениях и владельцах файла.
-l
[user@host~]$ ls -l test -rw-rw-r--. 1 student student 0 Feb 8 17:36 test
[user@host~]$
ls -l test
Используйте опцию -d, чтобы отобразить подробную информацию о каталоге, но не о его содержимом.
-d
[user@host ~]$ ls -ld /home drwxr-xr-x. 5 root root 4096 Jan 31 22:00 /home
[user@host ~]$
ls -ld /home
Первый символ длинного списка — это тип файла, который интерпретируется следующим образом:
- — это обычный файл.
-
d — это каталог.
d
l — это символьная ссылка.
l
Другие символы представляют аппаратные устройства (b и c) или другие специализированные файлы (p и s).
b
c
p
s
Следующие девять символов — это файловые разрешения. Они представлены тремя наборами по три символа: разрешения, применяемые к пользователю, которому принадлежит файл, к группе, которой принадлежит файл, и ко всем остальным пользователям. Если указан набор rwx, предоставляются все три разрешения: чтение, запись и выполнение. Если буква заменена на -, значит, это разрешение не предоставляется.
rwx
Первое имя после количества ссылок указывает пользователя, которому принадлежит файл, а второе — группу, которой принадлежит файл.
Таким образом, в приведенном выше примере разрешения для пользователя student определены первым набором из трех символов. У пользователя student есть разрешения на чтение и запись для файла test, но не на выполнение.
student
test
Разрешения для группы student определены вторым набором из трех символов. У этой группы также есть разрешения на чтение и запись для файла test, но не на выполнение.
Разрешения остальных пользователей определяются третьим набором из трех символов. У них есть только разрешение на чтение файла test.
Применяется наиболее конкретный набор разрешений. Если разрешения пользователя student отличаются от разрешений группы student и пользователь student является участником этой группы, будут применяться разрешения пользователя.
Следующие примеры показывают, как действуют файловые разрешения. Для этих примеров у нас есть четыре пользователя, принадлежащие к определенным группам.
operator1
consultant1
database1
database2
operator2
contractor1
Эти пользователи будут работать с файлами в каталоге dir. Это длинный список файлов в каталоге:
dir
[database1@host dir]$ ls -la total 24 drwxrwxr-x. 2 database1 consultant1 4096 Apr 4 10:23 . drwxr-xr-x. 10 root root 4096 Apr 1 17:34 .. -rw-rw-r--. 1 operator1 operator1 1024 Apr 4 11:02 lfile1 -rw-r--rw-. 1 operator1 consultant1 3144 Apr 4 11:02 lfile2 -rw-rw-r--. 1 database1 consultant1 10234 Apr 4 10:14 rfile1 -rw-r-----. 1 database1 consultant1 2048 Apr 4 10:18 rfile2
[database1@host dir]$
ls -la
Опция -a отображает разрешения для скрытых файлов, в том числе специальных файлов, используемых для представления данного каталога и его родительского каталога. В этом примере . отражает разрешения каталога dir, а .. — разрешения его родительского каталога.
-a
.
..
Рассмотрим разрешения для файла rfile1. У пользователя, которому принадлежит файл (database1), есть разрешения на чтение и запись, но не на выполнение. У группы, которой принадлежит файл (consultant1), есть разрешения на чтение и запись, но не на выполнение. У всех остальных пользователей есть разрешения на чтение, но не запись и выполнение.
rfile1
В следующей таблице рассматриваются некоторые результаты таких разрешений для пользователей.
Пользователь operator1 может изменять содержимое файла rfile1.
Пользователь operator1 — участник группы consultant1, а у этой группы есть разрешения на чтение и запись для файла rfile1.
Пользователь database1 может просматривать и изменять содержимое файла rfile2.
rfile2
Пользователь database1 владеет файлом и имеет разрешения на чтение и запись для файла rfile2.
Пользователь operator1 может просматривать, но не изменять содержимое файла rfile2 (без его удаления и повторного создания).
Пользователь operator1 — участник группы consultant1, а у этой группы есть только разрешение на чтение файла rfile2.
У пользователей database2 и contractor1 нет доступа к содержимому файла rfile2.
К пользователям database2 и contractor1 применяются разрешения остальных пользователей, и эти разрешения не включают чтение и запись.
остальных
operator1 — это единственный пользователь, который может изменять содержимое файла lfile1 (без его удаления и повторного создания).
lfile1
У пользователя и группы operator1 есть разрешение на запись для файла, у других пользователей такого разрешения нет. Но единственный участник группы operator1 — пользователь operator1.
Пользователь database2 может изменять содержимое файла lfile2.
lfile2
Пользователь database2 не является владельцем файла и не входит в группу consultant1, поэтому применяются разрешения остальных пользователей. Это разрешение на запись.
Пользователь database1 может просматривать содержимое файла lfile2, но изменять содержимое файла lfile2 он не может (без его удаления и повторного создания).
Пользователь database1 — участник группы consultant1, а у этой группы есть только разрешение на чтение файла lfile2. Хотя у остальных пользователей есть разрешение на запись, разрешения группы имеют приоритет.
Пользователь database1 может удалить файлы lfile1 и lfile2.
У пользователя database1 есть разрешение на запись для каталога, содержащего оба файла (на что указывает .), и он может удалить любой файл в этом каталоге. Это так, даже если у пользователя database1 нет разрешения на запись для самого файла.
Man-страница ls(1)
info coreutils (GNU Coreutils)
Раздел 13. Изменение атрибутов файла