// Mise à jour le 8 février - Questions en suspens en bref:
- Comment masquer les répertoires différemment des fichiers?
- Comment umask sur Nautilus copier / coller?
- Comment configurer umask pour SSHFS?
NOTRE SITUATION
Plusieurs personnes de notre entreprise se connectent à un serveur et téléchargent des fichiers. Ils doivent tous pouvoir télécharger et écraser les mêmes fichiers. Ils ont des noms d'utilisateur différents, mais font tous partie du même groupe. Cependant, il s'agit d'un serveur Internet, donc les "autres" utilisateurs devraient avoir (en général) un accès en lecture seule. Donc, ce que je veux, c'est ces autorisations standard:
fichiers: 664
répertoires: 771
Mon objectif est que tous les utilisateurs n'aient pas à se soucier des autorisations. Le serveur doit être configuré de telle manière que ces autorisations s'appliquent à tous les fichiers et répertoires, nouvellement créés, copiés ou écrasés. Ce n'est que lorsque nous avons besoin de certaines autorisations spéciales que nous le modifierons manuellement.
Nous téléchargeons des fichiers sur le serveur par SFTP-ing dans Nautilus, en montant le serveur à l'aide de sshfs et en y accédant comme s'il s'agissait d'un dossier local, et par SCP-ing dans la ligne de commande. Cela couvre essentiellement notre situation et ce que nous voulons faire.
Maintenant, j'ai lu beaucoup de choses sur la belle fonctionnalité umask. D'après ce que je comprends, umask (avec PAM) devrait me permettre de faire exactement ce que je veux: définir des autorisations standard pour les nouveaux fichiers et répertoires. Cependant, après de nombreuses heures de lecture et d'essais et d'erreurs, je n'arrive toujours pas à faire fonctionner cela. J'obtiens de nombreux résultats inattendus. J'aime vraiment bien saisir umask et avoir de nombreuses questions sans réponse. Je posterai ces questions ci-dessous, avec mes résultats et une explication de mes essais qui ont conduit à ces questions. Étant donné que beaucoup de choses semblent mal tourner, je pense que je fais mal plusieurs choses. Donc, il y a donc beaucoup de questions.
REMARQUE: j'utilise Ubuntu 9.10 et je ne peux donc pas modifier sshd_config pour définir le umask du serveur SFTP. Installé SSH OpenSSH_5.1p1 Debian-6ubuntu2 <requis OpenSSH 5.4p1. Voici donc les questions.
1. AI-JE BESOIN DE REDÉMARRER POUR LES CHANGEMENTS PAM POUR PRENDRE EFFET?
Commençons par ça. Il y avait tellement de fichiers impliqués et je ne pouvais pas comprendre ce qui affectait et ce qui n'affectait pas les choses, également parce que je ne savais pas si je devais redémarrer tout le système pour que les modifications PAM prennent effet. Je l'ai fait après ne pas avoir vu les résultats attendus, mais est-ce vraiment nécessaire? Ou puis-je simplement me déconnecter du serveur et me reconnecter, et les nouvelles stratégies PAM devraient-elles être efficaces? Ou existe-t-il un programme 'PAM' à recharger?
2. Y A-T-IL UN SEUL FICHIER À MODIFIER QUI AFFECTE TOUS LES UTILISATEURS POUR TOUTES LES SESSIONS?
J'ai donc fini par changer BEAUCOUP de fichiers, en lisant BEAUCOUP de choses différentes. J'ai fini par définir l'umask dans les fichiers suivants:
~/.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
Je veux que ce changement s'applique à tous les utilisateurs, donc une sorte de changement à l'échelle du système serait préférable. Peut-il être réalisé?
3. APRÈS TOUT, CETTE CHOSE D'UMASK, ÇA MARCHE?
Donc, après avoir changé umask en 0002 à chaque endroit possible, je lance des tests.
------------ SCP -----------
TEST 1:
scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile 100% 4 0.0KB/s 00:00
Vérifions les autorisations:
user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)
MISE À JOUR: corrigé en définissant UNIQUEMENT umask dans pam.d / common-sessions (voir les commentaires)
--------- 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: // serveur / home /
Copiez et collez le nouveau fichier du client vers le serveur (777 sur le client)
TEST 3:
user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)
Créez un nouveau fichier via Nautilus. Vérifiez les autorisations de fichier dans le terminal:
TEST 4:
user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders 0 2011-02-05 18:06 newfile (600)
Je veux dire ... QUE s'est-il passé ici?! Nous devrions obtenir 644 à chaque fois. Au lieu de cela, j'obtiens 711, 777, 600, puis une fois 644. Et le 644 n'est atteint que lors de la création d'un nouveau fichier vierge via SSH, ce qui est le scénario le moins probable.
Je demande donc, umask / pam fonctionne-t-il après tout?
MISE À JOUR: correction du test 4 en définissant UNIQUEMENT umask dans pam.d / common-sessions (voir les commentaires)
4. QUE SIGNIFIE UMASK SSHFS?
Parfois, nous montons un serveur localement, en utilisant sshfs. Très utile. Mais encore une fois, nous avons des problèmes d'autorisations.
Voici comment nous montons:
sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt
REMARQUE: nous utilisons umask = 113 car apparemment, sshfs commence à partir de 777 au lieu de 666, donc avec 113 nous obtenons 664 qui est l'autorisation de fichier souhaitée.
Mais ce qui se passe maintenant, c'est que nous voyons tous les fichiers et répertoires comme s'ils étaient 664. Nous naviguons dans Nautilus vers / mnt et:
- Clic droit -> Nouveau fichier (nouveau fichier) --- TEST 5
- Clic droit -> Nouveau dossier (nouveau dossier) --- TEST 6
- Copiez et collez un fichier 777 de notre client local --- TEST 7
Vérifions donc sur la ligne de commande:
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)
Mais bon, vérifions ce même dossier côté serveur:
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)
Quoi?! Les autorisations de fichier REAL sont très différentes de celles que nous voyons dans Nautilus. Donc, ce umask sur sshfs crée-t-il simplement un «filtre» qui montre les autorisations de fichiers irréelles? Et j'ai essayé d'ouvrir un fichier d'un autre utilisateur mais du même groupe qui avait de vraies 600 autorisations mais 644 «fausses» autorisations, et je ne pouvais toujours pas lire ceci, alors à quoi bon ce filtre ??
5. UMASK EST TOUT SUR LES FICHIERS. MAIS QU'EN EST-IL DES RÉPERTOIRES?
D'après mes tests, je peux voir que le umask qui est appliqué influence également en quelque sorte les autorisations du répertoire. Cependant, je veux que mes fichiers soient 664 (002) et mes répertoires 771 (006). Est-il donc possible d'avoir un umask différent pour les répertoires?
6. PEUT-ÊTRE UMASK / PAM EST VRAIMENT FRAIS, MAIS UBUNTU EST JUSTE BUGGY?
D'une part, j'ai lu des sujets de personnes qui ont eu du succès avec PAM / UMASK et Ubuntu. D'un autre côté, j'ai trouvé de nombreux bugs plus anciens et plus récents concernant umask / PAM / fuse sur Ubuntu:
- 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
Donc je ne sais plus quoi croire. Dois-je abandonner? Would ACL résoudre tous mes problèmes? Ou ai-je encore des problèmes avec Ubuntu?
Un mot de prudence avec les sauvegardes utilisant tar. Les distributions Red Hat / Centos prennent en charge acls dans le programme tar mais Ubuntu ne prend pas en charge acls lors de la sauvegarde. Cela signifie que tous les acls seront perdus lorsque vous créez une sauvegarde.
Je suis très disposé à passer à Ubuntu 10.04 si cela résout également mes problèmes, mais je veux d'abord comprendre ce qui se passe.