Les autorisations de groupe Linux ne sont pas appliquées correctement.

18

J'utilise le serveur Ubuntu 10.04 et j'ai des expériences très contre-intuitives avec les utilisateurs / groupes. Par exemple:

sudo touch test_file                    # create empty file

sudo groupadd test                      # create 'test' group

sudo chown root:test test_file          # change group of file to 'test'

sudo chmod g+rwx test_file              # give write permissions to group

sudo usermod -a -G test {my-user}       # add my user to 'test' group

touch test_file                         # touch the file as my current user

La dernière ligne produit une erreur d'autorisations.

J'ai veillé à ce que mon utilisateur fasse partie du groupe «test» ( groups {my-user}confirme cela). Le groupe de test_file est également définitivement défini sur «test» et les autorisations de groupe sont définies.

Pourquoi mon utilisateur ne peut-il pas écrire dans le fichier de test de fichier?

Gordon
la source

Réponses:

29

Lors de l'ajout d'un utilisateur à un nouveau groupe, cela ne sera appliqué dans aucun processus en cours d'exécution, seulement les nouveaux. Vous devez vous déconnecter puis vous reconnecter.

Daenyth
la source
4
ou pirater su - usernamevotre console en cours d'exécution. vous n'avez pas besoin de vous déconnecter pour vous connecter de cette façon :)
matthias krull
5

Les méthodes de déconnexion et de redémarrage du serveur n'ont pas fonctionné pour moi.

Cette méthode fonctionne cependant pour moi: (référence à cette réponse )

chmod g+rwxs <parent folder>
somme de contrôle
la source
1
Que fait la +spièce? Merci.
tommy.carstensen
1
Il définit le bit setuid. Cela permet à un fichier d'être exécuté en tant que propriétaire du fichier. Supposons que vous ayez un fichier que vous souhaitez exécuter en tant que root, quelle que soit la personne qui exécute le fichier, vous devez définir le bit setuid pour ce fichier.
Julius
La clé était x: on dirait que les droits d'exécution sont nécessaires pour touchfonctionner.
asac
0

Vous pouvez utiliser la newgrpcommande pour modifier l'ID de groupe actuel de l'utilisateur. De man newgrp:

La commande newgrp est utilisée pour modifier l'ID de groupe actuel lors d'une session de connexion. Si l' -indicateur facultatif est donné, l'environnement de l'utilisateur sera réinitialisé comme si l'utilisateur s'était connecté, sinon l'environnement actuel, y compris le répertoire de travail actuel, reste inchangé.

En pause jusqu'à nouvel ordre.
la source
1
Cela a également pour effet de remplacer votre groupe actuel. Ce n'est pas toujours une bonne idée.
Daenyth
Je voterais contre si je pouvais. L'écrasement des groupes pourrait être très frustrant à l'avenir ... esp. avec -Roption!
Edward
0

Redémarrez l'ordinateur pour vous assurer qu'aucun processus bloqué n'empêche votre utilisateur et vos groupes d'être correctement appliqués lors de la déconnexion et de la connexion.

Ces étapes doivent donner à votre utilisateur du groupe testl'autorisation d'écriture surtest_file

sudo touch test_file 
sudo groupadd test
sudo chown root:test test_file
sudo chmod g+rwx test_file
sudo usermod -a -G test {my-user}

Redémarrez l'ordinateur ou déconnectez le système d'exploitation de votre utilisateur. Un redémarrage du terminal ne suffit pas.

touch test_file

L'utilisateur peut écrire dans le fichier car il fait partie du groupe «test» et le groupe a l'autorisation rwx.

Eric Leschinski
la source
3
Il n'est pas nécessaire de redémarrer l'ordinateur.
Kevin Panko