Plus de questions sur les autorisations Linux

2

J'ai lu d'innombrables articles sur le sujet et parcouru toutes les questions et réponses que je pouvais trouver sans aucune chance. Je deviens lentement en colère alors je me tourne vers vous car je sais que la réponse à ma question est fort probablement simple.

Sur mon serveur Web, j'ai deux utilisateurs et deux groupes. Les utilisateurs doivent lire et écrire dans la même zone. Pas un seul dossier, mais un réseau complexe de dossiers.

>> groups user_1
      popuser psaserv psacln
>> groups user_2
      psacln popuser psaserv

Ce ne sont pas de vrais utilisateurs, ils n'ont donc pas de fichiers .bashrc. Lorsque chacun des utilisateurs crée un répertoire, les autorisations ressemblent exactement à ce à quoi je m'attendais:

drwxr-xr-x 2 user_1 popuser 4096 Apr 30 20:47 folder_1
drwxr-xr-x 2 user_2 psacln  4096 Apr 30 20:49 folder_2

Mais une fois que l'un des deux utilisateurs crée le dossier, l'autre ne peut plus y écrire de fichier.

Si je chmod 777, alors bien sûr ils peuvent tous les deux écrire.

chat / etc / groupe

popuser:x:31:user_1,psaserv,user_2
psacln:x:505:user_2,user_1,psaserv

Aussi inhabituel est que lorsqu'un fichier est écrit dans le groupe, les autorisations semblent très restrictives:

-rw-r--r-- 1 user_2 psacln 0 Apr 30 21:15 some_file.ext

Bien que peut-être que prévu.

Quoi qu'il en soit, pour résumer et clarifier ma question en deux parties:

1) How can I make both users access files and folders from each other, given their group differences?
2) How can I set the default permissions on new files so they inherit the folder permissions?

(2) J'ai essayé d'ajouter umask 022 dans mon fichier ~ / .bashrc pour mon utilisateur root, mais cela n'a rien fait. Je ne sais pas où mettre cela pour ces "utilisateurs" qui n'ont pas de répertoires personnels.

Désolé, je sais que des questions comme celle-ci peuvent sembler redondantes pour vos experts utilisateurs de Linux. La recherche est difficile quand je ne sais même pas ce que je cherche.

Merci beaucoup, comme toujours.

[Je suis sur centos]

Ryan Martin
la source
1
Définissez le bit SGID sur un répertoire, ce qui forcera tous les nouveaux sous-répertoires créés à prendre le même GID que le conteneur.
Merci pour la suggestion, Marc. Je viens de passer environ une heure à essayer de comprendre cela, mais je me sens toujours tellement perdu. Sur mon répertoire principal de la structure à laquelle les deux utilisateurs / groupes doivent écrire, j’ai fait ceci: chmod -R g + rxws, u + rxws, o + rxs root_dir Et cela m’a donné ces autorisations sur tout ce qui se trouve à l’intérieur: drwxrwsrwx . Immédiatement après cela, tout fonctionne, jusqu'à ce que l'un des utilisateurs crée un nouveau répertoire. Ensuite, les nouveaux répertoires ont les autorisations suivantes: drwx - S --- , ce qui n’est pas bon. L'autre groupe ne peut plus écrire dans ce répertoire. Qu'est-ce que je fais mal?
Ryan Martin

Réponses:

1

1) Comment puis-je faire en sorte que les deux utilisateurs accèdent aux fichiers et aux dossiers l'un de l'autre, compte tenu de leurs différences de groupe?

Une solution consiste à attribuer aux annuaires un groupe commun aux utilisateurs.

  chgrp psaserv folder1 folder2
  chmod g+w  folder1 folder2

2) Comment puis-je définir les autorisations par défaut sur les nouveaux fichiers afin qu'ils héritent des autorisations de dossier?

Utilisez le bit "set group ID".

  chmod g+s folder1 folder2

Vous ne pouvez pas hériter des autorisations rwx, définissez umask.


J'ai essayé d'ajouter umask 022 dans mon fichier ~ / .bashrc pour mon utilisateur root, mais cela ne faisait rien. Je ne sais pas où mettre cela pour ces "utilisateurs" qui n'ont pas de répertoires personnels.

Vous avez prévu qu'un processus utilise ces identifiants. Vous devez prendre des dispositions pour que ce processus attribue à umask la valeur 022. La façon dont vous procédez dépend du processus que vous avez organisé à cet effet. Peut-être que vous utilisez sudo, peut-être que c'est un serveur Web, peut-être que c'est autre chose. Si vous ne l'expliquez pas, il n'est pas vraiment possible de fournir des conseils spécifiques et détaillés.

RedGrittyBrick
la source
Merci pour la réponse. Très appréciée. Mon idée initiale était d'exécuter votre première solution après que chaque utilisateur ait créé un répertoire ou un fichier, mais pour une raison que je ne comprends pas encore, chmod-ing et chown-ing ne collent pas lorsqu'ils sont exécutés par ces utilisateurs. En ce qui concerne votre deuxième solution, je pense que c’est ce que je dois encore comprendre. Je n'ai pas configuré mon serveur, ni l'un de ces utilisateurs. L’un est un serveur de messagerie et l’autre, mon serveur http général. Je ne sais donc pas exactement comment ils fonctionnent. Cela me rend fou.
Ryan Martin
1

Si vous souhaitez que les nouveaux fichiers créés par vos utilisateurs soient par défaut en écriture pour les membres du groupe, vous devez modifier le paramètre umask en un autre type que 022. Si les implications en matière de sécurité vous conviennent, définissez le paramètre umask sur 002 (pour des exemples où définissez umask, voir https://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask ).

Umask a expliqué

Les autorisations de fichier par défaut sur les fichiers et les répertoires nouvellement créés constituent une autorisation standard ( rw-rw-rwpour les fichiers, rwxrwxrwxpour les répertoires) soustrayant le paramètre umask actuel. Un paramètre umask de 000 conserve les autorisations standard, tandis qu'un paramètre de 777 supprime toutes les autorisations.

Les trois chiffres de la clé umask représentent les autorisations utilisateur, groupe et personne, respectivement. Le nombre représente trois chiffres binaires, qu'il soit nécessaire de supprimer une autorisation spécifique ou non.

d - rwx
-------
0 - 000 (rwx)
1 - 001 (rw-)
2 - 010 (r-x)
3 - 011 (r--)
4 - 100 (-wx)
5 - 101 (-w-)
6 - 110 (--x)
7 - 111 (---)

Pour calculer les autorisations qu'un nouveau fichier aura attribuées à un certain umask, commencez avec l'autorisation par défaut et soustrayez l'umask.

orig    rwx rwx rwx (777, default directory permission)
umask   000 010 010 (022)
result  rwx r-x r-x (755)

orig   rw- rw- rw- (666, default file permission)
umask  000 010 010 (022)
result rw- r-- r-- (644)

orig   rwx rwx rwx (777, default directory permission)
umask  000 000 010 (002)
result rwx rwx r-x (775)

orig   rw- rw- rw- (666, default file permission)
umask  000 000 010 (002)
result rw- rw- r-- (664)
erikxiv
la source
Merci pour votre réponse. Comme je l'ai mentionné plus haut, je ne sais pas comment modifier l'umask pour ces utilisateurs, car ils ne disposent pas de fichiers .bash que je peux personnaliser. J'ai cherché d'autres moyens de le configurer, mais je n'ai pas trouvé la solution appropriée.
Ryan Martin
Comment les processus qui lisent / écrivent des fichiers avec ces utilisateurs sont-ils démarrés? Cet appel pourrait-il être précédé d'une déclaration umask?
erikxiv
Je suppose que c'est la partie avec laquelle je me bats. Je n'ai pas créé ces utilisateurs, ils ont été créés lors de la création de mon serveur. Un utilisateur sert les documents http et l'autre est le serveur de messagerie qui traite le courrier entrant et sortant. Je ne suis donc pas tout à fait sûr de savoir quels fichiers sont exécutés lorsque chaque "utilisateur" traite l'un de ces cas. J'ai essayé de régler l'umask sur 002 partout où je pouvais le trouver, mais rien ne semble fonctionner. Les nouveaux dossiers et fichiers sont toujours créés avec de mauvaises autorisations.
Ryan Martin
Eh bien, je suppose que vous pouvez essayer de rechercher les scripts utilisés pour démarrer les serveurs Web et de messagerie et y ajouter umask, ou éventuellement essayer de définir umask pour root (qui peut être l'utilisateur utilisé pour démarrer les services au démarrage du serveur). ..
erikxiv