В качестве примера изменим права доступа к файлу myfile:
-rw‑r–r-- 1 dave admin 0 Feb 19 22:05 myfile
Необходимо, чтобы владелец имел полный доступ к файлу, а пользователи группы — только разрешение на чтение. Для этого введите следующую команду:
$ chmod 740 myfile
$ ls -l myfile
-rwxr 1 dave admin 0 Feb 19 22:05 myfile
Если другим пользователям также нужно дать разрешение на чтение, воспользуйтесь такой командой:
$ chmod 744 myfile
$ la -1 myfile
-rwxr--r-- 1 dave admin 0 Feb 19 22:05 myfile
Для изменения режима доступа ко всем файлам, находящимся в каталоге, предназначена команда, подобная приведенной ниже:
$ chmod 664 *
В результате выполнения этой команды владелец и группа получат разрешения на чтение и запись всех файлов текущего каталога, а другие пользователи — только право чтения файлов. Чтобы действие данной команды рекурсивно распространилось на все подкаталоги, воспользуйтесь опцией -R:
$ chmod -R 664 *
Следствием применения этой команды является рекурсивный обход всех подкаталогов, которые содержатся в текущем каталоге. При этом владелец и группа получают разрешение на чтение и запись, а другие пользователи -pазрешение на чтение. Используйте опцию -R с осторожностью: убедитесь в том, что действительно требуется изменить разрешения для всех файлов из дерева подкаталогов.
1.5. Каталоги
Установка битов режима приобретает несколько иной смысл, когда команда chmod применяется по отношению к каталогу. Бит "чтения" означает возможность просмотра списка файлов в каталоге. Бит "записи" свидетельствует о том, что вам разрешается создавать и удалять файлы в данном каталоге. Наконец, бит "выполнения" указывает на возможность осуществления поиска файлов в каталоге и перехода в него.
Таблица 1.5. Праве доступа к каталогу
r
w
X
Возможность просмотра списка файлов в каталоге
Возможность
Возможность поиска файлов в каталоге и перехода в него
создания/удаления файлов в каталоге
Таблица 1.6. Примеры режимов доступа к каталогу
Строка режима
Владелец
Группа
Другие пользователи
drwxrwxr‑x (775)
Чтение, запись,
Чтение, запись,
Чтение, поиск
поиск
поиск
drwxr‑xr- — (754)
Чтение, запись, поиск
Чтение, поиск
Чтение
drwxr‑xr‑x (755)
Чтение, запись, поиск
Чтение, поиск
Чтение, поиск
Когда строка режима для группы и других пользователей имеет значение -~х, никто не может просматривать содержимое каталога, кроме его владельца. Если каталог содержит сценарий или программу с установленным битом выполнения, пользователи по–прежнему могут выполнять их, указывая точное имя файла. При этом не имеет значения, может ли пользователь перейти в данный каталог.
Разрешения, установленные для каталога, имеют более высокий приоритет, чем разрешения, установленные для файлов этого каталога. Например, если есть каталог docs.
drwxr--r-- 1 louise admin 2390 Jul 23 09: 44 docs
а в нем — файл pay:
-rwxrwxrwx 1 louise admin 5567 Oct 3 05:40 pay
пользователь, который является членом группы admin и собирается редактировать файл pay, не сможет этого сделать из‑за отсутствия соответствующих прав доступа к каталогу- Этот файл доступен каждому, но поскольку бит поиска не установлен для группы admin, владеющей каталогом docs, ни один из пользователей группы не может получить доступ к каталогу. Если предпринимается попытка доступа, отображается сообщение "Permission denied" (доступ не разрешен).
1.6. Биты смены идентификаторов (SUID и SGID)
Биты SUID (Set User ID — установить идентификатор пользователя) и SGID (Set Group ID — установить идентификатор группы) были предметом жарких споров на протяжении многих лет. В некоторых системах установка этих битов не допускается либо они полностью игнорируются, даже если установлены. Это связано с тем, что при использовании данных битов возникает дополнительная угроза безопасности системы.
Идея, лежащая в основе применения бита SUID, состоит в том, что пользователь, запустивший программу, для которой владелец установил бит SUID, на время выполнения программы получает все права ее владельца. Если, например, администратор создал сценарий и установил для него бит SU1D, а другой пользователь запускает этот сценарий, привилегии администратора на время выполнения сценария переходят к пользователю. Тот же принцип применим и к биту SGID, только в данном случае меняются привилегии группы, владеющей сценарием.
1.6.1. Для чего нужны биты SUID и SGID?
Для чего нужны сценарии, при запуске которых происходит смена идентификаторов? Сейчас я попытаюсь объяснить. Я отвечаю за администрирование нескольких больших баз данных. Чтобы выполнить операцию по их резервированию, требуется специальный профильный файл администратора. Я создал несколько сценариев и установил для них бит SG1D, благодаря чему пользователи, которым разрешен запуск этих сценариев, не обязаны регистрироваться а качестве администраторов баз данных. А это, в свою очередь, уменьшает риск случайного повреждения информации на сервере. При запуске указанных сценариев пользователи получают разрешение на выполнение операций по выгрузке базы данных, хотя обычно такое право предоставляется только административному персоналу. После завершения сценариев восстанавливаются изначальные права пользователей.
Существует несколько системных команд UNIX, для которых установлен бит SUID или SGID. Чтобы найти эти команды, перейдите в каталог /bin или /sbin и введите:
$ ls -l | grep '^…s'
Вы получите список команд с установленным битом SUID.
$ ls -1 | grep '^…s..s'
В результате выполнения этой команды выводится список команд, у которых установлен как бит SUID, так и бит SGID.
1.6.2. Установка битов SUID и SGID
Чтобы установить бит SUID, вставьте цифру 4 перед числом, задающим режим доступа. Биту SGID соответствует цифра 2. Если одновременно устанавливаются оба бита, следует ввести цифру 6 (4 + 2).
В строке режима установленные биты SUID и SGID обозначаются символом s, который помещается на место символа x в первую или вторую триаду соответственно. Помните, что сам бит выполнения (х) также должен быть установлен. Если, например, вы хотите для какой‑либо программы установить бит SGID, убедитесь в том, что группа обладает правом выполнения этой программы.
Примечание:
Команда chmod не запрещает вам установить бит SUID или SGID при отсутствии соответствующего разрешения на выполнение файла. В этом случае при выполнении команды ls -l в строке режима будет указан символ S, а не s. Система таким образом информирует вас о неправильной установке прав доступа к файлу.
Рассмотрим несколько примеров:
Команда
Строка режима
Результат
chmod 4755
rwsr‑xr‑x
Для файла установлен бит SUID; владелец имеет право чтения, записи и выполнения; группа и другие пользователи имеют право чтения и выполнения
chmod 6711
rws--s — х
Для файла установлены биты SUID и SGID; владелец имеет право чтения, записи и выполнения; группа и другие пользователи имеют право выполнения