как известно, в linux права описываются формулой “я – мы – они”, в смысле, доступ к файлу или директории для создателя, группы и всех остальных. в большинстве случаев этого вполне хватает.
но иногда возникает вопрос – а как бы сделать так, чтобы доать доступ ещё и вот этим товарищам, но не вводить их в группу?
всё просто. есть такой пакет acl.
в пакете хранятся утилиты управления списками доступа.
ставится этот пакет традиционно:
$ sudo apt-get update
$ sudo apt-get install acl
теперь объясним системе. что у нас на файловой системе есть расширенное управление правами:
$ sudo vi /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda3 /home ext3 defaults,acl 0 2
/dev/hda2 /var ext3 defaults 0 2
/dev/hdd /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
в столбик options дописываем параметр acl (выделено красным)
после чего либо перемонтируем соответствующие разделы,
$ sudo mount -o remount /dev/hda3
либо перегружаем всю систему.
ну что, разделы с нужной опцией примонтировались?
как расширенные права выглядят с точки зрения системы можно посмотреть командой
$ getfacl tmp
# file: tmp # owner: root # group: root user::rwx group::rwx other::rwx
это, что называется по умолчанию
добавим кому ни будь доступ
$ sudo setfacl -m u:username:rx tmp
смотрим что получилось
$ getfacl tmp # file: tmp # owner: root # group: root user::rwx user:username:r-x group::rwx mask::rwx other::rwx
для чего это надо непосредственно в линуксе я пока не придумал – задач не стояло.
перейдём к более практическому применению – расширенные права в samba.
пробовали назначать права доступа к файлам и каталогам на самбовской шаре? ну как? а с использованием acl всё гораздо интереснее.
добавляем расширенные права в конфиг самбы
$ sudo vi /etc/samba/smb.conf
[global] ... acl compatibility = auto [sharename] comment = Share path = /path/to/directory browseable = yes writable = yes create mask = 0664 directory mask = 0777 inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes
а вот теперь можно пробовать назначать персональный доступ к файлам и каталогам для отдельных пользователей прямо с виндовой машины. ну совсем такой как в виндах не получится, а вот на предмет читать/писать запросто. особенно для самбы в виндовом домене.