Qual è la differenza tra "s" e "S" in ls -la?


67

Quando io ls -la, stampa molti attributi. Qualcosa come questo:

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

Vergognosamente, devo confessare che non conosco il significato esatto di ciascun attributo. Ad esempio, qual è il significato di big Snella stringa -rwSrwSr--? Qual è il seguente 1? Conosco altri in modo approssimativo.


19
Eonil: Non c'è niente di vergognoso nel dover fare una domanda, dopo tutto è di questo che tratta questo sito. E per quanto riguarda coloro che dicono RTFM, molti di noi FANNO QUELLO e non riescono ancora a trovare la risposta più semplice dopo aver sfogliato pagine di documentazione scritta da programmatore difficile da leggere (e io sono un programmatore). In alcuni casi, siamo su sistemi in cui le pagine man non sono state installate. Per tutti questi motivi, e molti altri, siti come questo sono una manna dal cielo. Grazie per aver posto la stessa domanda che avevo.
Alan,

1
Ottima domanda - molto specifica insieme a un esempio concreto.
Ole

Risposte:


49

La documentazione del lscomando risponde a queste domande. Sulla maggior parte delle varianti di unix, cerca nella lspagina man ( man lso online). Su Linux, consulta la documentazione Info ( info ls) o online .

La lettera sindica che è impostato il bit setuid (o setgid, a seconda della colonna). Quando un eseguibile è setuid, viene eseguito come l'utente proprietario del file eseguibile anziché l'utente che ha invocato il programma. La lettera ssostituisce la lettera x. È possibile che un file sia impostato ma non eseguibile; questo è indicato da S, dove la capitale Sti avvisa che questa impostazione è probabilmente sbagliata perché il bit setuid è (quasi sempre) inutile se il file non è eseguibile.

Quando una directory dispone delle autorizzazioni setuid (o setgid), tutti i file creati in quella directory saranno di proprietà dell'utente (o gruppo) corrispondente al proprietario (o gruppo) della directory.

Il numero dopo le autorizzazioni è il conteggio dei collegamenti reali. Un hard link è un percorso di un file (un nome, in altre parole). La maggior parte dei file ha un singolo percorso, ma puoi ottenerne di più con il lncomando. (Questo è diverso dai collegamenti simbolici: un collegamento simbolico dice "oh, in realtà, questo file è altrove, vai a <location>".) Le directory hanno N + 2 hard link dove N è il numero di sottodirectory, perché sono accessibili dai loro genitori, da loro stessi (attraverso la .voce) e da ciascuna sottodirectory (attraverso la ..voce).


5
Cosa significa su OS X quando viene applicato a una directory? Ad esempio, $ ls /Usersrestituiscedrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe

4
@jww Significa che i file creati in quella directory apparterranno al gruppo proprietario della directory, ma comunque è quello predefinito su OSX. Vedi en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories e unix.stackexchange.com/questions/12842/…
Gilles 'SO- smetti di essere malvagio'

@Gilles, quando hai detto che un file non è "eseguibile"? Significa che non ha il privilegio eseguibile o che non è un tipo di file che può essere eseguito?
ransh,

@ransh Intendo il xpermesso execute ( ).
Gilles 'SO- smetti di essere malvagio' il

Ho presentato una modifica simile al punto riportato nella risposta di @ Jag di seguito
qneill,

16

Secondo info coreutils ls(che potrebbe non essere esattamente quello che hai):

`s '
Se il bit setuid o setgid e il bit eseguibile corrispondente sono entrambi impostati.

`S '
Se il bit setuid o setgid è impostato ma il bit eseguibile corrispondente non è impostato.

Il numero dopo la parte di autorizzazione è il numero di collegamenti reali.


2
Fondamentalmente questo è quello che ottienichmod g-x,g+s dir
sanmai il

6

In termini (si spera più semplici), ciò significa. La directory è setgid. Tutti i file creati all'interno saranno di proprietà di quel gruppo del proprietario di quella cartella.

Tuttavia, la cartella non è eseguibile dal gruppo, quindi viene visualizzata in maiuscolo S. Questo è in genere quando viene creata una directory e la directory finirà come setgid.

Hm .. Non sono sicuro se effettivamente suonasse come un semplice inglese sopra ..


1
Questa risposta non fornisce informazioni più o diverse rispetto alle risposte esistenti.
Jayhendren,

1
@jayhendren Sì. Parla di directory. Nessun'altra risposta lo fa. (Gilles dovrebbe probabilmente incorporare il suo commento nella sua risposta.)
Sparhawk il

0

È a causa di eseguibile mancante

s -> 'x' è abilitato S -> 'x' è disabilitato.

vedi esempio sotto

$ 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

$

Potresti spiegare cosa si aggiunge alle risposte esistenti?
Stephen Kitt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.