У меня есть базовые знания о разрешениях файловой системы в Linux (или я думаю, что у меня так далеко ...), но то, с чем я сталкиваюсь сейчас, сбивает меня с толку.
Чтобы дважды проверить это и для демонстрации, я воссоздал его на чистой установке OEL.
У меня есть 3 пользователя: root, svcuser (член группы "mygroup") и otheruser
[root@oel ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@oel ~]# id svcuser
uid=500(svcuser) gid=501(svcuser) groups=501(svcuser),500(mygroup)
[root@oel ~]# id otheruser
uid=501(otheruser) gid=502(otheruser) groups=502(otheruser)
В /opt есть папка ("app"), а в ней - субфолер ("sub"). /opt принадлежит root:root, точно так же, как /opt /app, но /opt /app /sub принадлежит svcuser:mygroup, права доступа установлены на 700, но как root я все еще могу перечислить его содержимое и создать новый файл в нем:
[root@oel ~]# cd /opt
[root@oel opt]# ll
total 8
drwxr-xr-x. 3 root root 4096 Aug 30 23:24 app
drwxr-xr-x. 2 root root 4096 Mar 26 2015 rh
[root@oel opt]# ll app
total 4
drwx------. 2 svcuser mygroup 4096 Aug 30 23:27 sub
[root@oel opt]# ll app/sub
total 0
-rw-r--r--. 1 root root 0 Aug 30 23:27 newfile
Я не могу сделать то же самое, что и "другой пользователь".
Нет наследуемого ACL по умолчанию:
[root@oel ~]# getfacl /opt/app
getfacl: Removing leading '/' from absolute path names
# file: opt/app
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@oel ~]# getfacl /opt/app/sub/
getfacl: Removing leading '/' from absolute path names
# file: opt/app/sub/
# owner: svcuser
# group: mygroup
user::rwx
group::---
other::---
В чем причина такого поведения? Есть ли у пользователя root какие-либо дополнительные права доступа к таким папкам без явного разрешения для этого? Или это из-за того, что родительская папка принадлежит root?
Я также проверил настройки SELinux, но, насколько я понимаю, они вступают в действие только тогда, когда правила DAC уже не запрещают доступ, как мне кажется, но "root" и "otheruser" имеют одинаковый контекст , так что это не должно иметь значения:
[root@oel opt]# id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@oel ~]# su otheruser
[otheruser@oel root]$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@oel opt]# ls -Z
drwxr-xr-x. root root unconfined_u:object_r:usr_t:s0 app
drwxr-xr-x. root root system_u:object_r:usr_t:s0 rh
[root@oel opt]# ls -Z app/
drwx------. svcuser mygroup unconfined_u:object_r:usr_t:s0 sub
Из-за того, что родительская папка принадлежит root-объекту, я попытался сделать то же самое с подпапками в домашних папках обоих пользователей: то же самое происходит с root, но с "otheruser" я даже не могу прижаться к кому-либо остальное.
[root@oel ~]# pwd
/root
[root@oel ~]# ll
total 48
-rw-------. 1 root root 1829 May 6 16:20 anaconda-ks.cfg
-rw-r--r--. 1 root root 28275 May 6 16:20 install.log
-rw-r--r--. 1 root root 7570 May 6 16:17 install.log.syslog
drwxr-xr-x. 2 svcuser mygroup 4096 Aug 30 23:32 sub
Если честно, теперь я полностью потерял след, поэтому в основном мой вопрос был бы: что именно я пропускаю? Я провел день, рассматривая вопросы о разрешениях для файлов Linux, но я видел только очень простые варианты использования, и я не могу этого понять. В результате чего некоторые привилегии наследуются от родительских папок?