Forum Linux.général probleme avec setcap

Posté par  . Licence CC By‑SA.
Étiquettes :
0
30
jan.
2023

Bonjour,

j ai un script qui doit pouvoir monter (mount) un disque mais sans etre root.
J'ai donc lancé la commande : sudo setcap 'CAP_SYS_ADMIN=eip' myscript.sh

et quand je fais ./myscript.sh, le terminal me retourne : seul le superutilisateur peut utiliser mount.

pourtant dans man capabilities il me dit bien que je peux faire mount avec setcap 'CAP_SYS_ADMIN=eip'

Avez vous une idée du probleme ?
Merci d avance

  • # /etc/fstab

    Posté par  . Évalué à 1.

    Hello.

    Faut aussi l'option idoine pour ton point de montage (user)

    ++
    Gi)

  • # impossible

    Posté par  (site web personnel, Mastodon) . Évalué à 5. Dernière modification le 30 janvier 2023 à 23:13.

    Tu ne peux pas faire un setcap sur un script, uniquement sur un binaire.

    Si tu veux que ton script puisse exécuter quelque chose en tant que root, le plus simple c’est le lister ce que peut le faire le script dans une commande sudo. Par exemple dans /etc/sudoers.d/myscript:

    Cmnd_Alias MY_MOUNT = /usr/bin/mount /dev/truc_préci /emplacement
    %ton_group   ALL= NOPASSWD: MY_MOUNT
    # ou bien pour un seul utilisateur
    ton_user     ALL= NOPASSWD: MY_MOUNT
    

    Et ensuite dans ton script:

    sudo /usr/bin/mount /dev/truc_préci /emplacement
    

    Tu peux aussi mettre ce que tu veux faire en tant que root dans un autre script, lister la commande à lancer en tant que root pour le sous-script dans une conf sudoers et appeler ce sous script avec sudo dans le script principal.

    • [^] # Re: impossible

      Posté par  . Évalué à 1.

      merci beaucoup pour ta réponse, je vais faire ca

  • # udisksctl

    Posté par  . Évalué à 4. Dernière modification le 31 janvier 2023 à 10:22.

    Bonjour

    Sans avoir besoin d'accéder aux privilèges du compte root
    ni de créer le point de montage ni avoir à le supprimer après démontage

    Si le système de fichiers à monter est dans la partition accessible par le fichiers de périphérique /dev/sdb1 tu pourrais faire :

    udisksctl mount -b /dev/sdb1
    

    et le point de montage sera automatiquement créé dans le répertoire /media/$USER/ en utilisant le nom de label de ce système de fichiers, ou bien, s'il n'a pas de label, en l'UUID de ce système de fichiers pour le nommer.

    Par exemple :

    mic@deb116:~$ udisksctl mount -b /dev/sdb1
    Mounted /dev/sdb1 at /media/mic/d-live 11.6.0 xf amd64
    mic@deb116:~$ 
    mic@deb116:~$ ls -l '/media/mic/d-live 11.6.0 xf amd64'
    total 14
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:54 boot
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:54 d-i
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:55 dists
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:54 EFI
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:55 isolinux
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:53 live
    drwxr-xr-x 1 mic mic 2048 17 déc.  12:55 pool
    mic@deb116:~$ 
    

    Le point de montage créé sera automatiquement supprimé quand le système de fichiers sera démonté :

    mic@deb116:~$ udisksctl unmount -b /dev/sdb1
    Unmounted /dev/sdb1.
    mic@deb116:~$ 
    mic@deb116:~$ ls -l '/media/mic/d-live 11.6.0 xf amd64'
    ls: impossible d'accéder à '/media/mic/d-live 11.6.0 xf amd64': Aucun fichier ou dossier de ce type
    mic@deb116:~$ 
    

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.