Angenommen, meine Umask ist 0077.
Ich habe ein Verzeichnis, foo
auf das spezielle Berechtigungen angewendet werden sollen. Alle Dateien, in denen ich erstelle, foo
sollten weltweit lesbar sein, und alle Verzeichnisse sollten weltweit lesbar und ausführbar sein.
Wenn ich eine Datei erstelle, ist sie derzeit 0600 und ein Verzeichnis 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Ich möchte, dass die Datei 0644 und das Verzeichnis 0755 ist, unabhängig von meiner Umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Wie kann ich das erreichen?
linux
permissions
access-control-list
umask
stickmangumby
quelle
quelle
Antworten:
Ja, Acls können das.
Stellen Sie sicher, dass Ihr Dateisystem mit acl gemountet ist. Um dies zu überprüfen, geben Sie ein
mount
. Sie sollten sehen, dass 'acl' unter anderen Berechtigungen aufgeführt ist, z.Wenn es nicht mit acl gemountet ist, öffnen Sie / etc / fstab und fügen Sie 'acl' zur Liste der Optionen hinzu:
Mounten Sie nun das laufende Dateisystem mit den neuen Optionen erneut:
Installieren Sie die acl-Dienstprogramme. Auf Ubuntu / Debian ist dies:
Deine neuen Freunde sind
setfacl
undgetfacl
. Verwenden Siesetfacl
diese Option, um die Standard-ACL für ein Verzeichnis zu ändern:-d
-m
Setzt die Standardeinstellung, ändert acl undo:r
gewährt "anderen" das Recht zum Lesen. Das Festlegen der Standardeinstellung für ein Verzeichnis entspricht in etwa dem Festlegen von setgid für ein Verzeichnis. Statt neu erstellter Dateien, die die Gruppe erben, erben sie jedoch die ACL. Setgid und acl können zusammen leistungsstark sein, da Sie einer Gruppe Standardberechtigungen erteilen und neu erstellte Dateien für diese Gruppe erhalten können, um eine effektive gruppenbasierte Umask pro Verzeichnis zu erhalten.Überprüfen Sie Ihre Arbeit:
ls -l
sollte jetzt ein zusätzliches "+" anzeigen, das das Vorhandensein von acl zusätzlich zu den Standarddateiberechtigungen anzeigt.Sie können detaillierte Informationen über die ACL mit erhalten
getfacl
.quelle
setfacl
und gebengetfacl
die erwartete Ausgabe zurück, aber nur Verzeichnisse (keine Dateien) im übergeordneten Verzeichnis erben die ACL, und selbst dann hat meine Umask Vorrang vor der Standardeinstellung (wenn sie nicht weltweit lesbar sind,default:other::r--
lässt sie keinen anderen Benutzer zu Zugriff darauf). Habe ich etwas Offensichtliches verpasst?Sie können auch eine Umask für das Verzeichnis erzwingen, indem Sie die mask-ACL-Eigenschaft wie folgt festlegen:
quelle
Installieren Sie einfach OnDir und konfigurieren Sie es entsprechend Ihren Anforderungen. Ich habe ein ähnliches Problem hier beantwortet .
quelle