от Н. Антонов(11-07-2004)

рейтинг (22)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Тази статия е част от Книга за Debian GNU/Linux на български

От известно време насам всички разпространени файлови системи в Линукс поддържат разширените свойства за контрол над правата, известни като ACLs (Access Control Lists) или "Списъци за контрол на достъпа". Въпросните разширения са базирани на стандарта POSIX 1003.1e. Необяснимо е защо популярността на този метод за управление на потребителските права е толкова ниско разпространена, след като използването на ACLs е едновременно ефективно и лесно.

Накратко ще обясним какъв е техният смисъл. Както всеки от вас знае, т. нар. Unix permissions или просто стандартните права в една Unix/Linux-система са организирани съвсем просто: те се дефинират по собственик, група и останали потребители. В голяма част от случаите тази организация е достатъчна. Когато имаме усложнени нужди обаче, тя се оказва неудобна. Представете си, че имате директория, която може да се чете само от собственика и на която сме дали chmod 700. Искате да разрешите на друг да влиза в нея. Тогава правите нова група, в която включвате двамата потребители и променяте правата на директорията така, че освен от собственика да може да се чете и от групата, което става с командата chmod 750. Чудесно. А ако искате да направите същото и с други директории и други потребители? Трябва да създавате нови групи и така докато стигнете до момент, в който вече просто изпускате нишката.

Ето тук на помощ идват "Списъците за контрол на достъпа". С тях можем лесно да делегираме разнообразни права на всеки върху всичко, без да пипаме нито потребителите, нито групите, нито да променяме стандартните Unix permissions на директорията/файла, т.е. без да си играем с команди като chmod или chown. Важно е да отбележим, че използването на ACLs не пречи с нищо на прилагането на стандартните команди за управление на Unix-правата. Двата метода съжителстват съвсем мирно.

Пакетът acl

Като за начало трябва изпълним командата:

 apt-get install acl
 

Този пакет съдържа двата основни инструмента за управление на ACLs, които ще се превърнат в нашата дясна ръка.

Опцията acl в /etc/fstab

Следва да редактираме файла /etc/fstab, за да кажем на ядрото да включи поддръжката на ACLs за съответните дискови дялове. Това става лесно, с добавяне на опция acl и премонтиране на съответния дял. Тук е мястото да отбележим, че Линукс поддържа acl за Ext2/Ext3 едва в последните версии на ядрата от серията 2.4 и в 2.6. Ако ползвате файловата система XFS, не е необходимо да пипате нищо в fstab, защото тази файлова система идва по подразбиране с вградена поддръжка на ACLs. Ако искате поддръжка на ACLs в Линукс, препоръчително е да се спрете на XFS или Ext2/Ext3 със съответната версия на ядрото, която поддържа опцията acl (тя е нужна само за Ext2/Ext3).

Пример за fstab при Ext2/Ext3.

 /dev/hda2	/home	ext3	rw,usrquota,nosuid,nodev,noatime,acl	0	0
 

Командите getfacl и setfacl

С командата getfacl извличаме информация за acl-статуса на дадения файл или директория.

 
 # getfacl shots/
 # file: shots
 # owner: nikola
 # group: nikola
 user::rwx
 group::r-x
 other::r-x
 

Така изглеждат правата на всяка директория по подразбиране. В момента тази директория е собственост на nikola, но всеки може да влиза и да чете в нея.

 chmod 700 shots/
 ls -l shots
 drwx------    5 nikola   nikola        111 2004-06-13 09:57 shots/
 

Сега вече никой друг не може да влиза в тази директория освен нейния собственик. Това е чудесно, но да речем, че искаме да публикуваме директорията в уеб. Тогава трябва да разрешим на уебсървъра да я чете. Това ще стане с командата setfacl. В Debian потребителят на уебсървъра е www-data.

 setfacl -m u:www-data:r-x shots/
 getfacl shots/
 # file: shots
 # owner: nikola
 # group: nikola
 user::rwx
 user:www-data:r-x
 group::---
 group::---
 mask::r-x
 other::---
 
 

В този случай ние разрешихме на потребителя (флагът за потребител е u, а за група - g) www-data да чете и да изпълнява (флаговете r и x са познати от командата chmod) в тази директория.

Тук решихме една проста и банална задача, с което искахме да обясним простичко и накратко какъв е смисълът от използването на ACLs. Всички опции и възможности на командата setfacl са описани подробно в съответната man-страница.

За любознателните може да бъде от полза този материал. Информацията в него е предназначена конкретно за Fedora, но всъщност е валидна за всяка Линукс-дистрибуция.

Проектът Книга за Debian GNU/Linux на български е отворен за автори, готови да споделят опита си от работата с най-голямата Линукс-дистрибуция. Всички желаещи могат да се обърнат направо към пощенския списък на проекта, като предлагат материали или бъдат включени като автори (с права за commit в CVS-хранилището).


<< Инсталиране и конфигуриране на VPN на Fedora Core 2 | VPN на базата на OpenSwan, OpenSSL, L2TPD >>