2016-04-14 25 views
1

Ich fand heraus, wie man die symbolischen rwx Teile zu 421 oktalen Teilen liest/umwandelt, was ziemlich einfach war. Aber ich bin sehr verwirrt, wenn es die speziellen Charaktere gibt. Wir wissen, dass -r-xr --- wx in 0543 konvertiert wird, aber wie wird -r-sr --- wt oder -r-xr --- wt in?Linux-Dateiberechtigungen (in-depth) - numerisch in String-Notation und umgekehrt; zusätzliche Dateiberechtigungen

Ich glaube für unter Benutzer ausführen Erlaubnis gibt es x, s, S. Für Gruppen ausführen Erlaubnis gibt es auch x, s, S. Dann alle anderen Benutzer ausführen Erlaubnis gibt es x, t, T. Was bedeuten all diese und wie werden sie in die Oktalnotation umgewandelt. Ich vermute, es hat etwas mit der 0-Position in 0421 zu tun?

Aus meinen Notizen der Klasse heißt es, dass 5543 zu -r-sr --- wt konvertiert. Dann wird eine Beispielfrage von -r-S-wsrw- zu 6536 konvertiert, außer dass wir wollen, dass wir die zweite Position (5) korrigieren, so dass es die korrekte Konvertierung ist.

Ich suchte und googelte viel, aber überraschenderweise konnte nichts über diese Sonderzeichen finden.

Antwort

3

Nach eingehender auf der Web-Suche, fand ich this link about Understanding Linux File Permissions, die es im Detail beschrieben:

s - Diese angegeben die setuid/setgid-Berechtigungen. Dies wird nicht im Sonderberechtigungsbereich der Berechtigungsanzeige angezeigt, sondern wird als ein s im Leseteil des Besitzers oder der Gruppe Berechtigungen dargestellt.

t - Dies zeigt die Sticky-Bit-Berechtigungen an. Dies wird nicht in der Sondergenehmigung Teil der Berechtigungen Display angezeigt, aber wie bei im ausführbaren Teil der alle Benutzer Berechtigungen

Setuid/Setgid Spezielle Berechtigungen

vertreten ist - - Die setuid/setguid-Berechtigungen werden verwendet, um dem System mitzuteilen, dass eine ausführbare Datei als Eigentümer mit den Berechtigungen des Eigentümers ausgeführt werden soll.

--- Seien Sie vorsichtig mit setuid/setgid Bits in Berechtigungen. Wenn Sie einer Datei, der root gehört, fälschlicherweise Berechtigungen mit dem gesetzten setuid/setgid-Bit zuweisen, können Sie Ihr System für Intrusion öffnen.

--- Sie können das setuid/setgid-Bit nur zuweisen, indem Sie explizit Berechtigungen definieren. Das Zeichen für das setuid/setguid-Bit ist s.

Sticky Bit Spezielle Berechtigungen

--- Das Sticky-Bit kann in gemeinsam genutzten Umgebung sehr nützlich sein, weil, wenn es auf einem Verzeichnis zu den Berechtigungen zugewiesen wurde es es so nur Dateieigentümer setzt umbenennen oder löschen die genannte Datei.

--- Sie können das Sticky-Bit nur zuweisen, indem Sie explizit Berechtigungen definieren. Das Zeichen für das Sticky Bit ist t.

Logik hinter Umwandlung von numerischen (1/2/4421) zu symbolischen Notation (rwx/s/t):


EDIT:

Die erste Zahl gibt die Besitzer Genehmigung; Die zweite repräsentiert die Gruppenberechtigungen. und die letzte Zahl stellt die Berechtigungen für alle anderen Benutzer dar. Die Zahlen sind eine Binärdarstellung der rwx-Zeichenfolge.

r = 4 
w = 2 
x = 1 

---> Die Sticky-Bit kann den chmod Befehl eingestellt wird und kann mit seinem Oktal-Modus 1000 oder von seinem Symbol t (s durch das setuid- Bit wird bereits) eingestellt werden. Um zum Beispiel das Bit im Verzeichnis/usr/local/tmp hinzuzufügen, könnte man chmod 1777 /usr/local/tmp eingeben.

---> Die setuid- und Setgid Bits werden in der Regel mit dem Befehl chmod gesetzt durch die hohe Ordnung Oktalziffer zu 4 für setuid- oder 2 für Setgid Einstellung. chmod 6711 file setzt sowohl die Setuid- als auch die Setgid-Bits (4 + 2 = 6), wodurch die Datei für den Besitzer lesbar/ausführbar wird (7) und von der Gruppe (erste 1) und anderen ausführbar ist (zweite 1).

NOTE :

s --- The setuid bit when found in the user triad; the setgid bit when found in the group 
     triad; it is not found in the others triad; it also implies that x is set. 
S --- Same as s, but x is not set; rare on regular files, and useless on folders. 
t --- The sticky bit; it can only be found in the others triad; it also implies that x is 
     set. 
T --- Same as t, but x is not set; rare on regular files, and useless on folders. 

s, S, T und T-Werte angehängt werden immer vor der benutzergruppen anderen Erlaubnis Notation. Der erste Buchstabe der Notation repräsentiert also s-, S-, t- oder T-Werte, die an die Zeichenkette angehängt sind. Die nächsten 3 Buchstaben sind die übliche Erlaubnis.

Ihre Fragen/Beispiele im Zusammenhang mit Datei-Berechtigungen:

1. -r-sr---wt = 5543, first 5(s set for user = 4 + t set for others = 1), 
        second 5(r=4,s=1), third 4(r = 4), and last, fourth 3(w=2, t = 1). 


2. -r-S-wsrw- = 6436, first 6(S set for user = 4 + s set for group = 2), 
        second 5(r=4, x=0, since S don't account for x), 
        third 3(w = 2, s results in x = 1), and last, fourth 6(r=4,w=2). 
2

Falls Sie die aktuellen Bits wollen, können sie auf die stat.2 man page gefunden werden (als Code formatiert, damit es besser lesbar ist):

The following mask values are defined for the file type of the 
    st_mode field: 

     S_IFMT  0170000 bit mask for the file type bit field 

     S_IFSOCK 0140000 socket 
     S_IFLNK 0120000 symbolic link 
     S_IFREG 0100000 regular file 
     S_IFBLK 0060000 block device 
     S_IFDIR 0040000 directory 
     S_IFCHR 0020000 character device 
     S_IFIFO 0010000 FIFO 

    ... 

    The following mask values are defined for the file mode component of 
    the st_mode field: 

     S_ISUID  04000 set-user-ID bit 
     S_ISGID  02000 set-group-ID bit (see below) 
     S_ISVTX  01000 sticky bit (see below) 

     S_IRWXU  00700 owner has read, write, and execute permission 
     S_IRUSR  00400 owner has read permission 
     S_IWUSR  00200 owner has write permission 
     S_IXUSR  00100 owner has execute permission 

     S_IRWXG  00070 group has read, write, and execute permission 
     S_IRGRP  00040 group has read permission 
     S_IWGRP  00020 group has write permission 
     S_IXGRP  00010 group has execute permission 

     S_IRWXO  00007 others (not in group) have read, write, and 
          execute permission 
     S_IROTH  00004 others have read permission 
     S_IWOTH  00002 others have write permission 
     S_IXOTH  00001 others have execute permission 

Die Bits werden in the /usr/include/uapi/linux/stat.h header file definiert:

#ifndef _UAPI_LINUX_STAT_H 
#define _UAPI_LINUX_STAT_H 


#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 

#define S_IFMT 00170000 
#define S_IFSOCK 0140000 
#define S_IFLNK 0120000 
#define S_IFREG 0100000 
#define S_IFBLK 0060000 
#define S_IFDIR 0040000 
#define S_IFCHR 0020000 
#define S_IFIFO 0010000 
#define S_ISUID 0004000 
#define S_ISGID 0002000 
#define S_ISVTX 0001000 

#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 

#define S_IRWXU 00700 
#define S_IRUSR 00400 
#define S_IWUSR 00200 
#define S_IXUSR 00100 

#define S_IRWXG 00070 
#define S_IRGRP 00040 
#define S_IWGRP 00020 
#define S_IXGRP 00010 

#define S_IRWXO 00007 
#define S_IROTH 00004 
#define S_IWOTH 00002 
#define S_IXOTH 00001 

#endif 


#endif /* _UAPI_LINUX_STAT_H */