Quelle est la différence entre "s" et "S" dans ls -la?

67

Quand je ls -la, il imprime beaucoup d'attributs. Quelque chose comme ça:

-rwSrwSr-- 1 www-data www-data   45 2012-01-04 05:17 README

Honteusement, je dois avouer que je ne connais pas la signification exacte de chaque attribut. Par exemple, quelle est la signification de gros Sdans la chaîne -rwSrwSr--? Qu'est-ce qui suit 1? Je connais les autres grossièrement.

Eonil
la source
19
Eonil: Il n’ya rien de honteux à propos de la nécessité de poser une question, après tout, c’est l’objet de ce site. Et pour ceux qui disent RTFM, beaucoup d’entre nous FONT CELA et ne peuvent toujours pas trouver la réponse la plus simple après avoir feuilleté des pages de documentation difficile à lire écrite par les programmeurs (et je suis un programmeur). Dans certains cas, nous utilisons des systèmes sur lesquels les pages de manuel n'ont pas été installées. Pour toutes ces raisons, et bien d’autres encore, des sites comme celui-ci sont une aubaine. Merci d'avoir posé la même question que moi.
Alan
1
Grande question - très spécifique avec un exemple concret.
Ole

Réponses:

49

La documentation de la lscommande répond à ces questions. Sur la plupart des variantes unix, recherchez la lspage de manuel ( man lsou en ligne). Sous Linux, recherchez la documentation Info ( info ls) ou en ligne .

La lettre sindique que le bit setuid (ou setgid, en fonction de la colonne) est défini. Lorsqu'un exécutable est setuid, il s'exécute en tant qu'utilisateur possédant le fichier exécutable au lieu de l'utilisateur qui a appelé le programme. La lettre sremplace la lettre x. Il est possible qu'un fichier soit setuid mais non exécutable; ceci est noté par Soù le capital Svous avertit que ce paramètre est probablement faux car le bit setuid est (presque toujours) inutile si le fichier n'est pas exécutable.

Lorsqu'un répertoire dispose des autorisations setuid (ou setgid), tous les fichiers créés dans ce répertoire seront la propriété de l'utilisateur (ou du groupe) correspondant au propriétaire (ou groupe) du répertoire.

Le nombre après les autorisations est le nombre de liens physiques. Un lien physique est un chemin d'accès à un fichier (un nom, en d'autres termes). La plupart des fichiers ont un seul chemin, mais vous pouvez en créer plus avec la lncommande. (Ceci est différent des liens symboliques: un lien symbolique dit «oh, en fait, ce fichier est ailleurs, allez à <emplacement>».) Les répertoires ont N + 2 liens physiques, N étant le nombre de sous-répertoires, car ils sont accessibles. de leur parent, d'eux-mêmes (via l' .entrée) et de chaque sous-répertoire (via l' ..entrée).

Gilles, arrête de faire le mal
la source
5
Qu'est-ce que cela signifie sur OS X lorsqu'il est appliqué à un répertoire? Par exemple, $ ls /Usersrenvoiedrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe
4
@jww Cela signifie que les fichiers créés dans ce répertoire appartiendront au groupe auquel appartient le répertoire, mais c'est quand même la valeur par défaut sous OSX. See en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories et unix.stackexchange.com/questions/12842/…
Gilles '
@ Gilles, quand vous avez dit qu'un fichier n'est pas "exécutable"? Cela signifie-t-il qu'il ne dispose pas du privilège exécutable ou que ce n'est pas un type de fichier qui peut être exécuté?
Ransh
@ Transh je parle de la xpermission execute ( ).
Gilles 'SO- arrête d'être méchant'
J'ai soumis une modification semblable à celle
évoquée
16

Selon info coreutils ls(ce qui pourrait ne pas être exactement ce que vous avez):

`s '
Si le bit setuid ou setgid et le bit exécutable correspondant sont tous deux définis.

`S '
Si le bit setuid ou setgid est activé mais que le bit exécutable correspondant n'est pas activé.

Le nombre après la partie permission est le nombre de liens physiques.

Tapis
la source
2
En gros, c'est ce que vous obtenezchmod g-x,g+s dir
sanmai
6

En termes plus simples, espérons-le. Le répertoire est setgid. Tous les fichiers créés dans ce dossier appartiendront à ce groupe du propriétaire de ce dossier.

Cependant, le dossier n'est pas exécutable par le groupe, il est donc affiché en majuscule S. Il s'agit généralement de la création d'un répertoire, qui sera défini comme setgid.

Hm .. Je ne sais pas si ça sonnait comme un anglais simple ci-dessus ..

Pointe
la source
1
Cette réponse ne donne aucune information plus ou différente que les réponses existantes.
Jayhendren
1
@ Jayhendren Oui, c'est le cas. Il parle de répertoires. Aucune autre réponse ne fait ça. (Gilles devrait probablement incorporer son commentaire dans sa réponse.)
Sparhawk
0

C'est parce que l'exécutable est manquant

s -> 'x' est activé S -> 'x' est désactivé.

voir ci-dessous exemple

$ ls -l

total 0

-rwsrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca

$ chmod u-x ca

$ ls -l

total 0

-rwSrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca

$
Praveen Kumar
la source
Pourriez-vous expliquer ce que cela ajoute aux réponses existantes?
Stephen Kitt