Pavnay

 
  • Increase font size
  • Default font size
  • Decrease font size
FrançaisEnglish

[Système] Permettre à un utilisateur non root d'exécuter un programme

Imprimer
Système
Qui n'a jamais exécuter un programme en utilisateur non root pour se retrouver face au fameux Permission denied ?
Pour remédier à ça, il y a plusieurs méthodes : appartenir au bon groupe, ajouter les droits sudo à l'utilisateur.


L'appartenance au bon groupe :


Les droits sous Linux sont partagés entre 3 entités :
  • l'utilisateur
  • le groupe
  • les autres
L'installation de certains programmes entraîne la création d'utilisateurs et de groupes, par exemple postfix et kvm.
Par conséquent, pour qu'un utilisateur autre puisse utiliser ce programme, il suffit de l'ajouter au groupe.
Pour autoriser un utilisateur, il suffit de faire (par exemple pour kvm) :

sudo adduser $USER kvm


Les droits sudo :

sudo est un programme permettant à un utilisateur d'éxecuter un programme en ayant temporairement les droits root. Celà est particulièrement utile quand il est nécessaire d'agir sur les contraintes de sécurité du système.
Un exemple simple est le serveur httpd de la Fondation Apache. Ce serveur ouvre le port 80 en écoute mais comme pour des raisons de sécurité seul l'utilisateur root est habilité à ouvrir les ports inférieur à 1024, il n'est pas possible à un autre utilisateur de le faire  (gênant pour les développeurs par exemple).
La solution consiste à modifier la configuration du système afin d'autoriser de telle modification par un utilisateur autre que root. Le fichier à modifier est /etc/sudoers mais seul root peut le modifier mais seulement en utilisant la commande visudo ou sudoedit /etc/sudoers.

Exemple permettant aux utilisateurs du groupe dev à intéragir avec apache2 :
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset

# Host alias specification

# User alias specification
User_Alias DEV=febbweiss

# Cmnd alias specification
Cmnd_Alias APACHE=/usr/local/apache2/bin/apachectl

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%dev ALL=(ALL) NOPASSWD: APACHE

Quelques explications :
  • Cmnd_Alias est la liste des programmes (si plusieurs, séparés par une virgule) à associé à un alias (ici seulement apachectl)
  • %dev ALL=(ALL) NOPASSWD: APACHE indique que les membres du groupe dev peuvent utilisés les commandes décrites par l'alias APACHE. Pour un membre spécifique, supprimer le %.


Commentaires
Ajouter un nouveau
+/-
Ecrire un commentaire
Nom:
Email:
 
Titre:
 
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
 

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Actualités

Peinture sur figurine