
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 chown
comando 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 chown
de 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 chown
e chgrp
usam o mesmo chown
syscall 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 chown
e 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 chown
assim:
$ chown .saml afile
$ ls -l|grep afile
-rw-rw-r-- 1 saml saml 0 Oct 10 11:29 afile