После завершения этого раздела вы сможете изменить разрешения и владельца для файлов с помощью утилит командной строки.
Для изменения разрешений из командной строки используется команда chmod, которая означает «change mode» (смена режима, поскольку разрешения также называют режимом файла). Команда chmod принимает инструкцию разрешения, за которой следует список файлов или каталогов, которые необходимо изменить. Инструкция разрешения может быть отправлена в символьном виде (символьный метод) или числовом (числовой метод).
Изменение разрешений с помощью символьного метода
chmod WhoWhatWhich file|directory
WhoWhatWhich
file|directory
Кто: u, g, o, a (для пользователя (user), группы (group), остальных (other) и всех (all))
Что: +, -, = (для добавления, удаления, точной установки)
Какой: r, w, x (для чтения, записи, выполнения)
В символьном методе смены разрешений файлов используются буквы для представления разных групп разрешений: u для пользователя, g для группы, o для остальных пользователей и a для всех.
u
g
o
a
Для символьного метода не обязательно задавать полный новый набор разрешений. Вместо этого можно изменить одно или несколько существующих разрешений. Используйте + или -, чтобы добавить или удалить разрешения, либо =, чтобы заменить весь набор разрешений.
+
-
=
Сами разрешения представлены одной буквой: r для чтения, w для записи и x для выполнения. При использовании команды chmod для изменения разрешений символьным методом указание прописной буквы X в качестве флага разрешений добавит разрешение на выполнение только в том случае, если файл является каталогом или ему уже назначено разрешение на выполнение для пользователя, группы или остальных.
r
w
x
X
Команда chmod поддерживает опцию -R для рекурсивной установки разрешений файлов во всем дереве каталогов. При использовании опции -R удобно задавать разрешения символьно с помощью опции X. Это позволяет задать разрешение на выполнение (поиск) для каталогов, чтобы предоставить доступ к их содержимому, не меняя разрешений большинства файлов. Но будьте осторожны с опцией X. Если для файла задано какое-либо разрешение на выполнение, X установит указанное разрешение на выполнение и для этого файла. Например, следующая команда рекурсивно настраивает доступ на чтение и запись для каталога demodir и всех его потомков для группы-владельца, но применяет разрешения группы на выполнение только к каталогам и файлам, где разрешение на выполнение уже задано для пользователя, группы или остальных.
-R
demodir
[root@host opt]# chmod -R g+rwX demodir
[root@host opt]#
chmod -R g+rwX demodir
Примеры
Удаление разрешений на чтение и запись для группы и остальных пользователей, файл file1:
file1
[user@host ~]$ chmod go-rw file1
[user@host ~]$
chmod go-rw file1
Добавление разрешений на выполнение для всех, файл file2:
file2
[user@host ~]$ chmod a+x file2
chmod a+x file2
Изменение разрешений с помощью числового метода
В приведенном ниже примере символ # представляет цифру.
chmod ### file|directory
###
Каждая цифра представляет разрешения для уровня доступа: пользователь, группа, остальные.
Цифра рассчитывается путем сложения цифр каждого разрешения, которое необходимо добавить: 4 для чтения, 2 для записи и 1 для выполнения.
В числовом методе разрешения представлены восьмеричным числом из трех разрядов (или четырех в случае настройки дополнительных разрешений). Один восьмеричный разряд может представлять любое значение от 0 до 7.
В трехразрядном восьмеричном (числовом) представлении разрешений каждый разряд обозначает один уровень доступа (слева направо): пользователь, группа и остальные. Чтобы определить каждую цифру, сделайте следующее.
Начните с 0.
Если для этого уровня доступа требуется разрешение на чтение, добавьте 4.
Если требуется разрешение на запись, добавьте 2.
Если требуется разрешение на выполнение, добавьте 1.
Изучите разрешения -rwxr-x---. Для пользователя разрешения rwx вычисляются как 4+2+1=7. Для группы разрешения r-x вычисляются как 4+0+1=5, а для остальных разрешения --- представляют 0. Если соединить эти три значения, числовым представлением разрешений будет 750.
-rwxr-x---
rwx
r-x
---
Такие вычисления можно осуществить и в обратном направлении. Рассмотрим разрешения 640. Для пользователя 6 представляет чтение (4) и запись (2), что отображается как rw-. Для группы 4 содержит только разрешение на чтение (4) и отображается как r--. 0 для остальных пользователей не дает разрешений (---), а конечный набор символьных разрешений для этого файла — -rw-r-----.
rw-
r--
-rw-r-----
Числовые разрешения часто используются опытными администраторами, поскольку их быстрее вводить и произносить, но при этом они обеспечивают полный контроль над разрешениями.
Установка разрешений на чтение и запись для пользователя и разрешений на чтение для группы и остальных, файл samplefile:
samplefile
[user@host ~]$ chmod 644 samplefile
chmod 644 samplefile
Установка разрешений на чтение, запись и выполнение для пользователя, на чтение и выполнение для группы и никаких разрешений для остальных, файл sampledir:
sampledir
[user@host ~]$ chmod 750 sampledir
chmod 750 sampledir
Новый файл принадлежит создавшему его пользователю. По умолчанию новые файлы принадлежат к основной группе пользователя, который создал файл. В Red Hat Enterprise Linux основная группа пользователя обычно является частной группой, которая состоит только из одного этого пользователя. Чтобы предоставить доступ к файлу на основе участия в группе, может потребоваться изменить группу, являющуюся владельцем файла.
Только пользователь root может изменить владельца файла. Однако назначить группу-владельца может как пользователь root, так и владелец файла. Пользователь root может назначить владельцем файла любую группу, а обычные пользователи могут сделать группу владельцем файла, только если они входят в эту группу.
root
Изменить владельца файла можно командой chown (change owner). Например, чтобы сделать пользователя student владельцем файла test_file, выполните следующую команду:
student
test_file
[root@host ~]# chown student test_file
[root@host ~]#
chown student test_file
chown можно использовать с опцией -R для рекурсивного изменения владельца всего дерева каталогов. Следующая команда делает пользователя student владельцем каталога test_dir и всех файлов и подкаталогов в нем:
test_dir
[root@host ~]# chown -R student test_dir
chown -R student test_dir
С помощью команды chown также можно изменить группу-владельца файла, указав перед именем группы двоеточие (:). Например, следующая команда изменяет группу-владельца каталога test_dir на admins:
admins
[root@host ~]# chown :admins test_dir
chown :admins test_dir
Команду chown также можно использовать для одновременного изменения владельца и группы-владельца с помощью синтаксиса владелец:группа. Например, чтобы изменить владельца каталога test_dir на visitor и группу на guests, выполните следующую команду:
владелец
группа
visitor
guests
[root@host ~]# chown visitor:guests test_dir
chown visitor:guests test_dir
Вместо команды chown некоторые пользователи изменяют группу-владельца с помощью команды chgrp. Эта команда работает так же, как chown, за исключением того, что она используется только для изменения группы-владельца и двоеточие (:) перед именем группы не требуется.
Вы можете встретить примеры команд chown, использующие альтернативный синтаксис, который разделяет владельца и группу-владельца с помощью точки, а не двоеточия.
[root@host ~]# chown owner.group filename
chown owner.group filename
owner
group
Вам не следует использовать такой синтаксис. Всегда используйте двоеточие.
Точка является допустимым символом в имени пользователя, но не двоеточие. Если пользователь enoch.root, пользователь enoch и группа root существуют в системе, результатом выполнения команды chown enoch.root filename будет файл filename, принадлежащий пользователю enoch.root. А вы, возможно, пытались сделать владельцем файла пользователя enoch и группу root. Это может привести к путанице.
enoch.root
enoch
filename
Если всегда использовать синтаксис chown с двоеточием при работе с пользователями и группами, результат можно будет легко предсказать.
Man-страницы ls(1), chmod(1), chown(1) и chgrp(1)