#1 Le 21/03/2020, à 17:46
- LukePerp
Risque d'utiliser sudo plutot que pkexec ?
Bonjour,
J'utilise le script suivant pour formarter mes clés USB, en l'exécutant avec pkexec :
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY '/CheminDuScript/FormatUSBdevices.sh'
SI j'exécute le script sans pkexec ou sans sudo, le script ne pourra pas formater une clé USB. SI j'utilise sudo, ça fonctionne. Quels sont les risques d'utiliser sudo plutot que pkexec pour ce script ? Je demande cela car je voudrais ajouter le chemin de ce script dans sudoers, pour éviter de taper le mot de passe, alors qu'avec pkexec, je ne connais pas l'astuce pour éviter de taper le mot passe. Merci d'avance.
#!/bin/bash
# list usb devices, copyright lemsx1 from superuser:
REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
if echo $(readlink -f "$_device")|egrep -q "usb"; then
_disk=$(echo "$_device" | cut -f4 -d/)
_info=$(lsblk -rno NAME,SIZE,MOUNTPOINT /dev/"$_disk"1)
REMOVABLE_DRIVES="$_info!$REMOVABLE_DRIVES"
fi
done
_out=$(yad --center --title="Format" --form --field="Device to format":CB "$REMOVABLE_DRIVES" --field="Filesystem":CB 'FAT32!NTFS!EXT4' --field="Name to set":CBE )
_drive=$(echo "$_out" | cut -f1 -d' ')
_media=$(echo $_out | cut -f1 -d'|')
_filesystem=$(echo $_out | cut -f2 -d'|')
_name=$(echo $_out | cut -f3 -d'|')
if [ -z "$_media" -o "$_media" == "||" ]; then
echo "canceled"
exit 0
fi
yad --center --image "dialog-question" --title "Attention" --button=No:0 --button=Yes:1 --text "Are you sure to format this device?\n$_media"
if [ $? = 1 ]; then
umount /dev/"$_drive"
case $_filesystem in
"FAT32") _filesystem="mkdosfs -F32 -I -n";;
"NTFS") _filesystem="mkfs.ntfs -f -L";;
"EXT4") _filesystem="mkfs.ext4 -L";;
esac
$_filesystem "$_name" /dev/"$_drive" | zenity --progress --pulsate --title="Processing..." --auto-close --no-cancel
echo "formated"
else
echo "canceled"
fi
exit 0
Dernière modification par LukePerp (Le 21/03/2020, à 17:54)
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Utilisateur de Dapps sur Ethereum
Hors ligne
#2 Le 21/03/2020, à 19:19
- kamaris
Re : Risque d'utiliser sudo plutot que pkexec ?
Je dirais que ce n'est pas terrible d'exécuter yad ou zenity, qui sont des applications graphiques, en root.
En restant sur l'idée du sudo appliqué à tout le script, ce que tu peux faire, c'est forcer l'exécution en tant que simple utilisateur des commandes qui posent problème, par
sudo -u utilisateur commande
où « utilisateur » pourrait être récupéré dans SUDO_USER (à condition que la variable ne soit pas vide, ou qu'elle ne contienne pas « root » à la suite d'un malencontreux « sudo sudo » : à faire proprement).
Sinon, tu peux mettre sudo dans le script seulement pour les quelques commandes qui nécessitent les droits root (ici, seulement le formatage ?), et autoriser ces commandes dans /etc/sudoers.
Concernant l'exécution sans mot de passe avec pkexec, il faut créer un fichier dans /var/lib/polkit-1/localauthority/50-local.d, avec un contenu assez simple : voir https://doc.ubuntu-fr.org/policykit, section 3.2.
Hors ligne
#3 Le 22/03/2020, à 08:36
- serged
Re : Risque d'utiliser sudo plutot que pkexec ?
Tout ce que je remarque, c'est que :
pkexec gedit
me renvoie :
Error: Can't open display:
Alors que :
sudo gedit
fonctionne !
Donc je continue à utiliser sudo...
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#4 Le 22/03/2020, à 09:01
- Christophe C
Re : Risque d'utiliser sudo plutot que pkexec ?
Au moins utilise sudo -H
le pb des sudo sur des appli graphiques, c'est que si que tout ce qu'elle écrit pendant l'opération est root. Donc si elle écrit dans son profil, le profil sera verrouillé, et sans doute inutilisable (sauf en sudo). Il faudra un chown pour remettre les droits utilisateurs normaux. Pas fréquent, mais le risque existe.
pkexec, quand il marche, évite cela. Ou sous wayland gedit admin:///chemin/du/document
sudo -H protège aussi le compte utilisateur, donc est acceptable. Ensuite je ne connais pas assez pour juger d'éventuels risques résiduels avec cette méthode.
Voilà en tout cas ce que dit le man de sudo :
-H, --set-home
Request that the security policy set the HOME environment variable to the home directory
specified by the target user's password database entry.
Depending on the policy, this may be the default behavior.
Et avec un petite explication trouvée sur askUbuntu :
So the -H flag makes sudo assume root's home directory as HOME instead of the current user's home directory. Otherwise some files in the user's home directory would become owned by the root, which may lead to various problems.
Dernière modification par Christophe C (Le 22/03/2020, à 09:10)
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#5 Le 22/03/2020, à 09:08
- rogn...
Re : Risque d'utiliser sudo plutot que pkexec ?
Tout ce que je remarque, c'est que :
pkexec gedit
me renvoie :
Error: Can't open display:
Alors que :
sudo gedit
fonctionne !
Donc je continue à utiliser sudo...
Pour gedit, as-tu fait un polkit ?
#6 Le 22/03/2020, à 09:38
- maxire
Re : Risque d'utiliser sudo plutot que pkexec ?
Salut,
Attention pkexec est une commande utilisée pour lancer en mode super utilisateur ou autre utilisateur des applications non graphiques.
pkexec est volontairement limité aux applications non graphiques donc si vous voulez lancer gedit en mode super utilisateur utilisez :
gedit admin:///chemin vers le ficher à éditer
Valable aussi bien sous Wayland que sous Xorg.
Cependant il est possible d'utiliser pkexec en mode grapique via une règle de contournement à définir dans /etc/polkit-1/rules.d mais c'est plutôt déconseillé.
Je vous laisse potasser la doc polkit pour trouver le truc.
Pour répondre à la question initiale de LukePerp, utiliser zenity en mode super utilisateur n'est pas une bonne idée.
Un contournement est de rattacher l'utilisateur au groupe disk, mais attention vous passez en open bar dans tout mode de modification des disques.
Dernière modification par maxire (Le 22/03/2020, à 09:42)
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne