Назад | Перейти на главную страницу

Принуждение разрешений Linux Stickybits или ACL

У меня есть вопрос / путаница относительно принудительного использования унаследованных разрешений в Linux (а именно CentOS 6)

Настройка:

1 x файловый сервер CentOS

2 клиента CentOS NFS

Много x Windows Samba клиентов

Файловый ресурс / srv / share используется совместно с локальными разрешениями Samba и NFS: h

drwxrwx---. 2 root sharegroup 4.0K Oct 22 14:41 share

Все UID / GID объединены через Active Directory, основная группа для всех пользователей - sharegroup.

Клиент NFS смонтирован в fstab как:

tst-lnx03:/srv/share    /mnt/share            nfs     defaults                0 0

Окно Windows через путь UNC:

\\tst-lnx03\share

Что бы я хотел:

Все, что написано / создано в папке / srv / share, независимо от того, пришло ли оно через NFS или Samba, то есть корневая группа 770.

Что я пробовал:

Я пробовал использовать ACL:

setfacl -m d:u:root:rwx,d:g:"sharegroup":rwx,d:other:--- share

В результате:

ls -lah
-rwxrwx---+ 1 testuser11 sharegroup    0 Oct 22 14:25 tu12-smb-win
-rw-rw----+ 1 testuser2  sharegroup    0 Oct 22 14:23 tu2-local-local
-rw-r-----+ 1 testuser4  sharegroup    0 Oct 22 14:24 tu4-NFS-lnx04

Я пробовал использовать липкие биты:

chmod 2770 share

В результате:

ls -lah
-rwxr--r--  1 testuser11 k8 sharegroup   0 Oct 22 14:38 tu12-smb-win
-rw-r--r--  1 testuser2  k8 sharegroup   0 Oct 22 14:38 tu2-local-local
-rw-r--r--  1 testuser4  k8 sharegroup   0 Oct 22 14:38 tu4-NFS-lnx04

Спутанность сознания

Похоже, что setfacl является победителем, но меня немного смущает вывод, почему версия с липким битом добавляет случайное другое чтение и удаляет группу списания?

Я думаю, что могу отнести созданный NFS файл к другому из-за umask по умолчанию 0022, но не других изменений. Я ожидал, что созданные окна и локально созданные файлы будут соответствовать разрешениям.

Может ли кто-нибудь объяснить, что происходит в каждом случае? Я немного озадачен. Если тебе нужно от меня что-нибудь еще, кричи, и я поставлю это.

Так ты сделал

setfacl -m d:u:root:rwx,d:g:"sharegroup":rwx,d:other:--- share

Все, что вы делаете с setfacl d: (известный как «ACL по умолчанию») не влияет на владение, только на доступность. Таким образом, вы можете решить, «кому есть доступ», но не «кому принадлежит». Вы только что предоставили тестовым файлам доступ rwx для пользователя-владельца и для пользователя root; и доступ rwx для группы-владельца и для «sharegroup». Но пользователь-владелец и группа-владелец определялись точно так же, как и без setfacl.

Разрешения файлов неожиданные, потому что с файлом setfacl'd umask больше не учитывается. Каждый файл имеет свою «собственную маску», известную просто как маска (см. getfacl).

И ты сделал

chmod 2770 share

Снова неверно. 2770 не липкий, это бит setgid. Sticky было бы 1770. setgid изменил группу-владельца для новых файлов и никак не повлиял на их права доступа. В разрешениях, как обычно, учитывается umask (см. umask) и режим, предложенный приложением, создающим файл.

Я не знаю, как можно правильно реализовать то, что вам нужно, с помощью имеющихся у вас инструментов. В Linux нет «setuid для каталогов».