ЛитВек: бестселлеры недели
Бестселлер - Карл Ричардс - Давай поговорим о твоих доходах и расходах - читать в ЛитвекБестселлер - Борис Григорьевич Литвак - Найди точку опоры, переверни свой мир - читать в ЛитвекБестселлер - Александр Фридман - Вы или вас: профессиональная эксплуатация подчиненных. Регулярный менеджмент для рационального руководителя - читать в Литвек
Литвек - электронная библиотека >> Дэвид Тейнсли >> Руководства и инструкции и др. >> Linux и UNIX: программирование в shell. Руководство разработчика. >> страница 4
образом:


право чтения и записи для владельца -400+200=600 + право чтения для группы 040 + право чтения для других пользователей 004 =644 Правило формирования восьмеричного режима доступа проще всего сформулировать с помощью следующей таблицы:

Таблица 1.4. Определение режима доступа к файлу


Владелец Группа Другие пользователи rwx rwx rwx 4 + 2 + 1 4+2+1 4+2+1

1.4.4. Дополнительные примеры использования команды chmod

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


Команда Строка режима Результат chmod 666 rw‑rw‑rw- Установка разрешений на чтение и запись для владельца, группы и других пользователей chmod 644 rw‑r--r-- Установка разрешений на чтение и запись для владельца; группа и остальные пользователи получают право чтения chmod rwxr--r-- Предоставление полного доступа владельцу; группа и другие пользователи имеют право чтения 744 chmod rw‑rw‑r-- Установка разрешений на чтение и запись для владельца и группы; другим пользователям предоставляется право чтения 664 chmod Предоставление полного доступа только владельцу; остальным пользователям доступ запрещен 700 chmod r--r--r-- Все пользователи получают разрешение только на чтение 444 В качестве примера изменим права доступа к файлу 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'

В результате выполнения этой команды выводится список команд, у которых установлен