Über ein Bash-Shell-Skript erstelle ich einen Ordner und speichere dort den mysqldump. Ich bin sicher, dass mein Skript keinen Befehl zu Berechtigungen enthält. Um einem anderen Benutzer den Zugriff auf diese Dateien zu ermöglichen, habe ich ACL verwendet, aber als er versuchte, auf die Datei zuzugreifen, wurde ihm die Berechtigung verweigert, und das Problem liegt bei den effective
Berechtigungen von ACL.
Der Besitzer des Verzeichnisses ist ola
und der neue Benutzer, der versucht, auf den Ordner zuzugreifen, ist uber
und der Ordner istgettaxi
Berechtigungen des übergeordneten Verzeichnisses
[/omega/olabooktmp]# getfacl .
# file: .
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Berechtigungen für das untergeordnete Verzeichnis
[/omega/olabooktemp]# getfacl gettaxi/
# file: gettaxi/
# owner: ola
# group: ola
user::rwx
user:uber:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
gettaxi
Ich sehe, dass die Berechtigungen für neue Verzeichnismasken wie folgt lauten mask::---
: Daher denke ich, dass dies das Problem verursacht, aber ich verstehe es nicht vollständig und weiß nicht, wie ich das Problem lösen kann.
Alle Vorschläge sind sehr willkommen.
Danke schön.
Antwort1
Sie können die Maske mit dem folgenden Befehl ändern:
setfacl -m m:rwx filename/directory
Antwort2
Wenn ich Ihre Frage richtig verstehe, ola
erstellt der Benutzer Dateien im Verzeichnis:/omega/olabooktmp/gettaxi
und Sie möchten den Zugriff auf diese Dateien einschränken, dem Benutzer jedoch Zugriff gewähren uber
.
Hinweis: /omega/olabooktmp/gettaxi
ist Eigentum vonola
Beginnen wir noch ohne ACL:
ls -ld /omega/olabooktmp/gettaxi
drwxr-x--- 2 ola ola 4096 mars 21 08:16 /omega/olabooktmp/gettaxi
Um rwx
die Berechtigung zur uber
Verwendung von ACL zu erteilen, können Sie Folgendes verwenden:
setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi
Dadurch werden Benutzerrechte uber
für rwx
den Ordner gewährt /omega/olabooktmp/gettaxi
und auch die Berechtigungen und erteilt rwx
. default
Es d:
erteilt X
Berechtigungen für Dateien, die sich bereits im Ordner befanden, und vererbt Berechtigungen für Dateien. Und natürlich werden auch alle anderen Berechtigungen other
zur Einschränkung entfernt. Der Eigentümer hat weiterhin seine eigenen Berechtigungen.
Das Ergebnis:
getfacl /omega/olabooktmp/gettaxi
getfacl: Removing leading '/' from absolute path names
# file: omega/olabooktmp/gettaxi
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::---
Testen:
ola
erstellt einige Dateien (als Root ausführen):
su - ola -c "for i in {1..3}; do date > /omega/olabooktmp/gettaxi/$RANDOM; done"
Ergebnis:
ls -l /omega/olabooktmp/gettaxi/
total 32
-rw-r----- 1 ola users 32 mars 21 08:43 17606
-rw-r----- 1 ola users 32 mars 21 08:43 22286
-rw-r----- 1 ola users 32 mars 21 08:42 31484
-rw-r----- 1 ola users 32 mars 21 08:43 31848
-rw-r----- 1 ola users 32 mars 21 08:42 667
-rw-r----- 1 ola users 4 mars 21 08:16 one
-rw-r----- 1 ola users 6 mars 21 08:16 three
-rw-r----- 1 ola users 4 mars 21 08:16 two
Kein Zugriff durch normalen Benutzer möglich (als Root ausführen):
su - debian -c "ls -l /omega/olabooktmp/gettaxi"
ls: cannot open directory '/omega/olabooktmp/gettaxi': Permission denied
Aber Uber kann (als Root ausführen):
su - uber -c "ls -l /omega/olabooktmp/gettaxi"
total 32
-rw-r----- 1 ola users 32 Mar 21 08:43 17606
-rw-r----- 1 ola users 32 Mar 21 08:43 22286
-rw-r----- 1 ola users 32 Mar 21 08:42 31484
-rw-r----- 1 ola users 32 Mar 21 08:43 31848
-rw-r----- 1 ola users 32 Mar 21 08:42 667
-rw-r----- 1 ola users 4 Mar 21 08:16 one
-rw-r----- 1 ola users 6 Mar 21 08:16 three
-rw-r----- 1 ola users 4 Mar 21 08:16 two
Wenn Sie Ihre ACL durch einige Tests verstümmelt haben, können Sie alle ACLs wie folgt entfernen:
setfacl -R -b /omega/olabooktmp/gettaxi
Und fang nochmal an.
Antwort3
Ja, die Maske verringert die Berechtigungen. Die effektive Berechtigung ist das Und einer Berechtigung und der Maske. ( user::
(der besitzende Benutzer) und other
sind von der Maske nicht betroffen).
Sie können die Maske ändern mit: zB setfacl -m m:r-x file-name
.
Wenn Sie ein ausführen ls -l
und der Modus mit einem endet +
, dann sind die mittleren Modus-Bits (traditionell die Gruppen-Bits) die Maske.
Manchmal werden die Modusbits entsprechend den Gruppenbits in gesetzt umask
. Ich habe die Regeln noch nicht ausgearbeitet, wann dies geschieht und wann die Standardmaske verwendet wird. Wenn cp
zum Kopieren einer Datei verwendet wird, scheint die zu verwenden umask
.
Eine Problemumgehung
Stellen Sie sicher, dass die Benutzer ihre eigene Gruppe haben und dass diese auf die Standardgruppe eingestellt ist. Setzen Sie dann die umask
auf 007
.
Antwort4
Ich vermute, dass es sich bei diesem Verhalten um einen Fehler handelt. Ich habe letzten Monat darüber gepostet (siehe unix.stackexchange.com/questions/570795). Was passiert, ist, dass die Dateiberechtigungen der Quelldatei durch den Befehl cp in die ACL-Maske kopiert werden. Das hätte ich für cp -p erwartet, nicht für cp. Ich habe herausgefunden, dass ich Kopien erstellen kann, indem ich cat verwende.
cat afile > bfile
oder durch Leitungen durch Teer
(cd A; tar -cf -)|(cd B; tar-xf -)
Und die ACLs werden wie erwartet respektiert.
Ich habe auch ein Kopfgeld ausgesetzt, um dieses CP-Verhalten erklären zu lassen. Niemand hat es erklärt. Ich denke darüber nach, einen Fehlerbericht einzureichen. D. h., dass dies das ´cp -p´-Verhalten sein sollte, nicht das Standard-CP-Verhalten. (Und das System hat die Kopfgeldpunkte abgezogen, obwohl niemand eine Antwort geben konnte. Das hat mich auch überrascht.)