web-dev-qa-db-fra.com

Comment définir umask à l'échelle du système?

Je travaille dans un laboratoire où nous utilisons Linux (Debian et Ubuntu). Les noms d'utilisateur et les noms de groupe sont gérés par NIS et yp. Nous avons des utilisateurs communs auxquels tout le monde a accès et qui effectuent les expériences, puis nous avons chacun nos propres utilisateurs. En outre, il existe un groupe commun auquel nous appartenons tous.

Comment puis-je faire en sorte que tous les fichiers et répertoires du fichier partagé /home/ lecteur (NFS) lu/écrit (/ exécutable) par utilisateur/groupe? En gros ce que je veux c'est

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

ou équivalent umask 0002.

Mais l’exécution des commandes ci-dessus ne corrige que les fichiers en cours dans les dossiers et umask ne fonctionne que pour un seul utilisateur et doit être exécuté à chaque fois qu’un utilisateur se connecte, par exemple. dans le .bashrc fichier (et cela fonctionnera-t-il en mode de modification via gnome?). Existe-t-il une commande ou un paramètre à l'échelle du système que je pourrais utiliser pour m'assurer que notre groupe commun a un accès en écriture aux fichiers communs?

62
HansHarhoff

Debian et Ubuntu sont tous deux livrés avec pam_umask . Cela vous permet de configurer umask dans /etc/login.defs Et de l’appliquer à l’ensemble du système, quelle que soit la procédure de connexion de l’utilisateur.

Pour l'activer, vous devrez peut-être ajouter une ligne à la lecture /etc/pam.d/common-session

session optional pam_umask.so

ou il est peut-être déjà activé. Puis éditez /etc/login.defs Et changez la ligne UMASK en

UMASK           002

(la valeur par défaut est 022).

Notez que les utilisateurs peuvent toujours remplacer umask dans leur propre ~/.profile Ou ~/.bashrc Ou similaire, mais (au moins sur les nouvelles installations Debian et Ubuntu), il ne devrait pas y avoir de remplacement de umask dans /etc/profile Ou /etc/bash.bashrc. (S'il y en a, enlevez-les.)

95
ephemient

Tout d’abord, assurez-vous que le pam-modules Le paquet est installé. Cela rend le pam_umask module disponible. Ensuite, assurez-vous que /etc/pam.d/common-session a une ligne de la forme

session optional pam_umask.so

pour que pam_umask est autorisé.

Maintenant, selon le pam_umask man page, le umask par défaut est déterminé lors de la connexion en vérifiant chacun des emplacements suivants, dans l’ordre:

  1. Un paramètre système global défini par défaut dans /etc/pam.d/common-session. Pour le définir de cette façon, remplacez la ligne de ce fichier mentionné ci-dessus par ceci:

    session optional pam_umask.so umask=002
    
  2. Une entrée dans le champ GECOS d'un utilisateur individuel dans /etc/passwd remplace un paramètre logiciel général par défaut pour cet utilisateur spécifique. Créez cette entrée en utilisant une commande de la forme:

    chfn --other='umask=002' username
    
  3. Une ligne de la forme UMASK=002 dans /etc/default/login (vous devrez peut-être créer ce fichier) définit une valeur par défaut logicielle à l’échelle du système.

  4. La valeur UMASK de /etc/login.defs. Cette valeur est également utilisée pour autre chose (calcul des autorisations sur le répertoire de base d'un nouvel utilisateur en cours de création; voir les commentaires dans /etc/login.defs pour plus de détails). Il est donc préférable d'éviter de s'appuyer sur cela pour définir le paramètre umask par défaut pour les connexions régulières, afin de ne pas séparer les éléments.

Donc, dans votre cas, vous devriez le configurer soit dans /etc/default/login si vous voulez qu'il soit possible de remplacer le paramètre pour des utilisateurs individuels ou de le définir dans /etc/pam.d/common-session comme décrit ci-dessus si vous voulez qu'il soit identique pour tous les utilisateurs.

Notez que même avec le paramètre par défaut strict, les utilisateurs peuvent toujours remplacer le paramètre par défaut umask manuellement à l'aide de la commande umask à l'invite du shell ou dans leur .profile script.

Notez également que la méthode Unix traditionnelle pour définir cette valeur par défaut consiste à ajouter une commande umask à /etc/profile, et cela fonctionnerait toujours aussi. Mais ce n'est pas la méthode recommandée pour configurer de telles choses sur Ubuntu, car il est difficile de gérer de manière fiable en utilisant des scripts et des interfaces graphiques.

Notez malheureusement ceci a cessé de fonctionner pour toute application convertie au lancement via systemd --user .

23
Yitz

Afin de faire correspondre les droits de groupe, sur le serveur, le bit gid défini (un des "sticky bits") peut être considéré comme une option supplémentaire.

Si le répertoire partagé est lié au groupe , lancez (à l'aide de la racine): chmod -R 2775 folder_for_the_group peut être intéressant.

Pour tout nouveau fichier créé dans le dossier, le créateur sera le propriétaire, mais le groupe sera automatiquement spécifié (tant que le créateur fait partie du groupe).

La grille des droits apparaît maintenant sous la forme -rwxrwsr-x +

0
speedstream