GNU/Linux >> Tutoriels Linux >  >> Linux

J'ai ajouté un utilisateur à un groupe, mais les autorisations de groupe sur les fichiers n'ont toujours aucun effet ?

J'ai changé les permissions d'un fichier (chmod g+w testfile ) et en exécutant ls -l testfile donne :

-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile

J'ai ensuite ajouté un utilisateur à ce groupe ("/etc/group ” a user1:x:1000:user2 ligne), mais je ne parviens pas à modifier ce fichier en tant qu'utilisateur2. Pourquoi en est-il ainsi ?

Réponse acceptée :

user2 doit se déconnecter et se reconnecter. Les autorisations de groupe fonctionnent comme suit :

  • Lorsque vous vous connectez, vos processus obtiennent une appartenance à un groupe dans votre groupe principal mentionné dans /etc/passwd , ainsi que tous les groupes où votre utilisateur est mentionné dans /etc/group . (Plus précisément, le pw_gid champ dans getpw(your_uid) , ainsi que tous les groupes dont votre utilisateur est un membre explicite. Au-delà de /etc/passwd et /etc/group , les informations peuvent provenir d'autres types de bases de données d'utilisateurs telles que NIS ou LDAP.) Le groupe principal devient l'ID de groupe effectif du processus et les autres groupes deviennent ses ID de groupe supplémentaires.
  • Lorsqu'un processus effectue une opération nécessitant l'appartenance à un certain groupe, comme l'accès à un fichier, ce groupe doit être soit l'ID de groupe effectif, soit l'un des ID de groupe supplémentaires du processus.

Comme vous pouvez le voir, votre modification de l'appartenance au groupe de l'utilisateur ne prend effet que lorsque l'utilisateur se connecte. Pour les processus en cours d'exécution, il est trop tard. L'utilisateur doit donc se déconnecter et se reconnecter. Si cela pose trop de problèmes, l'utilisateur peut se connecter à une session distincte (par exemple, sur une autre console ou avec ssh localhost ).

Sous le capot, un processus ne peut que perdre privilèges (ID utilisateur, ID de groupe, capacités). Le noyau lance l'init processus (le premier processus après le démarrage) s'exécutant en tant que root, et chaque processus descend finalement de ce processus¹. Le login processus (ou sshd , ou la partie de votre gestionnaire de bureau qui vous connecte) s'exécute toujours en tant que root. Une partie de son travail consiste à supprimer les privilèges root et à basculer vers l'utilisateur et les groupes appropriés.

Il y a une seule exception :l'exécution d'un programme setuid ou setgid. Ce programme reçoit des autorisations supplémentaires :il peut choisir d'agir sous divers sous-ensembles d'appartenances au processus parent, plus l'appartenance supplémentaire à l'utilisateur ou au groupe qui possède l'exécutable setxid. En particulier, un programme setuid root a des permissions root, donc peut tout faire²; c'est ainsi que des programmes comme su et sudo peuvent faire leur travail.

Connexe :Comment désactiver la fonctionnalité "Coller avec le bouton central de la souris" dans tous les programmes ?

¹ Il y a parfois des processus qui ne sont pas dérivés d'init (initrd, udev) mais le principe est le même :démarrer en tant que root et perdre les privilèges avec le temps.
² Interdire les cadres de sécurité à plusieurs niveaux tels que SELinux.


Linux
  1. Comment ajouter un utilisateur à un groupe sous Linux

  2. Priorité de l'utilisateur et du propriétaire du groupe dans les autorisations de fichier ?

  3. Donner des autorisations de groupe aux fichiers d'autres utilisateurs ?

  4. Linux - Un seul utilisateur peut-il avoir plusieurs fichiers Crontab ?

  5. Comment gérer les autorisations/propriétés des fichiers et des répertoires sous Linux

Comment ajouter un utilisateur à un groupe sous Linux

suppression de fichiers mais l'espace disque est toujours plein

Sous quel utilisateur apache et PHP doivent-ils s'exécuter ? Quelles autorisations les fichiers /var/www doivent-ils avoir ?

Comment accorder un accès utilisateur non root aux fichiers de l'appareil

Comment récupérer le stockage de fichiers supprimés mais toujours utilisés sous Linux ?

Comment configurer les autorisations Linux pour le dossier WWW ?