===== Besondere Berechtigungen auf Dateien und Verzeichnissen unter Linux - File Permissions (setuid, setgid and Sticky Bit) ===== Es gibt drei Spezial Berechtigungen für Verzeichnisse und ausführbare Dateien: * setuid * setgid * sticky bit ---- ===setuid Permission=== Wenn die "set-user identification" (setuid) Berechtigung auf einer ausführbaren Datei gesetzt ist, kann ein anderer Anwender dieses "Programm" starten und der Prozess hinter dem Programm wird mit dem Rechten des ursprünglichen Users aufgerufen und kann auf das Filesystem zugreifen, als ob es der ursprüngliche User aufgerufen hätte. Auch wird als Eigentümerin der Prozess Liste der ursprüngliche User angezeigt. Beispiel (Auf die Position des "s" achten!): #als root ls -la /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd #als oracle anmelden su - oracle /usr/bin/passw #Parallele Session als root starten und prüfen unter was das jetzt läuft #Prozess auswerten ps uafx | head -1 && ps uafx | grep -v grep | grep passwd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 11293 0.0 0.0 162032 1764 pts/1 S+ 17:19 0:00 | \_ /usr/bin/passwd ==Setzen und entfernen mit== #setzen chmod u+s /opt/oracle/myprogramm #Oktal Notation mit führender 4 chmod 4764 /opt/oracle/myprogramm #entfernen chmod u-s /opt/oracle/myprogramm #Oktal Notation mit führender 0 chmod 0764 /opt/oracle/myprogramm ==Danach suchen - suid = 4000== find /opt/oracle -type f -perm /4000 -exec stat -c "%A %a %n" {} \; ---- ===setgid Permission=== Die "set-group identification" (setgid) Berechtigung ist ähnlich zur setuid, nur das hier die Gruppen ID für die Berechtigung verwendet wird. ==Setzen und entfernen mit == #setzen chmod g+s /opt/oracle/myprogramm #Oktal Notation mit führender 2 chmod 2764 /opt/oracle/myprogramm #entfernen chmod g-s /opt/oracle/myprogramm #Oktal Notation mit führender 0 chmod 0764 /opt/oracle/myprogramm ==Danach suchen - setgid = 2000== find /opt/oracle -type f -perm /2000 -exec stat -c "%A %a %n" {} \; **Nach beiden Suchen = 6000** find /opt/oracle -type f -perm /6000 -exec stat -c "%A %a %n" {} \; ---- ===Sticky Bit=== Mit dem "sticky bit" kann eine Datei in einen Verzeichnis davor geschützt werden, von jemand anderem als den Eigentümer der Datei oder des Verzeichnisses (oder root) gelöscht zu werden. Das kann nützlich sein, um zum Beispiel eine Datei unter /var/log zu schützen. Wird zum Beispiel auf /tmp gesetzt (man achte auf das "**t**"): ls -la /tmp drwxrwxrwt. 6 root root 4096 Apr 2 17:06 . Ist an der letzen Stelle ein "x" wird daraus ein "**t**", ist dort ein "-" wird ein großes "**T**" dargestellt! ==Setzen und entfernen mit == #setzen chmod +t /opt/oracle/logs #Oktal Notation mit führender 1 chmod 1777 /opt/oracle/logs #Oktal Notation mit führender 0 chmod 0764 /opt/oracle/logs ==Danach suchen - Sticky Bit = 1000== find /opt/oracle -type d -perm /1000 -exec stat -c "%A %a %n" {} \; ---- ==== Mehr dazu - Quellen ==== * Oracle System Administration Guide: Security Services => http://docs.oracle.com/cd/E19683-01/816-4883/secfile-69/index.html * http://linuxg.net/how-to-set-the-setuid-and-setgid-bit-for-files-in-linux-and-unix/ * http://de.wikipedia.org/wiki/Sticky_Bit