A raiz não pode alterar a permissão ou a propriedade do arquivo

8

Meu direcotrory é root:

pwd 
/

Eu tenho o seguinte dir:

drwxrwxrwx   4 root   root     81920 Jun  4 09:25 imr_report_repo

NOTA: imr_report_repo é um compartilhamento NFS.

Aqui está a fstablista para imr_report_repo:

netapp1:/imr_report_repos_stage  /imr_report_repo  nfs   rw,bg,actimeo=0,nointr,vers=3,timeo=600,rsize=32768,wsize=32768,tcp 1    1
d imr_report_repo

Um arquivo dentro da montagem:

$ ls -al
-rw-r--r--  1 502     502      1273 Mar 21  2013 imr1_test.txt

O UID 502 não existe. Se adicionarmos esse UID / GID localmente:

$ groupadd -g 502 jimmy
$ useradd -g 502 -u 502 jimmy

Agora ele aparece:

$ ls -al
-rw-r--r--  1 jimmy     jimmy      1273 Mar 21  2013 imr1_test.txt

Agora mude para root:

$ su -
$ chown oracle:oinstall imr1_test.txt
chown: changing ownership of `imr1_test.txt': Operation not permitted
Longarina
fonte
O servidor NFS é um NetApp? Você tem acesso administrativo a ele?
Mark Plotnick
Sim, é NetApp. Eu tenho admin privs
Stringer

Respostas:

10

Geralmente rootnão tem permissões especiais em compartilhamentos NFS. Pelo contrário: rooté mapeado para um usuário comum (ou seja, nem sequer tem acesso "normal" de leitura e gravação aos rootarquivos).

Você deve executar chownno servidor NFS.

Hauke ​​Laging
fonte
4

Geralmente, o usuário raiz local nos clientes NFS não pode executar esses tipos de atividades nos compartilhamentos montados pelo NFS. A NetApp parece acrescentar um pouco disso da seguinte maneira:

  • Por padrão, a opção anon especifica um UID 65534. Ou seja, se você não usar as opções root e anon para um recurso, os usuários root em todos os hosts acessarão o recurso usando o UID 65534.
  • Se a opção anon especificar um UID de 65535, o acesso root será desativado.
  • Se a opção anon especificar um UID 0, o acesso root será concedido a todos os hosts.
  • Se um nome for fornecido em vez de um UID, esse nome será procurado de acordo com a ordem especificada no /etc/nsswitch.confarquivo para determinar o UID correspondente a ser atribuído pela opção anon.

Portanto, pelo que parece, o compartilhamento NFS da NetApp tem a opção padrão # 1. Você pode confirmar isso tocando em um arquivo no compartilhamento NFS como raiz e vendo qual ID resulta disso.

Você poderá ver as opções exportadas do compartilhamento NFS usando mount -vno seu cliente NFS.

$ mount -v
...
mulder:/export/raid1/home/sam on /home/sam type nfs (rw,intr,tcp,nfsvers=3,rsize=16384,wsize=16384,addr=192.168.1.1)

Referências

slm
fonte
2

Um servidor NetApp NFS, por padrão, altera as credenciais do usuário raiz em um cliente para uid 65534 no servidor, para que operações como essa chownfalhem. Para alterar isso, edite a lista de exportação no arquivador para que a linha do sistema de arquivos tenha o parâmetro root=clientid, em que clientid é o endereço IP ou o nome do host do cliente ao qual você deseja ter acesso root ao sistema de arquivos. Em seguida, execute exportfs -ase você estiver usando a interface da linha de comandos no arquivador.

Mark Plotnick
fonte
0

Como slm comentário acima disse,

Normalmente, o usuário raiz local nos clientes NFS não pode executar esses tipos de atividades nos compartilhamentos montados pelo NFS

O recurso usado é chamado de abóbora apodrecida . Mais informações aqui . No meu caso, a única maneira era fazer login para desativar a squash raiz para esse servidor específico e ativá-lo novamente mais tarde.

Uma situação semelhante será encontrada se você usar o dockercontêiner com volumes e o contêiner for executado com um usuário não privilegiado (por exemplo USER apache). Portanto, a idéia dos pontos de montagem do NFS serem r/ wsomente pelo ownere não por rooté uma prática de segurança comum.

azbarcea
fonte