IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

sudo chown : interdit. D'accord mais ?


Sujet :

Linux

  1. #1
    Membre habitué

    Inscrit en
    Octobre 2003
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 185
    Points : 137
    Points
    137
    Par défaut sudo chown : interdit. D'accord mais ?
    Bonjour.

    J'ai un distribution debian 12.7.
    Je monte un disque externe type exfat dans /media/moi via un script que j'exécute en tant que "moi".
    Bien sûr, à un moment je dois fournir le password de root.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #/bin/bash
    echo -$1-
    if [ -z $1 ]
    then 
    	lsblk
    	read -p 'quel device ? ' D
    	DEV=/dev/sd$D
    else
    	DEV=/dev/sd$1
    fi
    #echo DEV=$DEV
     
    # le devic existe-t-il ?
    if [ -b $DEV ]
    then
    	# le device est-il monté ?
    	NOM_REP=$(findmnt -l |grep $DEV| cut -f 1 -d ' ')
    	if [ ! -z $NOM_REP ]
    	then
    		# oui, on le démonte"
    		sudo umount $DEV
    		if [ $? = 0 ]
    		then 
    			sudo rmdir $NOM_REP
    			if [ $? = 0 ]
    			then
    				echo $DEV démonté de $NOM_REP
    			fi
    		fi
     
    	else
    		# non, on le monte
    		NOM_REP=$(sudo blkid -o udev $DEV | grep ID_FS_LABEL= | cut -d = -f 2)
    		#echo NOM_REP=-$NOM_REP-
    		if [ -z $NOM_REP ]
    		then
    			NOM_REP=$(sudo blkid -o udev $DEV | grep ID_FS_PARTLABEL= | cut -d = -f 2)
    			#echo NOM_REP=-$NOM_REP-
    			if [ -z $NOM_REP ]
    			then
      			NOM_REP=$(sudo blkid -o udev $DEV | grep ID_FS_UUID= | cut -d = -f 2)
    				#echo NOM_REP=$NOM_REP
    			fi
    		fi
     
    		PM=/media/$USER/$NOM_REP
    		sudo mkdir $PM 2>/dev/null
    		sudo chown $USER:$USER $PM
    		sudo mount $DEV $PM -o rw,owner
    		echo $DEV monté sur $PM
    	fi
    fi
    lsblk
    J'accède mon disque externe sans problème.
    Par contre, impossible d'écrire dessus ; il appartient à root.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ ls -lhF
    total 128K
    drwxr-xr-x 16 root root 128K  5 oct.  14:46 Backup_Plus/
    Apparemment, on ne peut pas changer le owner sur un disque exfat. Du moins, est-ce ce que j'ai compris.
    Ce qui m'échappe, c'est que si je monte le disque par interface graphique via pcmanfm, le disque m'appartient.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ ls -lhF
    total 128K
    drwxr-xr-x 16 moi moi 128K  5 oct.  14:26 'Backup Plus'/
    Et là, je peux écrire dessus.

    1, Comment pcmanfm fait-il cela ?
    2, comment puis-je le faire ?

    Merci de vos lumières.

    Olivier]

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Bonjour,

    attention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test -z $empty; echo $?
    0
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test -z "$empty"; echo $?
    1
    il faut toujours mettre les Développement de paramètres entre guillemets. TOUJOURS!
    à moins de savoir pourquoi.

    il faudrait vérifier que l'entrée est un nombre et/ou faire une évaluation arithmétique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
     
    declare -i input=$1
     
    if (($input)) #là, on est sûr que l'entrée est un nombre positif non nul.
    then...
    aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_rep=( $(blkid -o udev /dev/sda1 | grep -oP 'ID_FS_(LABEL|PARTLABEL|UUID)=\K.*') )
    ceci évite les tests répétitifs sur l'existence de cette variable.

    et, par convention, seules les variables d'environnement (HOME, PWD, USER...) ont le droit d'être tout en majuscules; les variables utilisateur, elles, peuvent être panachées : nom2MaVariable, par exemple.

    pour répondre à tes questions : je ne sais pas.
    mais, tu ne voudrais pas installer udiskie pour faire le job ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 830
    Points
    12 830
    Par défaut
    Peut-être:
    Mount options for fat
    uid=value and gid=value
    Set the owner and group of all files. (Default: the uid and gid of the current process.)
    Cordialement.

  4. #4
    Membre habitué

    Inscrit en
    Octobre 2003
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 185
    Points : 137
    Points
    137
    Par défaut
    N_Bah, merci pour ce cours accéléré.
    juste une chose,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ toto=blabla;test -z $toto;echo $?;test -z "$toto";echo $?
    1
    1
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $ toto=;test -z $toto;echo $?;test -z "$toto";echo $?
    0
    0


    Le test de la valeur numérique, je prends! même si en l'occurrence je prends en paramètre une lettre et un chiffre (cas de volumes partitionnés).
    Et alors l'affectation de nom_rep, j'en reste sans voix!

    Je veux essayer de maîtriser autant que possible ce que je fais sur ma machine en utilisant au max la ligne de commande. Si udiskie, que je ne connaissais pas, s'utilise en ligne de commande ça reste un "intermédiaire". Donc...

    Disedorgue, c'est exactement ce que je cherchais. Merci Je n'avais visiblement pas assez gratté le man du mount

    Question subsidiaire, comment fait pcmanfm pour réaliser le mount sans qu'il faille donner le mot de pass root ?

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    sans guillemets, quand la variable est vide, test teste l'option comme une simple chaîne (non vide)
    test -z : la variable est vide. Or, dans le premier test elle n'est pas vide : elle vaut blabla, donc erreur; tu devrais essayer avec toto='bla bla'.
    le deuxième test teste -z qui existe, donc vrai, puis que toto n'a pas de valeur, ce qui est encore vrai.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 845
    Points : 44 203
    Points
    44 203
    Par défaut
    Question subsidiaire, comment fait pcmanfm pour réaliser le mount sans qu'il faille donner le mot de pass root ?
    Il y a un démon nommé udisks qui tourne en root et qui sert à l'automount (je me demande si il n'a pas été intégré à systemd).

    PCManFM doit utiliser GVFS ou plutôt la spec desktop VFS de FreeDesktop.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Citation Envoyé par chrtophe
    Il y a un démon nommé udisks qui tourne en root et qui sert à l'automount (je me demande si il n'a pas été intégré à systemd).
    il existe un paquet udisks2, j'aurais donc tendance à penser que ce n'est pas intégré à systemd par défaut.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 227
    Points : 4 711
    Points
    4 711
    Par défaut
    chez moi, c'est l'inverse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pacman -Qi udisks2
    Dépend de                : ...  polkit
                               ...systemd-libs  libsystemd.so=0-64  util-linux-libs  libblkid.so=1-64 libmount.so=1-64  libuuid.so=1-64
    $moi= ( !== ) ? : ;

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    le fait qu'un paquet dépende d'un autre paquet n'implique pas qu'il y est intégré.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un autre système : d'accord mais dans quelles conditions ?
    Par Gluups dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 03/03/2022, 21h40
  2. password_verify d'accord, mais ccomment?
    Par bween dans le forum Langage
    Réponses: 7
    Dernier message: 21/02/2019, 15h03
  3. [MySQL] Erreur du a un nombre de parametres invalide: oui d'accord mais
    Par Errebey dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/01/2014, 10h40
  4. sudo chown avec PHP exec ne fontionne pas
    Par mqxxou dans le forum Applications et environnements graphiques
    Réponses: 10
    Dernier message: 17/11/2012, 20h26
  5. Réponses: 4
    Dernier message: 11/11/2006, 20h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo