Eine Problemumgehung

Eine Problemumgehung

Ü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 effectiveBerechtigungen von ACL.

Der Besitzer des Verzeichnisses ist olaund der neue Benutzer, der versucht, auf den Ordner zuzugreifen, ist uberund 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

gettaxiIch 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, olaerstellt 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/gettaxiist 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 rwxdie Berechtigung zur uberVerwendung 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 uberfür rwxden Ordner gewährt /omega/olabooktmp/gettaxiund auch die Berechtigungen und erteilt rwx. defaultEs d:erteilt XBerechtigungen für Dateien, die sich bereits im Ordner befanden, und vererbt Berechtigungen für Dateien. Und natürlich werden auch alle anderen Berechtigungen otherzur 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:

olaerstellt 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 othersind 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 -lund 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 cpzum 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 umaskauf 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.)

verwandte Informationen