Warum werden Dateien in meinem Home-Verzeichnis trotz einer restriktiveren Umask als weltweit beschreibbar erstellt?

10

Ich habe festgestellt, dass sich die Berechtigungen für neue Dateien und Verzeichnisse etwas seltsam verhalten. Zunächst scheint umask die richtige Antwort zu geben:

$ umask
0002

Dies bedeutet vollen Zugriff für meinen Benutzer und meine Gruppe, keinen Schreibzugriff für den Rest der Welt, kein Suid. Aber wenn ich eine Datei in meinem $ HOME erstelle, sieht es so aus:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

dh jedem Schreibzugriff gewähren. Das gleiche passiert mit Verzeichnissen:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

Ich denke, dies ist dasselbe wie mit umask 0000, nicht mit 0002. Ich habe alle / etc nach einer Instanz von umask durchsucht, die die Standardeinstellung 0002 oder 0022 ändert, aber keine gefunden. Dies ist eine Standardinstallation von CentOS 5.5. Gibt es einen Hinweis darauf, warum dies geschieht?

rsuarez
quelle
3
Auf welchem ​​Dateisystemtyp befindet sich Ihr Home-Verzeichnis?
Mattdm
4
Und wie kreierst du testfileund testdir?
Mattdm
3
@mattdm, Sie haben zu Recht darauf bestanden: Es ist XFS. Ich habe vergessen, dass wir separate Volumes für / home, / var und mehrere weitere haben. Obwohl ich XFS oft benutze und dieses Verhalten nicht gesehen habe. Wie kann es zusammenhängen?
Rsuarez
2
acl kann umask lokal überschreiben. Ist es möglich, dass Ihre Verzeichnisse mit acl gemountet werden?
Faheem Mitha
3
Hmm, anscheinend hat xfs immer acl aktiviert. Daher wird es möglicherweise nicht in Ihrer / etc / fstab angezeigt. Versuchen Sie, getfacl auf Ihren Partitionen / Verzeichnissen auszuführen.
Faheem Mitha

Antworten:

3

Ich weiß nicht, ob es richtig ist, meine eigene Frage zu beantworten. Die Redakteure beraten Sie bitte, wenn dies nicht der Fall ist. Danke im Voraus.

Ich glaube, ich habe dieses Rätsel gelöst: Das Problem war das Fehlen einer Standard-ACL auf den XFS-Volumes. Hier ist der ACL-Eintrag für / srv / backups, eines der betroffenen Verzeichnisse:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Wann immer ich einen "mkdir-Test" oder eine "Touch-Testdatei" durchführte, wurden die Berechtigungen 777 angezeigt. Also tat ich Folgendes:

setfacl -m d:u::rwx /srv/backups

Verlassen Sie die ACL wie folgt:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Früher gab es (angeblich) keine ACL, jetzt gibt es sie. Ich kann das "+" - Zeichen sehen, das an die Berechtigungen angehängt ist, wenn ich ein "ls -l" mache. Und auf magische Weise arbeiten jetzt "mkdir test" und "touch testfile" mit den erwarteten Berechtigungen:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

Ich weiß nicht, warum das passiert. Ich denke, XFS mag es nicht, keine Standard-ACL zu haben, und verhält sich seltsam, wenn es passiert. Außerdem habe ich gesehen, dass dies nur in CentOS passiert, nicht in Debian / Ubuntu. Vielleicht hängt es mit der XFS-Version im Kernel zusammen oder so ähnlich. Keine Ahnung.

Wie auch immer, das regelt den Fall für mich. Vielen Dank für alle Vorschläge :-)

rsuarez
quelle
Die Beantwortung Ihrer eigenen Frage ist durchaus akzeptabel .
Keith Thompson
0

Der Erstellungsaufruf kann explizit Berechtigungen angeben, die Vorrang vor umask haben.

Sie haben nicht geantwortet, wie Sie erstellen testfile,testdir.

Erstellen Sie die Datei mit touch testfile, listen Sie die Berechtigungen auf und veröffentlichen Sie sie

bsd
quelle
Entschuldigung für die Verspätung. Ich habe mit "touch testfile" und auch "mkdir testdir" mit ähnlichen Ergebnissen getestet. umask scheint auf "0000" gesetzt zu sein, da sie mit den Berechtigungen 777 erstellt wurden.
rsuarez
0

Versuchen getfacl .Sie es in dem Verzeichnis, in dem Sie Ihre Testdatei erstellen, um festzustellen, ob eine Standard-ACL die Berechtigungen beeinflusst.

Andrew
quelle
1
Nein, keine Standard-ACL. Es scheint irgendwie mit XFS zu tun zu haben, da es nur in XFS-Volumes vorkommt. Danke trotzdem.
Rsuarez
-1

Suchen Sie einfach nach der Variablen USERGROUPS_ENAB unter /etc/login.defs

Sie kommentieren, um es zu deaktivieren # USERGROUPS_ENAB yes

Wenn Sie auch die Umask Ihres aktuellen Benutzers ändern möchten, sollten Sie zuerst das vorherige Verfahren ausführen und diese die folgenden Schritte ausführen.

Beispiel für 027

echo "umask 027" >> ~ / .bashrc && pkill -KILL -u your_username_here

echo "umask 027" >> ~ / .bashrc Mit diesem Befehl wird ein umask-Standardwert für Ihr Profil festgelegt

Dadurch werden Sie gezwungen, sich abzumelden

nach erneutem Login

Führen Sie einfach den Befehl umask erneut aus und prüfen Sie, ob er für Sie funktioniert

user336810
quelle