// Aktualisiert am 8. Februar - Ausstehende Probleme in Kürze:
- Wie kann man Verzeichnisse anders als Dateien umaskieren?
- Wie umask auf Nautilus kopieren / einfügen?
- Wie setze ich umask für SSHFS?
UNSERE SITUATION
Mehrere Personen aus unserem Unternehmen melden sich bei einem Server an und laden Dateien hoch. Sie alle müssen in der Lage sein, dieselben Dateien hochzuladen und zu überschreiben. Sie haben unterschiedliche Benutzernamen, gehören aber alle zur selben Gruppe. Dies ist jedoch ein Internet-Server, daher sollten die "anderen" Benutzer (im Allgemeinen) nur Lesezugriff haben. Was ich also haben möchte, sind diese Standardberechtigungen:
Dateien: 664
Verzeichnisse: 771
Mein Ziel ist es, dass sich nicht alle Benutzer um Berechtigungen kümmern müssen. Der Server sollte so konfiguriert sein, dass diese Berechtigungen für alle Dateien und Verzeichnisse gelten, die neu erstellt, kopiert oder überschrieben wurden. Nur wenn wir spezielle Berechtigungen benötigen, würden wir dies manuell ändern.
Wir laden Dateien auf den Server hoch, indem wir SFTP in Nautilus ausführen, den Server mit sshfs mounten und in Nautilus darauf zugreifen, als wäre es ein lokaler Ordner, und indem wir SCP in der Befehlszeile ausführen. Das deckt im Wesentlichen unsere Situation und unser Ziel ab.
Jetzt habe ich viele Dinge über die schöne Umask-Funktionalität gelesen. Soweit ich weiß, sollte umask (zusammen mit PAM) es mir ermöglichen, genau das zu tun, was ich will: Standardberechtigungen für neue Dateien und Verzeichnisse festlegen. Nach vielen, vielen Stunden Lesen und Ausprobieren bekomme ich dies jedoch immer noch nicht zum Laufen. Ich bekomme viele unerwartete Ergebnisse. Ich mag es wirklich, ein solides Verständnis von Umask zu bekommen und habe viele Fragen unbeantwortet. Ich werde diese Fragen unten zusammen mit meinen Ergebnissen und einer Erklärung meiner Versuche, die zu diesen Fragen geführt haben, veröffentlichen. Angesichts der Tatsache, dass viele Dinge schief zu gehen scheinen, denke ich, dass ich einige Dinge falsch mache. Daher gibt es viele Fragen.
HINWEIS: Ich verwende Ubuntu 9.10 und kann daher die sshd_config nicht ändern , um die Umask für den SFTP-Server festzulegen. Installiertes SSH OpenSSH_5.1p1 Debian-6ubuntu2 <erforderlich OpenSSH 5.4p1. Also hier gehen die Fragen.
1. MUSS ICH NEU STARTEN, damit PAM-ÄNDERUNGEN EFFEKTIEREN?
Beginnen wir damit. Es waren so viele Dateien beteiligt, und ich konnte nicht herausfinden, was die Dinge beeinflusst und was nicht, auch weil ich nicht wusste, ob ich das gesamte System neu starten muss, damit PAM-Änderungen wirksam werden. Ich habe dies getan, nachdem ich die erwarteten Ergebnisse nicht gesehen hatte, aber ist das wirklich notwendig? Oder kann ich mich einfach vom Server abmelden und wieder anmelden und sollten neue PAM-Richtlinien wirksam sein? Oder gibt es ein 'PAM'-Programm zum Neuladen?
2. GIBT ES EINE EINZELNE DATEI ZU ÄNDERN, DIE ALLE BENUTZER FÜR ALLE SITZUNGEN BEEINFLUSST?
Also habe ich VIELE Dateien geändert, als ich VIELE verschiedene Dinge gelesen habe. Am Ende habe ich die Umask in den folgenden Dateien festgelegt:
~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session -> umask=0002
/etc/pam.d/sshd -> umask=0002
/etc/pam.d/login -> umask=0002
Ich möchte, dass diese Änderung für alle Benutzer gilt, daher ist eine systemweite Änderung am besten. Kann es erreicht werden?
3. FUNKTIONIERT DIESE UMASK-DINGE?
Nachdem ich an jedem möglichen Ort umask auf 0002 geändert habe, führe ich Tests durch.
------------ SCP -----------
TEST 1:
scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile 100% 4 0.0KB/s 00:00
Lassen Sie uns die Berechtigungen überprüfen:
user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)
UPDATE: behoben, indem NUR umask in pam.d / common-session gesetzt wurde (siehe Kommentare)
--------- SSH ------------
TEST 2:
ssh server
user@server:/home$ touch anotherfile
user@server:/home$ ls -l
total 4
-rw-rw-r-- 1 user uploaders 0 2011-02-05 18:03 anotherfile (664)
-------- SFTP -----------
Nautilus: sftp: // server / home /
Kopieren Sie die neue Datei und fügen Sie sie vom Client auf den Server ein (777 auf dem Client).
TEST 3:
user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)
Erstellen Sie eine neue Datei über Nautilus. Überprüfen Sie die Dateiberechtigungen im Terminal:
TEST 4:
user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders 0 2011-02-05 18:06 newfile (600)
Ich meine ... WAS ist gerade hier passiert?! Wir sollten jedes Mal 644 bekommen. Stattdessen bekomme ich 711, 777, 600 und dann einmal 644. Und der 644 wird nur erreicht, wenn eine neue, leere Datei über SSH erstellt wird, was das am wenigsten wahrscheinliche Szenario ist.
Also frage ich, funktioniert umask / pam doch?
UPDATE: Test 4 wurde behoben, indem NUR umask in pam.d / common-session gesetzt wurde (siehe Kommentare).
4. WAS BEDEUTET ES, SSHFS UMASKIEREN?
Manchmal mounten wir einen Server lokal mit sshfs. Sehr hilfreich. Aber auch hier haben wir Berechtigungsprobleme.
So montieren wir:
sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt
HINWEIS: Wir verwenden umask = 113, da sshfs anscheinend von 777 anstelle von 666 startet. Mit 113 erhalten wir also 664, was die gewünschte Dateiberechtigung ist.
Jetzt sehen wir jedoch alle Dateien und Verzeichnisse so, als wären sie 664. Wir durchsuchen Nautilus nach / mnt und:
- Rechtsklick -> Neue Datei (neue Datei) --- TEST 5
- Rechtsklick -> Neuer Ordner (neuer Ordner) --- TEST 6
- Kopieren Sie eine 777-Datei von unserem lokalen Client und fügen Sie sie ein --- TEST 7
Überprüfen wir also die Befehlszeile:
user@client:/mnt$ ls -l
total 8
-rw-rw-r-- 1 user 1007 3 Feb 5 18:05 copyfile (664)
-rw-rw-r-- 1 user 1007 0 Feb 5 18:15 newfile (664)
drw-rw-r-- 1 user 1007 4096 Feb 5 18:15 newfolder (664)
Aber hey, lassen Sie uns denselben Ordner auf der Serverseite überprüfen:
user@server:/home$ ls -l
total 8
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 copyfile (777)
-rw------- 1 user uploaders 0 2011-02-05 18:15 newfile (600)
drwx--x--x 2 user uploaders 4096 2011-02-05 18:15 newfolder (711)
Was?! Die REAL-Dateiberechtigungen unterscheiden sich stark von denen in Nautilus. Erstellt diese Umask auf sshfs nur einen 'Filter', der unwirkliche Dateiberechtigungen anzeigt? Und ich habe versucht, eine Datei von einem anderen Benutzer zu öffnen, aber von derselben Gruppe, die echte 600 Berechtigungen, aber 644 "falsche" Berechtigungen hatte, und ich konnte dies immer noch nicht lesen. Was nützt dieser Filter?
5. UMASK dreht sich alles um Dateien. ABER WAS IST MIT VERZEICHNISSEN?
Aus meinen Tests kann ich ersehen, dass die angewendete Umask auch irgendwie die Verzeichnisberechtigungen beeinflusst. Ich möchte jedoch, dass meine Dateien 664 (002) und meine Verzeichnisse 771 (006) sind. Ist es also möglich, eine andere Umask für Verzeichnisse zu haben?
6. PERHAPS UMASK / PAM IST WIRKLICH COOL, ABER UBUNTU IST NUR BUGGY?
Einerseits habe ich Themen von Menschen gelesen, die mit PAM / UMASK und Ubuntu erfolgreich waren. Andererseits habe ich viele ältere und neuere Fehler in Bezug auf umask / PAM / fuse unter Ubuntu gefunden:
- https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/241198
- https://bugs.launchpad.net/ubuntu/+source/fuse/+bug/239792
- https://bugs.launchpad.net/ubuntu/+source/pam/+bug/253096
- https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/549172
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314796
Ich weiß also nicht mehr, was ich glauben soll. Soll ich einfach aufgeben? Würde ACL alle meine Probleme lösen? Oder habe ich wieder Probleme mit Ubuntu?
Ein Wort der Vorsicht bei Backups mit Teer. Red Hat / Centos-Distributionen unterstützen acls im tar-Programm, aber Ubuntu unterstützt acls beim Sichern nicht. Dies bedeutet, dass alle Acls verloren gehen, wenn Sie ein Backup erstellen.
Ich bin sehr bereit, auf Ubuntu 10.04 zu aktualisieren, wenn dies auch meine Probleme lösen würde, aber zuerst möchte ich verstehen, was passiert.