¿Cuál es la diferencia entre "s" y "S" en ls -la?

67

Cuando yo ls -la, imprime muchos atributos. Algo como esto:

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

Vergonzosamente, tengo que confesar que no sé el significado exacto de cada atributo. Por ejemplo, ¿cuál es el significado de grande Sen la cadena -rwSrwSr--? ¿Qué es lo siguiente 1? Conozco a otros más o menos.

Eonil
fuente
19
Eonil: No hay nada vergonzoso en la necesidad de hacer una pregunta, después de todo, de eso se trata este sitio. Y en cuanto a aquellos que dicen RTFM, muchos de nosotros HACEMOS ESO y aún no podemos encontrar la respuesta más simple después de leer páginas de documentación escrita por programadores difíciles de leer (y yo soy programador). En algunos casos, estamos en sistemas donde las páginas man no estaban instaladas. Por todas esas razones, y muchas más, sitios como este son un regalo del cielo. Gracias por hacer la misma pregunta que tuve.
Alan
1
Gran pregunta: muy específica junto con un ejemplo concreto.
Ole

Respuestas:

49

La documentación del lscomando responde a estas preguntas. En la mayoría de las variantes de Unix, busque la lspágina de manual ( man lso en línea). En Linux, busque la documentación de Información ( info ls) o en línea .

La letra sindica que el bit setuid (o setgid, dependiendo de la columna) está establecido. Cuando un ejecutable es setuid, se ejecuta como el usuario propietario del archivo ejecutable en lugar del usuario que invocó el programa. La letra sreemplaza a la letra x. Es posible que un archivo sea setuid pero no ejecutable; esto se denota por S, donde la capital le Savisa que esta configuración probablemente sea incorrecta porque el bit setuid es (casi siempre) inútil si el archivo no es ejecutable.

Cuando un directorio tiene permisos setuid (o setgid), cualquier archivo creado en ese directorio será propiedad del usuario (o grupo) que coincida con el propietario (o grupo) del directorio.

El número después de los permisos es el recuento de enlaces duros . Un enlace duro es una ruta a un archivo (un nombre, en otras palabras). La mayoría de los archivos tienen una sola ruta, pero puede hacer más con el lncomando. (Esto es diferente de los enlaces simbólicos: un enlace simbólico dice "oh, en realidad, este archivo está en otra parte, vaya a <ubicación>"). Los directorios tienen enlaces duros N + 2 donde N es el número de subdirectorios, porque se puede acceder a ellos de sus padres, de ellos mismos (a través de la .entrada) y de cada subdirectorio (a través de la ..entrada).

Gilles 'SO- deja de ser malvado'
fuente
55
¿Qué significa en OS X cuando se aplica a un directorio? Por ejemplo, $ ls /Usersdevolucionesdrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe
44
@jww Significa que los archivos creados en ese directorio pertenecerán al grupo que posee el directorio, pero de todos modos ese es el valor predeterminado en OSX. Ver en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories y unix.stackexchange.com/questions/12842/…
Gilles 'SO- deja de ser malvado'
@Gilles, ¿Cuándo dijiste que un archivo no es "ejecutable"? ¿Significa que no tiene el privilegio ejecutable o que no es un tipo de archivo que se puede ejecutar?
ransh
@ransh Me refiero al xpermiso execute ( ).
Gilles 'SO- deja de ser malvado'
He enviado una edición similar al punto hecho en la respuesta de @ Jag a continuación
qneill
16

De acuerdo con info coreutils ls(que podría no ser exactamente lo que tienes):

`s '
Si el bit setuid o setgid y el bit ejecutable correspondiente están configurados.

'S'
Si el bit setuid o setgid está establecido pero el bit ejecutable correspondiente no está establecido.

El número después de la parte del permiso es el número de enlaces duros.

Estera
fuente
2
Básicamente esto es lo que obtieneschmod g-x,g+s dir
sanmai
6

En términos (con suerte más simples), esto significa. El directorio es setgid. Cualquier archivo creado allí será propiedad de ese grupo del propietario de esa carpeta.

Sin embargo, la carpeta no es ejecutable por el grupo, por lo que se muestra en mayúscula S. Esto suele ocurrir cuando se crea un directorio y el directorio terminará como setgid.

Hm ... No estoy seguro si eso realmente sonaba como un simple inglés arriba ...

Punta
fuente
1
Esta respuesta no proporciona más información o diferente que las respuestas existentes.
jayhendren
1
@jayhendren Sí, lo hace. Habla de directorios. Ninguna otra respuesta hace eso. (Gilles probablemente debería incorporar su comentario en su respuesta.)
Sparhawk el
0

Es porque falta el ejecutable

s -> 'x' está habilitado S -> 'x' está deshabilitado.

ver abajo ejemplo

$ 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
fuente
¿Podría explicar qué agrega esto a las respuestas existentes?
Stephen Kitt