Je ne souhaite pas que les utilisateurs puissent ouvrir certaines applications sans avoir les privilèges root, mais je ne souhaite pas leur attribuer les privilèges root. Alors, comment puis-je faire en sorte que seul le root puisse exécuter certaines applications, mais que les applications ne soient pas réellement exécutées en tant que root (je ne veux pas qu'elles le soient pour des raisons de sécurité)? J'utilise Ubuntu GNOME 15.04, avec GNOME Shell et GNOME 3.16.
Essayez d’utiliser setuid
à partir du paquet super
. Faites Sudo apt-get install super
, puis créez un script Shell qui ne peut être exécuté qu’en tant que root. Demandez à ce script Shell d'exécuter une seule commande:
#!/bin/sh
setuid $ORIG_USER applicationcommand
exit 0
Ensuite, définissez un alias pour chacun des utilisateurs afin que applicationcommand
pointe vers le script Shell que vous avez créé en ajoutant à chacun de leurs fichiers .bashrc
:
alias applicationcommand="sh /path/to/Shell/script"
Vous pouvez également modifier le fichier .desktop
de l'application que vous souhaitez exécuter, en plus de créer une variable alias
, en supposant que votre application comporte un fichier .desktop
(s'il ne s'agit pas d'une application s’exécute dans l’interface graphique, mais plutôt dans la CLI, il est probable qu’il ne contienne pas de fichier .desktop
), de sorte que la ligne Exec=
est suivie de sh /path/to/Shell/script
, ou du nom de l’alias si vous le souhaitez. décidé de créer cela. Vous trouverez les fichiers .desktop
dans /usr/share/applications
et ~/.local/share/applications
.
Cette réponse est complémentaire de celle de Heather (qui fonctionnera).
Tout d’abord , tenez compte du fait qu’en Unix (et Linux), s’il est possible de prendre des privilèges root, on peut tout faire. Dans le cas de la réponse de Heather, rien n'empêchera votre utilisateur de simplement Sudo /usr/bin/applicationcommand
(avec un peu de recherche du chemin réel ou autre). Mais je suppose que ça vous va.
Dans ce cas, pourquoi ne pas simplement (1) :
Sudo chgrp Sudo /usr/bin/applicationcommand
Sudo chmod 750 /usr/bin/applicationcommand
? Si les utilisateurs peuvent utiliser Sudo
, cela signifie (2) ils sont dans le groupe Sudo
; Les commandes ci-dessus rendent la applicationcommand
lisible/exécutable uniquement par les membres du groupe Sudo
. Cependant, quand ils l'exécutent, ils l'exécutent en tant qu'utilisateur réel, comme pour toute autre commande.
Cependant, la solution Unix "classique" est:
privileged
.Sudo chgrp privileged /usr/bin/myapp
puis Sudo chmod 750 /usr/bin/myapp
.privileged
et maintenant, l'utilisateur utilisera myapp
en tant qu'utilisateur, sans avoir besoin des privilèges Sudo
.
Notez que si vous souhaitez que l'application s'exécute en tant qu'utilisateur différent, vous pouvez utiliser le mécanisme set-uid combiné avec les techniques ci-dessus.
Notes de bas de page:
(1) : Notez que vous ne pouvez pas le faire si l'application possède un indicateur set-gid (cela se produit avec certains expéditeurs, par exemple). Vérifiez-le avant de changer le groupe du binaire.
(2) : dans la plupart des configurations. Sudo
peut être ajusté (voir man sudoers
) plusieurs fois, de sorte que l'efficacité de ce simple piratage varie en fonction de votre personnalisation.