2012-04-19 4 views
58

Ich arbeite in einem Labor, in dem wir Linux (Debian und Ubuntu) laufen. Benutzernamen und Gruppennamen werden von NIS und yp behandelt. Wir haben einige gemeinsame Benutzer, auf die jeder Zugriff hat, die die Experimente ausführen, und dann haben wir jeweils eigene Benutzer, außerdem gibt es eine gemeinsame Gruppe, der wir alle angehören.Wie man systemweit Umask einstellt?

Wie kann ich machen, dass alle Dateien und Verzeichnisse auf dem freigegebenen /home/ Laufwerk (NFS) lesen/schreiben (/ ausführbar) von Benutzer/Gruppe? Im Grunde, was ich will, ist

chmod -R 664 /home 
chgrp -R commongroup /home 

oder äquivalent umask 0002.

Das Ausführen der obigen Befehle behebt jedoch nur die aktuellen Dateien in den Ordnern und umask funktioniert nur für einzelne Benutzer und muss jedes Mal ausgeführt werden, wenn sich ein Benutzer anmeldet. in der .bashrc Datei (und wird dies für den Änderungsmodus über Gnome funktionieren?). Gibt es einen systemweiten Befehl oder eine Einstellung, die ich verwenden könnte, um sicherzustellen, dass unsere Commongroup Schreibzugriff auf die gemeinsamen Dateien hat?

+2

ich glaube Sie 'setfacl' (und halten) Zugriffseinstellungen auf ein Verzeichnis rekursiv einstellen können. http://linuxcommand.org/man_pages/setfacl1.html – tMC

+2

Sie * wollen * nicht zu 'chmod -R 644/home': Dies entfernt das eXecute-Bit aus Verzeichnissen, was sie unerforschbar macht. – ephemient

+0

Im Anschluss an den Kommentar von tMC: Wenn Sie dies auf bestimmten Verzeichnissen (und optional Unterverzeichnissen) möchten und nicht an alle (!) Dateien und Verzeichnisse eines bestimmten Benutzers binden möchten, verwenden Sie ACLs. Hier ist [eine gute Antwort] (http://stackoverflow.com/a/6550059/923794) auf eine ähnliche Frage – cfi

Antwort

90

Sowohl Debian als auch Ubuntu werden mit pam_umask ausgeliefert. Auf diese Weise können Sie umask in /etc/login.defs konfigurieren und sie systemweit gelten, unabhängig davon, wie sich ein Benutzer anmeldet.

es zu aktivieren, können Sie eine Linie zu /etc/pam.d/common-session hinzufügen müssen lesen

session optional pam_umask.so 

oder Möglicherweise ist es bereits aktiviert. Dann bearbeiten /etc/login.defs und ändern Sie die UMASK Linie

UMASK   002 

(die Standardeinstellung ist 022).

Beachten Sie, dass Benutzer immer noch in ihren eigenen überschreiben umask können ~/.profile oder ~/.bashrc oder ähnlich, aber (zumindest auf neue Debian und Ubuntu-Installationen) sollte es keine zwingenden von umask in /etc/profile oder /etc/bash.bashrc sein. (Falls vorhanden, entfernen Sie sie einfach.)

+3

In 12.04 ist es standardmäßig aktiviert. –

+6

debian 7 hat ** nicht ** standardmäßig aktiviert. – earthmeLon

+0

Wie stelle ich eine benutzerdefinierte Umask auf einen bestimmten Benutzer ein? – brauliobo

20

Stellen Sie zunächst sicher, dass das Paket pam-modules installiert ist. Das macht das pam_umask Modul verfügbar. Dann stellen Sie sicher, dass /etc/pam.d/common-session eine Zeile der Form hat

session optional pam_umask.so 

so dass pam_umask aktiviert ist. Jetzt

nach der pam_umask Manpage, wird der Standard-umask bei der Anmeldung bestimmt von jedem der folgenden Orte, um die Überprüfung:

  1. Eine harte systemweite Standardeinstellung in /etc/pam.d/common-session. So legen Sie es auf diese Weise, ersetzen Sie die Zeile aus der Datei mit diesem oben genannten:

    session optional pam_umask.so umask=002 
    
  2. Ein Eintrag in einem GECOS-Feld des einzelnen Benutzers in /etc/passwd überschreibt einen weichen systemweiten Standard für diesen bestimmten Benutzer.diesen Eintrag erstellen Befehl des Formulars mit:

    chfn --other='umask=002' username 
    
  3. Eine Zeile der Form UMASK=002 in /etc/default/login (Sie können diese Datei erstellen müssen) stellt einen weichen systemweiten Standard.

  4. Der UMASK Wert von /etc/login.defs. Dieser Wert wird auch für etwas anderes verwendet (Berechnung der Berechtigungen für das Ausgangsverzeichnis eines neuen Benutzers, der gerade erstellt wird; weitere Informationen finden Sie in den Kommentaren in /etc/login.defs). Es ist also am besten, sich nicht darauf zu verlassen, um die Standard-Umask für reguläre Logins zu setzen, um die Dinge getrennt zu halten.

Also in Ihrem Fall sollten Sie dies entweder in /etc/default/login konfigurieren, wenn Sie es möglich sein soll, die Einstellung für einzelne Benutzer außer Kraft zu setzen, oder es in /etc/pam.d/common-session gesetzt, wie oben beschrieben, wenn Sie es wollen gleich sein für alle Benutzer.

Beachten Sie, dass Benutzer auch mit der Standardeinstellung die Standardeinstellung umask manuell überschreiben können, indem Sie den Befehl umask an der Shell-Eingabeaufforderung oder in ihrem .profile Skript verwenden.

Beachten Sie auch, dass die traditionelle Unix-Methode zum Festlegen dieses Standards darin besteht, einen umask-Befehl zu /etc/profile hinzuzufügen, und das würde auch weiterhin funktionieren. Aber es ist nicht die empfohlene Art, solche Dinge auf Ubuntu zu konfigurieren, da dies mit Skripts und GUIs nur schwer zuverlässig zu managen ist.

Hinweis, leider diese stopped working for any application which has been converted to launch via systemd --user.

+1

Es gibt 'USERGROUPS_ENAB' Optionen, die in einigen Fällen' 022' in '002' ändern können. –

+0

In Ubuntu Server 16.04.1 enthält das Paket 'libpam-modules' das Modul' pam_umask'. (Befehl 'dpkg-query --search/lib/x86_64-linux-gnu/security/pam_umask.so 'druckt' libpam-modules: amd64:/lib/x86_64-linux-gnu/security/pam_umask.so '.) –

+3

'/ etc/defaults' existiert nicht in Ubuntu Server 16.04.1. Könnte der korrekte Pfad '/ etc/default/login' lauten? –

0

Um die Gruppenrechte auf dem Server abzugleichen, kann das gesetzte gid-Bit (eines der "sticky bits") als zusätzliche Option betrachtet werden.

Wenn das freigegebene Verzeichnis an die Gruppe verknüpft ist, startet (mit root): chmod -R 2775 folder_for_the_group interessant sein kann.

Für jede neue Datei, die im Ordner erstellt wird, ist der Ersteller der Eigentümer, aber die Gruppe wird automatisch angegeben (solange der Ersteller Teil der Gruppe ist).

Raster jetzt Rechte erscheint als -rwxrwsr-x +