it-swarm.com.de

Befehl 'chmod g + s'

Hallo, ich möchte die Rolle des Befehls chmod g+s In Unix verstehen.

Ich würde auch gerne wissen, was es in diesem speziellen Kontext tut:

cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

Ich verstehe alle Befehlsrollen außer chmod g+s Und möchte die Unterschiede zwischen den Dateien un und deux kennen, die sich aus dieser Befehlsreihe ergeben.

46
otus
chmod g+s .;

Dieser Befehl legt die Gruppen-ID (setgid) im aktuellen Verzeichnis fest, geschrieben als ..

Dies bedeutet, dass alle im aktuellen Verzeichnis erstellten neuen Dateien und Unterverzeichnisse die Gruppen-ID des Verzeichnisses und nicht die primäre Gruppen-ID des Benutzers erben, der die Datei erstellt hat. Dies wird auch an neue Unterverzeichnisse weitergegeben, die im aktuellen Verzeichnis erstellt wurden.

g+s Beeinflusst die Gruppen-ID der Datei, jedoch nicht die Eigentümer-ID.

Beachten Sie, dass dies nur für neu erstellte Dateien gilt. Dateien, die verschoben (mv) in das Verzeichnis verschoben werden, sind von der Einstellung setgid nicht betroffen. Dateien, die mit cp -p Kopiert werden, sind ebenfalls nicht betroffen.

Beispiel

touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

In diesem Fall gehört deux zur Gruppe canard, aber un gehört zur Gruppe des Benutzers, der es erstellt, was auch immer das ist.

Kleiner Hinweis zur Verwendung von Semikolons in Shell-Befehlen

Im Gegensatz zu c oder Perl muss auf einen Shell-Befehl nur dann ein Semikolon folgen, wenn in der Befehlszeile same ein weiterer Shell-Befehl darauf folgt. Betrachten Sie daher die folgende Befehlszeile:

chgrp canard .; chmod g+s .;

Das letzte Semikolon ist überflüssig und kann entfernt werden:

chgrp canard .; chmod g+s .

Wenn wir die beiden Befehle in getrennten Zeilen platzieren, wird das verbleibende Semikolon nicht benötigt:

chgrp canard .
chmod g+s .
64
John1024

Sie können die Dateiberechtigungen mit dem Befehl chmod ändern. Unter Unix werden Dateiberechtigungen, die festlegen, wer möglicherweise unterschiedliche Zugriffstypen auf eine Datei hat, sowohl von Zugriffsklassen als auch von Zugriffstypen angegeben. Zugriffsklassen sind Benutzergruppen, denen jeweils bestimmte Zugriffstypen zugewiesen werden können

Unix/Linux verfügt über Benutzer und Benutzergruppen, die für den Dateizugriff zugewiesen werden können

die Optionen g + s sind wie folgt:

g - die Berechtigungen, die andere Benutzer in der Dateigruppe dafür haben

s - Benutzer- oder Gruppen-ID bei der Ausführung festlegen

hier ist ein Beispiel für die Verwendung:

chmod =rwx,g+s filename

(Erlauben Sie jedem, eine bestimmte Datei zu lesen, zu schreiben und auszuführen und die festgelegte Gruppen-ID zu aktivieren.)

Um die Berechtigungen einer Datei festzulegen/zu ändern, müssen Sie das Programm chmod verwenden. Natürlich darf nur der Eigentümer einer Datei chmod verwenden, um die Berechtigungen einer Datei zu ändern. chmod hat die folgende Syntax: chmod [Optionen] Modusdatei (en) Der Teil 'Modus' gibt die neuen Berechtigungen für die Datei (en) an, die als Argumente folgen. Ein Modus gibt an, welche Benutzerberechtigungen geändert werden sollen und welche Zugriffstypen anschließend geändert werden sollen. Sagen wir zum Beispiel: chmod a-x socktest.pl

Dies bedeutet, dass das Ausführungsbit für alle Benutzer gelöscht werden sollte (-). (Eigentümer, Gruppe und der Rest der Welt) Die Berechtigungen beginnen mit einem Buchstaben, in dem angegeben wird, welche Benutzer von der Änderung betroffen sein sollen. Dies kann eine der folgenden sein:

u the owner user
g the owner group
o others (neither u, nor g)
a all users

Darauf folgt eine Änderungsanweisung, die aus einem + (gesetztes Bit) oder klares Bit) und dem Buchstaben besteht, der dem zu ändernden Bit entspricht. Sehen wir uns einige Beispiele an:

$ ls -l socktest.pl 
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod a-x socktest.pl 
$ ls -l socktest.pl 
-rw-r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod g+w socktest.pl 
$ ls -l socktest.pl 
-rw-rw-r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod ug+x socktest.pl 
$ ls -l socktest.pl 
-rwxrwxr--   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod ug-wx socktest.pl 
$ ls -l socktest.pl 
-r--r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

Seltsame Zahlen ... Vielleicht sind Sie auf Dinge wie chmod 755 gestoßen, und natürlich werden Sie sich fragen, was das ist. Die Sache ist, dass Sie das gesamte Berechtigungsmuster einer Datei auf einmal ändern können, indem Sie eine Nummer wie die in diesem Beispiel verwenden. Jeder Modus hat eine entsprechende Codenummer, und wie wir sehen werden, gibt es eine sehr einfache Möglichkeit, herauszufinden, welche Nummer einem Modus entspricht. Jede der drei Ziffern der Modusnummer entspricht einem der drei Berechtigungs-Tripletts. (u, g und o) Jedes Berechtigungsbit in einem Triplett entspricht einem Wert: 4 für r, 2 für w, 1 für x. Wenn das Berechtigungsbit Sie diesen Wert zur Nummer des Berechtigungs-Tripletts hinzufügen. Wenn es gelöscht ist, fügen Sie nichts hinzu. (Einige von Ihnen bemerken möglicherweise, dass die Zahl für ein Triplett tatsächlich der Oktalwert ist, der dem Drei-Bit-Muster entspricht. Wenn Sie nicht wissen, was ein Oktalwert ist, spielt es keine Rolle, folgen Sie einfach den Anweisungen ) Wenn eine Datei über die Berechtigungen rwxr-xr-x verfügt, führen wir die folgende Berechnung durch:

Triplett für u: rwx => 4 + 2 + 1 =7

Triplett für g: r-x => 4 + 0 + 1 =5

Triplett für o: r-x => 4 + 0 + 1 =5

Was macht: 755

755 ist also eine knappe Art zu sagen: "Es macht mir nichts aus, wenn andere Leute diese Datei lesen oder ausführen, aber nur ich sollte sie ändern können" und 777 bedeutet "Jeder hat vollen Zugriff auf diese Datei".

--- (perfekte Referenz

7
parallaxis

Unter Linux eine der Standard-Mount-Optionen für ext? fs ist 'nogrpid | sysvgroups '. Bei der ersten Berührung wird eine Datei mit der Gruppen-ID fsgid des Erstellungsprozesses erstellt, wobei fsgid = egid.

chmod g + s. lässt die nachfolgende Datei-/Verzeichniserstellung die Gruppen-ID vom übergeordneten Ordner erben, und wenn das erstellte Objekt ein Verzeichnis ist, wird auch g + s als übergeordnetes Element festgelegt.

Hier berühren Sie Deux, erstellt Deux mit Gruppen-Canard.

Die Semantik ändert sich, wenn die Mount-Option 'grpid | war bsdgroups 'In diesem Fall würde die Erstellung neuer Dateien/Verzeichnisse die Gruppen-ID von ihrem übergeordneten Ordner erben, auch ohne g + s für das übergeordnete Element selbst festzulegen.

0
Nizam Mohamed

Das Ergebnis des Befehls ls hängt von umask ab.

g + s setzt sgid auf die Datei. Weitere Informationen zu SUID SGID finden Sie unter hier

wenn Ihre Umask beispielsweise 022 ist, lautet das Ergebnis wie folgt:

-rw-r--r--    1 romeo    canard     0 Jan 31 20:58 deux
-rw-r-Sr--    1 romeo    UsersGrp   0 Jan 31 20:58 un
0
Romeo Ninov