Was ist der Unterschied zwischen "s" und "S" in ls -la?

67

Wenn ich ls -la, druckt es viele Attribute. Etwas wie das:

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

Schändlicherweise muss ich gestehen, dass ich die genaue Bedeutung der einzelnen Attribute nicht kenne. Was bedeutet zum Beispiel groß Sin der Zeichenfolge -rwSrwSr--? Was ist das Folgende 1? Ich kenne andere ungefähr.

Eonil
quelle
19
Eonil: Es ist nicht beschämend, eine Frage stellen zu müssen, schließlich geht es darum, worum es auf dieser Website geht. Und für diejenigen, die RTFM sagen, tun viele von uns das und finden immer noch nicht die einfachste Antwort, nachdem sie Seiten schwer lesbarer, vom Programmierer geschriebener Dokumentation durchgesehen haben (und ich bin ein Programmierer). In einigen Fällen befinden wir uns auf Systemen, auf denen die Manpages nicht installiert wurden. Aus all diesen und vielen weiteren Gründen sind solche Websites ein Glücksfall. Vielen Dank für die gleiche Frage, die ich hatte.
Alan
1
Tolle Frage - sehr konkret zusammen mit einem konkreten Beispiel.
Ole

Antworten:

49

Die Dokumentation des lsBefehls beantwortet diese Fragen. Schlagen Sie bei den meisten Unix-Varianten in der lsManpage ( man lsoder online) nach. Suchen Sie unter Linux in der Info-Dokumentation ( info ls) oder online .

Der Buchstabe zeigt an, sdass das Bit setuid (oder setgid, abhängig von der Spalte) gesetzt ist. Wenn eine ausführbare Datei setuid ist, wird sie als der Benutzer ausgeführt, dem die ausführbare Datei gehört, anstatt als der Benutzer, der das Programm aufgerufen hat. Der Brief sersetzt den Brief x. Es ist möglich, dass eine Datei gesetzt, aber nicht ausführbar ist. Dies wird durch gekennzeichnet S, wenn SSie durch Großbuchstaben darauf hingewiesen werden, dass diese Einstellung wahrscheinlich falsch ist, da das setuid-Bit (fast immer) unbrauchbar ist, wenn die Datei nicht ausführbar ist.

Wenn ein Verzeichnis über die Berechtigungen setuid (oder setgid) verfügt, gehören alle in diesem Verzeichnis erstellten Dateien dem Benutzer (oder der Gruppe), der bzw. die dem Eigentümer (oder der Gruppe) des Verzeichnisses entspricht.

Die Zahl nach den Berechtigungen ist die Anzahl der festen Links . Ein fester Link ist ein Pfad zu einer Datei (mit anderen Worten ein Name). Die meisten Dateien haben einen einzelnen Pfad, aber mit dem lnBefehl können Sie mehr erreichen . (Dies unterscheidet sich von symbolischen Verknüpfungen: Eine symbolische Verknüpfung besagt, dass sich diese Datei an einer anderen Stelle befindet: <Speicherort>.) Verzeichnisse haben N + 2 feste Verknüpfungen, wobei N die Anzahl der Unterverzeichnisse ist, da auf sie zugegriffen werden kann von ihren Eltern, von sich selbst (über den .Eintrag) und von jedem Unterverzeichnis (über den ..Eintrag).

Gilles
quelle
5
Was bedeutet es unter OS X, wenn es auf ein Verzeichnis angewendet wird? Zum Beispiel $ ls /Usersgibtdrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe
4
@jww Das bedeutet, dass Dateien, die in diesem Verzeichnis erstellt wurden, zu der Gruppe gehören, der das Verzeichnis gehört. Dies ist jedoch unter OSX die Standardeinstellung. Siehe en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories und unix.stackexchange.com/questions/12842/…
Gilles
@ Gilles, Wann hast du gesagt, dass eine Datei nicht "ausführbar" ist? Bedeutet dies, dass es nicht über die Berechtigung "Ausführbar" verfügt oder dass es sich nicht um einen Dateityp handelt, der ausgeführt werden kann?
Ransh
@ransh Ich meine die execute ( x) Berechtigung.
Gilles
Ich habe eine Bearbeitung eingereicht, die der in @
Jags
16

Nach info coreutils ls(was möglicherweise nicht genau das ist, was Sie haben):

`s '
Wenn sowohl das setuid- oder setgid-Bit als auch das entsprechende ausführbare Bit gesetzt sind.

`S '
Wenn das setuid- oder setgid-Bit gesetzt ist, aber das entsprechende ausführbare Bit nicht gesetzt ist.

Die Nummer nach dem Berechtigungsteil ist die Anzahl der festen Links.

Matte
quelle
2
Grundsätzlich ist das, was Sie mit bekommenchmod g-x,g+s dir
Sanmai
6

Das heißt (hoffentlich einfacher). Das Verzeichnis ist setgid. Alle dort erstellten Dateien gehören dieser Gruppe des Eigentümers dieses Ordners.

Der Ordner kann jedoch nicht von der Gruppe ausgeführt werden, sodass er in Großbuchstaben S angezeigt wird. Dies ist in der Regel der Fall, wenn ein Verzeichnis erstellt wird und das Verzeichnis als setgid endet.

Hm .. Ich bin mir nicht sicher, ob das wirklich wie normales Englisch klang.

Jag
quelle
1
Diese Antwort enthält nicht mehr oder andere Informationen als die vorhandenen Antworten.
Jayhendren
1
@ Jayhendren Ja, das tut es. Es geht um Verzeichnisse. Keine andere Antwort tut das. (Gilles sollte seinen Kommentar wahrscheinlich in seine Antwort aufnehmen.)
Sparhawk
0

Es liegt daran, dass Executable fehlt

s -> 'x' ist aktiviert S -> 'x' ist deaktiviert.

siehe unten Beispiel

$ 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
quelle
Können Sie erklären, was dies zu den vorhandenen Antworten beiträgt?
Stephen Kitt