12. Exécuter des commandes sous un autre compte

12.1. Applications

1. Configurer le fichier sudoers de façon à ce que vous puissiez passer des commandes root avec la commande sudo.


# Test préliminaire de sudo
$ more /etc/sudoers
/etc/sudoers: Permission non accordée

# Modification du fichier sudoers via la commande visudo
$ visudo
$ sudo more /etc/sudoers
# /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

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL

cvanvinc	ALL=NOPASSWD:ALL

# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
  

2. Activation de la journalisation des évènements


$ visudo
$ sudo cat /etc/sudoers

# /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

# Activation de la journalisation et des insultes
Defaults	log_year, logfile=/var/log/sudo.log, insults

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL
cvanvinc	ALL=NOPASSWD:ALL

# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
cvanvinc@pinson:~$ sudo cat /etc/sudoers
# /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

# Activation de la journalisation
Defaults	log_year, logfile=/var/log/sudo.log, insults

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL
cvanvinc	ALL=NOPASSWD:ALL

# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

# Vérification des logs
$ sudo tail -f /var/log/sudo.log
janv. 31 09:15:30 2012 : cvanvinc : TTY=pts/0 ; PWD=/etudiants/cvanvinc ;
    USER=root ; COMMAND=/bin/more /etc/sudoers
janv. 31 09:16:30 2012 : cvanvinc : 3 incorrect password attempts ; TTY=pts/0 ;
    PWD=/etudiants/cvanvinc ; USER=root ; COMMAND=/bin/more /etc/sudoers
janv. 31 09:16:46 2012 : cvanvinc : TTY=pts/0 ; PWD=/etudiants/cvanvinc ;
    USER=root ; COMMAND=/bin/more /etc/sudoers
janv. 31 09:17:49 2012 : cvanvinc : TTY=pts/0 ; PWD=/etudiants/cvanvinc ;
    USER=root ; COMMAND=/bin/cat /etc/sudoers
janv. 31 09:19:05 2012 : cvanvinc : TTY=pts/0 ; PWD=/etudiants/cvanvinc ;
    USER=root ; COMMAND=/usr/bin/tail /var/log/sudo.log
  

3. Trouver ce que font les commandes ci-dessous (notamment le rôle des options -u et -c).


# Effectue une commande (ici ls) non pas en tant que root mais en tant que yazza.
$sudo -u yazza ls ~yazza
# Modifie le fichier index.html via l'éditeur vi en tant que www.
$sudo -u www vi ~www/htdocs/index.html
# Effectue un redémarrage dans 15min et envoit un message d'avertissement aux utilisateurs.
$sudo shutdown -r +15 "quick reboot"
# L'option "-c" de "sh" permet de passer une commande directement en tant de chaîne de caractères.
# La commande évalue donc l'espace disque utilisée par le contenu du répertoire /home, trie les résultats par ordre décroissant et les stocke dans le fichier USAGE.
# L'option "-s" de la commande "du" permet de ne pas inclure la taille des sous-répertoires.
$sudo sh -c "cd /home ; du -s * |sort -rn > USAGE"
# Exemple
$cd ~ ; du -s * |sort -rn
1164060	linux-3.2.2
76376	linux-3.2.2.tar.bz2
38300	workspace
20692	Téléchargements
4312	Images
1124	Documents
400	II-adaptation évolutive de l'encéphale selon le milieu.pdf
24	exos
20	cerealguy.svg
8	Vidéos
4	Public
4	Musique
4	Modèles
4	Bureau