Root ne peut pas chmod?

12

Dans mon département, nous avons un petit serveur de fichiers avec CentOS et samba. J'ai un accès root pour pouvoir effectuer une maintenance de base.

Aujourd'hui, je faisais certains dossiers en lecture seule, alors j'ai continué et j'ai fait un chmod -R -w some-folder/, mais pour quelques fichiers, j'ai obtenu la réponse:

chmod: ./somefile.pdf: les nouvelles autorisations sont r-xrwxr-x, pas r-xr-xr-x

Après avoir ajouté, -vje ne reçois pas beaucoup d'informations:

mode de `./somefile.pdf 'conservé comme 0575 (r-xrwxr-x)

J'ai essayé ce qui suit juste pour m'assurer:

# 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--)

Je ne vois pas de bonnes raisons pour lesquelles root ne pourrait pas faire un chmod?

Quelques morceaux:

  • Le système de fichiers n'est pas en lecture seule (seuls certains fichiers ont refusé d'être modifiés).
  • J'ai exécuté les commandes chmod en tant que root mais sans effet.
  • La partition où résident les fichiers est ext4.

MISES À JOUR : Ceci est la sortie pour lsattrle fichier et le dossier contenant:

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

Il n'y a pas de setuid présent ( 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
la source
Vous accédez à distance à ces fichiers?
Luciano Andress Martini
1
Quelle est la sortie de lsattrces mêmes fichiers et le répertoire au-dessus?
Ryder

Réponses:

17

Selon les sources, vous disposez d'un mode attendu naïf . Après avoir abandonné plus, je pense que la cause est l' -woption, ce qui n'est pas ce que vous attendez. Vous devez donner g-wou ugo-w(selon vos besoins).

Sans donner une cible explicite (a, o, g, u), des résultats inattendus pourraient être fournis, selon la valeur umask. Je pense que ce message supplémentaire est fait à cause de ces changements inattendus.

Edit: sources dans http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Tiré du cache Google, un commentaire dans ce code qui n'est plus là:

/ * Si vrai, diagnostiquez les surprises dues à des utilisations naïves comme "chmod -r file". POSIX permet les diagnostics ici, car le code portable est censé utiliser. "chmod - fichier -r" * /

Giacomo Catenazzi
la source
Oui, c'était ça. Je l'ai changé en ugo-wet il ne se plaint plus. J'attendrai un peu de temps avant d'accepter par courtoisie les répondeurs potentiels.
Roflo
1
Et je salue les modifications ou les meilleures réponses, car je ne comprends toujours pas pourquoi chmod fonctionne de cette étrange manière.
Giacomo Catenazzi
5
man chmod: "Une combinaison des lettres ugoa contrôle quels accès des utilisateurs au fichier seront modifiés [...] Si aucun de ceux-ci n'est donné, l'effet est comme si (a) était donné, mais les bits définis dans les umask ne sont pas affectés. " Vous pouvez donc faire des choses comme le fichier chmod + w et n'accorder un accès en écriture qu'à ceux qui l'obtiendraient lors de la création d'un nouveau fichier. Le comportement négatif semble cependant un peu déroutant, donc l'avertissement semble être une bonne idée.
ilkkachu