relecture
This commit is contained in:
parent
27fc360fdf
commit
710a34b502
123
HowtoSudo.md
123
HowtoSudo.md
|
@ -1,27 +1,126 @@
|
||||||
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
|
---
|
||||||
|
title: Howto sudo
|
||||||
|
categories: système
|
||||||
|
...
|
||||||
|
|
||||||
# Howto Sudo
|
* Documentation : <https://www.sudo.ws/readme.html>
|
||||||
|
|
||||||
|
[sudo](https://www.sudo.ws/) est un programme permettant d'accorder des droits à certains utilisateurs pour lancer des commandes en tant que _root_ ou un utilisateur différent.
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Sous Debian :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# apt install sudo
|
||||||
|
|
||||||
|
$ sudo -V
|
||||||
|
Sudo version 1.8.10p3
|
||||||
|
Sudoers policy plugin version 1.8.10p3
|
||||||
|
Sudoers file grammar version 43
|
||||||
|
Sudoers I/O plugin version 1.8.10p3
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Sous OpenBSD :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# pkg_add sudo-1.8.17.1
|
||||||
|
|
||||||
|
$ sudo -V
|
||||||
|
Sudo version 1.8.17p1
|
||||||
|
Sudoers policy plugin version 1.8.17p1
|
||||||
|
Sudoers file grammar version 45
|
||||||
|
Sudoers I/O plugin version 1.8.17p1
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
La configuration de sudo se passe dans le fichier _/etc/sudoers_ qu'il est conseillé d'éditer avec la commande `visudo`.
|
<https://manpages.debian.org/jessie/sudo/sudoers.5.en.html>
|
||||||
|
|
||||||
### Exemples d'autorisations particulières
|
La configuration de _sudo_ se passe dans le fichier `/etc/sudoers`
|
||||||
|
|
||||||
Autoriser l'édition d'un fichier de manière sécurisée et autoriser l'accès à un script d'init :
|
Voici la configuration par défaut :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
jdoe ALL = (ALL) sudoedit /path/file
|
Defaults env_reset
|
||||||
alice ALL = (root) /etc/init.d/apache2
|
Defaults mail_badpass
|
||||||
|
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
root ALL=(ALL:ALL) ALL
|
||||||
|
%sudo ALL=(ALL:ALL) ALL
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
`sudoedit` utilise par défaut l'éditeur par défaut pour autoriser *uniquement* l'édition du fichier en question. Tout autres actions (exécution d'un shell à l'intérieur de celui-ci, ouverture d'autres fichiers…) se feront avec les droits de l'utilisateur ayant exécuté sudo et non en tant que root.
|
On peut ainsi ajouter une autorisation complète à utilisateur en l'ajoutant au groupe _sudo_ :
|
||||||
|
|
||||||
### Lister les autorisations
|
~~~
|
||||||
|
# adduser foo sudo
|
||||||
|
~~~
|
||||||
|
|
||||||
Pour afficher les actions autorisées pour l'utilisateur courant par sudo, utiliser l'option "-l".
|
Pour ajouter des autorisations spécifiques, on conseille d'utiliser la commande `visudo` qui édite `/etc/sudoers` et vérifie la syntaxe des autorisations afin d'éviter une erreur :
|
||||||
|
|
||||||
## Passer en root
|
~~~
|
||||||
|
# visudo
|
||||||
|
~~~
|
||||||
|
|
||||||
On recommande sudo -i, plutôt que sudo su.
|
Une autorisation a la forme suivante :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
<user> <serveur> = (<runuser>:<rungroup>) <commande>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
* `<user>` : utilisateur(s)/groupe(s) concernés par l'autorisation
|
||||||
|
* `<serveur>` : limite l'application de l'autorisation en fonction du hostname ou adresses IP locales (souvent ALL)
|
||||||
|
* `(<runuser>:<rungroup>)` : paramètre **facultatif** pour autoriser à une lancer une commande avec un utilisateur (`sudo -u`) et/ou un groupe (`sudo -g`)
|
||||||
|
* `<commande>` : commande(s) autorisée(s), éventuellement précédées par `NOPASSWD:` si l'on veut pas demander à l'utilisateur d'entrer son mot de passe
|
||||||
|
|
||||||
|
Voici des exemples d'autorisations :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
jdoe ALL = ALL
|
||||||
|
jdoe ALL = NOPASSWD: ALL
|
||||||
|
jdoe ALL = /usr/sbin/tcpdump
|
||||||
|
jdoe ALL = (foo) /bin/kill
|
||||||
|
~~~
|
||||||
|
|
||||||
|
On peut également utiliser des alias :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
Cmnd_Alias MAINT = /usr/share/scripts/evomaintenance.sh, /usr/share/scripts/listupgrade.sh, /usr/bin/apt, /bin/mount
|
||||||
|
User_Alias ADMINS = jdoe, foo
|
||||||
|
ADMINS ALL = NOPASSWD: MAINT
|
||||||
|
~~~
|
||||||
|
|
||||||
|
### sudoedit
|
||||||
|
|
||||||
|
Si l'on veut autoriser l'édition d'un fichier de manière sécurisée, il ne faut pas autoriser les éditeurs comme _vi_, _less_… car ils permettent l'exécution d'autres actions, ce qui peut revenir à donner une autorisation complète. Il faut plutôt utiliser la commande spéciale `sudoedit` qui permet uniquement l'édition du fichier indiquée : toutes autres actions ((exécution d'un shell, ouverture d'autres fichiers…) se feront avec les droits de l'utilisateur ayant exécuté sudo et non en tant que _root_.
|
||||||
|
|
||||||
|
~~~
|
||||||
|
jdoe ALL = (ALL) sudoedit /etc/hosts
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
## Utilisation
|
||||||
|
|
||||||
|
<https://manpages.debian.org/jessie/sudo/sudo.8.en.html>
|
||||||
|
|
||||||
|
On peut afficher les actions autorisées avec l'option `-l` :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ sudo -l
|
||||||
|
|
||||||
|
Matching Defaults entries for foo on serveur:
|
||||||
|
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, umask=0077
|
||||||
|
User foo may run the following commands on serveur:
|
||||||
|
(ALL : ALL) ALL
|
||||||
|
(root) NOPASSWD: /usr/share/scripts/evomaintenance.sh, /usr/share/scripts/listupgrade.sh, /usr/bin/apt, /bin/mount
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
Pour passer en root, on recommande `sudo -i` plutôt que `sudo su` .
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ sudo -i
|
||||||
|
[sudo] password for foo:
|
||||||
|
#
|
||||||
|
~~~
|
||||||
|
|
Loading…
Reference in New Issue