
Мы используем аутентификацию 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