Имеется файловый сервер Linux(Samba).
Я использую ACL для детального разграничения прав внутри шары.
Вот конфиг шары в самбе
[Episodes]
path = /srv/resources/shares/Episodes
writeable = yes
browsable = yes
valid users = @sw_god, @SW_all
read list =.
write list = @sw_god, @SW_all
create mask = 0770
force directory mode = 0770
force group = root
Внутри /srv/resources/shares/Episodes доступ на подкаталоги ограничен ACL.
Например у папки /srv/resources/shares/Episodes/Ep01/Cameras/Final такие права доступа:
# file: srv/resources/shares/Episodes/Ep01/Cameras/Final
# owner: root
# group: root
user::rwx
group::r-x
group:sw_god:rwx
group:sw_all:r-x
group:sw_operator:rwx
mask::rwx
other::---
default:user::rwx
default:group::r-x
default:group:sw_god:rwx
default:group:sw_all:r-x
default:group:sw_operator:rwx
default:mask::rwx
default:other::---
Эти права были установлены следующими командами:
setfacl -b -R srv/resources/shares/Episodes/Ep01
chmod -R 750 srv/resources/shares/Episodes/Ep01
chown -R 0:0 srv/resources/shares/Episodes/Ep01
setfacl -R -m g:sw_all:rx srv/resources/shares/Episodes/Ep01
setfacl -R -d -m g:sw_all:rx srv/resources/shares/Episodes/Ep01
setfacl -R -m g:sw_god:rwx srv/resources/shares/Episodes/Ep01
setfacl -R -d -m g:sw_god:rwx srv/resources/shares/Episodes/Ep01
setfacl -R -m g:sw_operator:rwx srv/resources/shares/Episodes/Ep01/Cameras/Final
setfacl -R -d -m g:sw_operator:rwx srv/resources/shares/Episodes/Ep01/Cameras/Final
В общем группа sw_all имеет доступ на чтение, группа sw_god имеет доступ на чтение/запись на каталог Ep01
Также группа sw_operator имеет доступ на чтение/запись в Ep01/Cameras/Final
Есть два юзера testuser и testuser2:
# id testuser
uid=3365(testuser) gid=3000(domain users) groups=3000(domain users),3010(sw_all),3034(sw_operator),3018,3012(BUILTIN\users)
# id testuser2
uid=3366(testuser2) gid=3000(domain users) groups=3000(domain users),3010(sw_all),3012(BUILTIN\users)
Как видно, testuser входит в группы sw_all и sw_operator, а юзер testuser2 только в sw_all.
Соответственно в теории testuser имеет доступ на запись в Episodes/Ep01/Cameras/Final, тогда как testuser2 только на чтение.
На практике так и есть, НО проблема в том, что после того, как testuser что-то создал в Episodes/Ep01/Cameras/Final, например Episodes/Ep01/Cameras/Final/test, после этого testuser2 может записывать и редактировать файлы в Episodes/Ep01/Cameras/Final/test, но при этом все еще не может в Episodes/Ep01/Cameras/Final
Собственно, с чего вдруг у пользователя testuser2 появились права на запись в Episodes/Ep01/Cameras/Final/test ?
Вот права доступа на папки:
[root@]# getfacl /srv/resources/shares/Episodes/Ep01/Cameras/Final
# file: srv/resources/shares/Episodes/Ep01/Cameras/Final
# owner: root
# group: root
user::rwx
group::r-x
group:sw_god:rwx
group:sw_all:r-x
group:sw_operator:rwx
mask::rwx
other::---
default:user::rwx
default:group::r-x
default:group:sw_god:rwx
default:group:sw_all:r-x
default:group:sw_operator:rwx
default:mask::rwx
default:other::---
[root@]# getfacl /srv/resources/shares/Episodes/Ep01/Cameras/Final/test/
# file: srv/resources/shares/Episodes/Ep01/Cameras/Final/test/
# owner: testuser
# group: root
user::rwx
group::rwx
group:sw_god:rwx
group:sw_all:r-x
group:sw_operator:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:sw_god:rwx
default:group:sw_all:r-x
default:group:sw_operator:rwx
default:mask::rwx
default:other::---