Кажется, что chown разрешен не-root пользователю

Кажется, что chown разрешен не-root пользователю

Мы используем аутентификацию LDAP и, возможно, другие вещи, которые я не очень хорошо понял, в нашей компании, поэтому, возможно, следующие вопросы являются результатом этого. Я обнаружил странное поведение команды chown, и я не знаю, нормально ли это. Вот мой сценарий:

GID пользователя mark — SK001936, а владелец группы home dir mark — SK001778, как вы можете видеть, они не одинаковы. Группе SK001778 разрешены все операции (rwx) с home dir пользователя mark в качестве владельца (mark), имеет:

[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ ls -lad .
drwxrwxr-x   6 mark SK001778  4096 Oct 10 13:30 .

GID пользователей michael и mark — SK001936:

[michael@machine mark]$ id
uid=40570(michael) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)

пользователь michael не может создать файл в домашнем каталоге пользователя mark. Дело в том, что michael не принадлежит к группе (SK001778), которая имеет полный (rwx) доступ к домашнему каталогу mark:

[michael@machine mark]$ touch michael
touch: cannot touch `michael': Permission denied

При обычных обстоятельствах пользователь не может выполнить chown, даже если он является владельцем файла. Однако в этом примере владелец домашнего каталога (mark) может изменить группу владельца своего домашнего каталога (и, таким образом, разрешить пользователям, принадлежащим этой группе, доступ к своему домашнему каталогу):

[mark@machine ~]$ chown mark:SK001936 .

Группа, которая теперь имеет доступ к домашнему каталогу Марка, таким образом, совпадает с GID Майкла, поэтому Майклу теперь разрешено создавать/удалять файлы/папки в домашнем каталоге Марка:

[michael@machine mark]$ touch michael

Марк не может вернуть себе права группового владельца своего домашнего каталога (помните, что только root имеет право выполнять команду chown, согласно этому:почему-обычный-пользователь-не-может-chown-a-file):

[mark@machine ~]$ chown mark:SK001778 .
chown: changing ownership of `.': Operation not permitted

Мой вопрос: как возможно, что Марк смог изменить групповое владение своим домашним каталогом, даже когда онзаявилэтот chown может быть выдан только root. Коробка - RedHat 5.6.

решение1

При использовании chownтаким образом, что изменяется только группа, то это действует так же, как chgrp. Владелец файла или каталога может изменить группу на любую группу, членом которой он является.

Это работает так, потому что обе команды chownи chgrpиспользуют один и тот же базовый chownсистемный вызов, который позволяет изменять как владельца, так и группу. Системный вызов — это то, что применяет проверку прав доступа. Единственное различие между командами chownи chgrp— это синтаксис, который вы используете для указания изменения, которое хотите внести.

Марк не может изменить группу обратно на SK001778, поскольку он не является участником группы SK001778 (и не является пользователем root, что не ограничивается членством в группе).

решение2

Пользователи могут использовать его для смены групп, если они входят в одну из этих групп.

Пример

Допустим, я вхожу в следующие группы:

$ groups
saml vboxusers jupiter newgrp

И у меня есть файл:

$ ls -l | grep afile
-rw-rw-r--   1 saml saml        0 Oct 10 11:29 afile

поэтому я меняю группу этого файла вот так:L

$ chown saml.newgrp afile 

$ ls -l | grep afile
-rw-rw-r--   1 saml newgrp        0 Oct 10 11:29 afile

Вы также можете использовать chownэто так:

$ chown .saml afile 

$ ls -l|grep afile
-rw-rw-r--   1 saml saml        0 Oct 10 11:29 afile

Связанный контент