Parece que chown é permitido para usuários não root

Parece que chown é permitido para usuários não root

Estamos usando autenticação LDAP e provavelmente outras coisas que não entendi bem, em nossa empresa então talvez as seguintes dúvidas sejam resultado disso. Encontrei um comportamento estranho de chowncomando e não sei se isso é normal. Aqui está o meu cenário:

O GID da marca do usuário é SK001936 e o ​​grupo do proprietário do diretório inicial da marca é SK001778, como você pode ver, eles não são iguais. O grupo SK001778 permite todas as operações (rwx) com o diretório inicial do usuário marcado como proprietário (marca) possui:

[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 do usuário Michael e Mark são ambos 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)

o usuário Michael não pode criar o arquivo no diretório inicial da marca do usuário. É que Michael não pertence ao grupo (SK001778) que tem acesso total (rwx) ao diretório inicial de Mark:

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

Em circunstâncias normais o usuário não pode emitir o chown mesmo sendo o proprietário do arquivo. No entanto, neste exemplo, o proprietário do diretório inicial (marca) é capaz de alterar o grupo proprietário de seu próprio diretório inicial (e assim permite que os usuários pertencentes a este grupo acessem seu diretório inicial):

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

O grupo que agora tem acesso ao diretório inicial do Mark é, portanto, o mesmo grupo do GID do Michael, portanto, o Michael agora tem permissão para criar/excluir arquivos/pastas no diretório inicial do Mark:

[michael@machine mark]$ touch michael

mark não consegue alterar de volta a propriedade do grupo de seu diretório inicial (lembre-se que apenas o root tem permissão para emitir chown de acordo com isto:por que-não-posso-um-usuário-normal-chown-um-arquivo):

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

Minha pergunta é: como é possível que Mark tenha conseguido alterar a propriedade do grupo de seu diretório inicial, mesmo quando sideclaradoesse chown pode ser emitido apenas pelo root. A caixa é RedHat 5.6.

Responder1

Quando você usa chownde uma maneira que altera apenas o grupo, ele age da mesma forma que chgrp. O proprietário de um arquivo ou diretório pode alterar o grupo para qualquer grupo do qual seja membro.

Funciona assim porque os comandos chowne chgrpusam o mesmo chownsyscall subjacente, o que permite alterar o proprietário e o grupo. O syscall é o que aplica a verificação de permissão. A única diferença entre os comandos chowne chgrpé a sintaxe usada para especificar a alteração que deseja fazer.

Mark não pode alterar o grupo de volta para SK001778 porque ele não é membro do grupo SK001778 (e não é root, o que não é restrito pela associação ao grupo).

Responder2

Os usuários podem usá-lo para mudar de grupo, desde que estejam em um desses grupos.

Exemplo

Digamos que estou nos seguintes grupos:

$ groups
saml vboxusers jupiter newgrp

E eu tenho um arquivo:

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

então eu mudo o grupo deste arquivo assim:L

$ chown saml.newgrp afile 

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

Você também pode usar chownassim:

$ chown .saml afile 

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

informação relacionada