it-swarm.com.de

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

Wenn ich ls -la, es werden viele Attribute gedruckt. 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 big S in der Zeichenfolge -rwSrwSr--? Was ist das folgende 1? Ich kenne andere ungefähr.

70
Eonil

Die Dokumentation des Befehls ls beantwortet diese Fragen. Suchen Sie bei den meisten Unix-Varianten die Manpage ls (man ls oder online). Lesen Sie unter Linux die Info-Dokumentation nach (info ls) oder online .

Der Buchstabe s gibt an, dass 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 Buchstabe s ersetzt den Buchstaben x. Es ist möglich, dass eine Datei gesetzt, aber nicht ausführbar ist. Dies wird mit S bezeichnet, wobei das Großbuchstaben S Sie darauf hinweist, 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 setuid oder setgid-) Berechtigungen verfügt, gehören alle in diesem Verzeichnis erstellten Dateien dem Benutzer (oder der Gruppe), der dem Eigentümer (oder) entspricht Gruppe) des Verzeichnisses.

Die Zahl nach den Berechtigungen ist die Anzahl --- (fester Link . Ein fester Link ist ein Pfad zu einer Datei (mit anderen Worten ein Name). Die meisten Dateien haben einen einzelnen Pfad, aber Sie können mit dem Befehl ln mehr erstellen. (Dies unterscheidet sich von symbolischen Links: Ein symbolischer Link sagt "Oh, tatsächlich befindet sich diese Datei an einer anderen Stelle, gehen Sie zu <Position>".) Verzeichnisse haben N + 2 feste Links, wobei N die Anzahl der Unterverzeichnisse ist, da auf sie zugegriffen werden kann von ihren Eltern, von sich selbst (durch die . Eintrag) und aus jedem Unterverzeichnis (über das .. Eintrag).

Gemäß 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, das entsprechende ausführbare Bit jedoch nicht gesetzt ist.

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

16
Mat

In (hoffentlich einfacheren) Worten bedeutet dies. 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, daher wird er in Großbuchstaben S angezeigt. Dies ist normalerweise der Fall, wenn ein Verzeichnis erstellt wird und das Verzeichnis als setgid endet.

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

6
Jag

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

$
0
praveen kumar