Raiz não pode chmod?

12

No meu departamento, temos um pequeno servidor de arquivos com o CentOS e o samba. Eu tenho acesso root para poder executar alguma manutenção básica.

Hoje eu estava criando algumas pastas somente leitura, então fui em frente e fiz um chmod -R -w some-folder/, mas por alguns arquivos obtive a resposta:

chmod: ./somefile.pdf: novas permissões são r-xrwxr-x, não r-xr-xr-x

Depois de adicionar -v, não recebo muita informação:

modo de `./somefile.pdf 'mantido como 0575 (r-xrwxr-x)

Eu tentei o seguinte apenas para ter certeza:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

Não consigo pensar em boas razões pelas quais o root não seria capaz de executar um chmod?

Alguns petiscos:

  • O sistema de arquivos não é somente leitura (apenas alguns arquivos se recusaram a ser modificados).
  • Eu executei os comandos chmod como root, mas sem efeito.
  • A partição em que os arquivos residem é ext4.

ATUALIZAÇÕES : Esta é a saída para lsattro arquivo e a pasta que contém:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

Não há presente setuid ( ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf
Roflo
fonte
Você está acessando esses arquivos remotamente?
Luciano Andress Martini
1
Qual é a saída lsattrdesses mesmos arquivos e o diretório acima dele?
Ryder

Respostas:

17

Segundo fontes, você tem um modo esperado ingênuo . Depois de abandonar mais, acho que a causa é a -wopção, que não é o que você está esperando. Você deve dar g-wou ugo-w(de acordo com suas necessidades).

Sem fornecer um destino explícito (a, o, g, u), alguns resultados inesperados podem ser fornecidos, de acordo com o valor umask. Eu acho que essa mensagem extra é feita por causa de mudanças inesperadas.

Editar: fontes em http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Retirado do cache do google, um comentário nesse código que não existe mais:

/ * Se verdadeiro, diagnostique surpresas de usos indevidos como "arquivo chmod -r". O POSIX permite o diagnóstico aqui, como o código portátil deve usar. "chmod - arquivo -r" * /

Giacomo Catenazzi
fonte
Sim, era isso. Eu mudei para ugo-we ele não reclama mais. Vou esperar um pouco antes de aceitar por cortesia a possíveis atendentes.
Roflo 30/05
1
E eu aprecio edições ou respostas melhores, porque ainda não entendo por que o chmod funciona dessa maneira estranha.
Giacomo Catenazzi
5
man chmod: "Uma combinação das letras ugoa controla qual acesso dos usuários ao arquivo será alterado [...] Se nada disso for dado, o efeito é como se (a) fosse dado, mas os bits definidos em as umask não são afetadas. " Assim, você pode fazer coisas como o arquivo chmod + w e fornecer apenas acesso de gravação àqueles que o obteriam ao criar um novo arquivo. O comportamento negativo parece um pouco confuso, então o aviso parece ser uma boa ideia.
Ilkkachu