| Права доступа |
|
Автор статьи: SergeA
Что такое права доступаВ линуксе существует мощная система разграничения прав доступа к файлам и каталогам, которая позволяет сохранить ваши приватные данные от посторонних глаз, предотвратить запуск нежелательной программы или скрипта, а также защитить важные системные файлы от неосторожного изменения или удаления. Речь пойдет о правах доступа. Для того чтобы рассмотреть все на практике создадим каталог для работы, а в нем файл : file1
Запустив известную нам команду ls -l мы увидим права доступа на файл - рассмотрим их подробно. В нашем примере было бы так: -rw-r--r-- 1 serg proj 0 2009-05-09 16:03 file1
А если владелец файла не я, а другой член проекта, например alex: -rw-r--r-- 1 alex proj 0 2009-05-09 16:03 file1 тогда на меня, как на члена группы proj, распространяются только права группы т.е. r-- Символьный метод изменения прав доступаДля этого существует команда chmod Её синтаксис: Знак «+» добавляет права, знак «-» отнимает права, знак «=» устанавливает указываемые права, для выбранной категории пользователей, убирая все остальные. Например, я хочу запустить скрипт file1 — для этого его надо сделать исполняемым: serg@serg:~/work$ chmod u+x file1 мы видим, что в группе владельца появился бит исполнения x — теперь я могу запустить мой скрипт, но никто кроме меня и рута этого сделать не сможет. (Только сперва создадим простейший сценарий). serg@serg:~/work$ echo "echo hello world">file1 Работает! serg@serg:~/work$ chmod a=w file1 Этой командой мы установили право редактирования для всех пользователей, а остальные права исчезли — исправим это безобразие: serg@serg:~/work$ chmod u+x file1 Вот так гораздо лучше — мы вернули себе права на выполнение (u+x), вернули себе и группе права на чтение (ug+r), а также отняли у всех остальных право редактирования файла (o-w) и вернули право чтения (o+r), хотя последнее действие можно было осуществить одной командой: chmod o=r file1 — результат будет тот же самый. Права доступа к каталогамИтак, бит r для каталога означает возможность прочитать его содержимое командой ls (или открыть его в вашем любимом файловом менеджере). Бит w означает возможность удалять, переименовывать и добавлять файлы, при этом следует помнить, что права записи и удаления распространяются только на сам каталог, но не на файлы в каталоге - они могут иметь ЛЮБЫЕ права доступа, но вы (или не вы) сможете их беспрепятственно удалить. Будьте аккуратны с доступом к вашим каталогам. Бит х — это возможность сделать каталог текущим, искать и исполнять файлы в каталоге. При этом возникают любопытные нюансы. Сделаем наш каталог открытым всем ветрам, т.е. дадим права rwx для всех: serg@serg:~$ chmod a=rwx work Отнимем право чтения: serg@serg:~$ chmod u-r work Прочитать его содержимое нельзя, НО, если вы знаете имя файла, то перейдя в каталог и набрав его имя, вы можете прочитать или изменить файл: serg@serg:~$ cd work Вы также можете перейти на уровень ниже, через каталог, на который у вас нет прав чтения, использую команду cd. Если отсутствует бит исполнения х, то вы не сможете сделать каталог текущим (перейти в него командой cd), запустить на исполнение файлы из этого каталога и перейти на уровень ниже. С каталогами все. Численный метод изменения прав доступаМы рассмотрели символьный способ изменения прав доступа, который является наглядными, но избыточным, т.к. для изменения прав различных групп требуется две и более команды. -rw-r--r-- 1 serg serg 0 2009-05-09 16:03 file1 заменим буквы в правах цифрами: serg@serg:~/work$ chmod a=rwx file1 А теперь нам требуется : 1.отнять права изменения и исполнения у всех прочих пользователей Символьный метод потребует целых три команды: serg@serg:~/work$ chmod o-wx file1 Для удобства эти три команды можно выписать в одну строчку, перечислив изменения прав через запятую: serg@serg:~/work$ chmod u-x,g-rw,o-wx file1 а теперь посчитаем: (4+2+0) (0+0+1) (4+0+0) = 614 serg@serg:~/work$ chmod a=rwx file1 результат точно такой же — удобно, однако. Смена владельца и группы файлаПомните, вначале статьи мы говорили, что владельцем файла является тот, кто создал файл или тот, кто получил право владения им. Как поменять владельца файла - для этого существует замечательная команда: serg@serg:~/work$ sudo chown root:root file1 И владелец и группа поменялись - теперь это чужой файл и я не имею к нему доступа. serg@serg:~/work$ sudo chown root file2 Мы видим, что владелец поменялся, а группа осталась прежней. serg@serg:~/work$ sudo chgrp root file3 Группа у file3 изменилась, хотя это можно сделать и с помощью chown, указав прежнего владельца и новую группу. Бит SUIDЧто за зверь такой? Это бит, установка которого делает возможным запуск файла любым пользователем с ПРАВАМИ ЕГО ВЛАДЕЛЬЦА. Если ничего не поняли, смотрим сюда. Известно, что любой пользователь может сам сменить себе пароль, для этого он должен запустить команду passwd, а теперь задумайтесь - кто владелец этой бесценной утилиты - конечно же рут, тогда как, я, простой пользователь могу свободно ее запускать? Ответ прост - у этой утилиты стоит бит s (SUID). Чтобы убедиться в этом найдем утилиту passwd и посмотрим на ее права доступа: serg@serg:~$ whereis passwd Ага, вот она: /usr/bin/passwd, идем туда и смотрим на права доступа, только учтите, что файлов в этом каталоге масса, поэтому воспользуемся утилитой grep, включенной в конвеер: serg@serg:~$ cd /usr/bin/ Что мы видим - у файла passwd владелец и группа root, и для всех (в третьей группе прав доступа) стоит бит запуска. А теперь подумаем, что делает это команда - она производит АДМИНИСТРАТИВНЫЕ действия над пользователем так, как если бы это был рут. Теперь обратим внимание на права доступа для владельца rws, бит s и означает, что любой запустивший программу passwd, делает это так же как и рут. serg@serg:~$ cd ~/work Теперь любой пользователь, запускающий file3, запускает его с правами владельца (serg). Бит SGIDЭтот бит утснавливается для каталогов, и его действие полностью аналогично SUID, только он дает право на зпапуск любого файла в каталоге с правами группы. Устанавливается бит s для каталогов командой: Sticky bitПоследнее право относится к так называемым распределенным каталогам - это каталоги где хранятся файлы разных пользователей (например каталог /tmp) Что значит распределенный каталог - это каталог, куда вы можете записывать свои файлы, читать чужие (если можно), а стирать и переименовывать ТОЛЬКО СВОИ. Просмотрим права доступа к каталогу /tmp
Мы видим, что в конце стоит бит t - это и есть sticky bit, чтобы его установить используется команда: Массовое изменение прав доступаДо сих пор мы изменяли только права отдельных файлов и каталогов, а как быть, если потребуется изменить права доступа 1000 файлов в одном каталоге? Для этого существует рекурсия, команды chmod, chown и chgrp запускаются с ключом -R. Отнимем все права для группы и остальных юзеров, а себе вернем все привилегии, но для этого понадобятся еще файлы. serg@serg:~/work$ touch file2 file3 Теперь изменим права доступа сразу для всех файлов: serg@serg:~/work$ cd .. Что и требовалось доказать. Примеры для chown и chgrp приводить не буду - полная аналогия. Графический способ изменения прав доступаЕсли вы являетесь владельцем файла, то можете изменить права доступа графическим способом, для этого щелкните правой кнопкой мыши по файлу: Свойства-Права
Такой вид очень неудобен, для того чтобы получить более наглядную иллюстрацию выполните следующую команду: gconftool-2 --type bool --set /apps/nautilus/preferences/show_advanced_permissions true Или поставьте галочку в конфигураторе: Приложения-Системные утилиты-Редактор конфигурации, если его там нет, наберите команду: gconf-editor Далее перейдите по адресу apps-nautilus-preferences-show_advanced_permissions и поставьте галочку:
После этой операции закладка с правами доступа будет выглядеть так:
Вот, собственно и все, ставите галочку - даете права, снимаете галочку - отнимаете права, все наглядно и понятно. gksu nautilus Запустится файловый менеджер с правами рута (!) - в нем вы можете выполнить изменение прав доступа для любого файла в системе, но будьте внимательны - в этом режиме для вас нет ограничений. |





