web-dev-qa-db-fra.com

Ajout d'une nouvelle partition au système, "autorisation refusée" lors de l'exécution de programmes

Duplicate possible:
buntu a retiré les autorisations de ma partition de données

J'ai reformaté une partition NTFS sur mon système avec ext4 parce que je veux l'utiliser sur mon installation Ubuntu actuelle, et non sur Windows. J'ai ajouté une entrée à /etc/fstab pour la monter au démarrage. Le point de montage est /home/username/bin. J'ai changé le propriétaire de /home/username/bin et tous ses sous-répertoires en mon compte habituel et son groupe d'utilisateurs. Enfin, j'ai défini toutes les autorisations sur 755.

Mon /etc/fstab se présente comme suit:

proc        /proc               proc    nodev,noexec,nosuid               0       0
UUID=[uuid] /                   ext4    errors=remount-ro                 0       1       
UUID=[uuid] /data               vfat    utf8,umask=007,gid=46             0       1
UUID=[uuid] /home               ext4    defaults                          0       2
UUID=[uuid] /home/username/bin  ext4    rw,suid,dev,exec,auto,user,async  0       2
UUID=[uuid] none                swap    sw                                0       0

Mon problème est maintenant que, bien que je sois capable de lire et d'écrire des fichiers sur cette nouvelle partition, je ne peux pas exécuter d'applications/programmes situés sur cette partition. En tant qu'utilisateur régulier, je reçois toujours une erreur "autorisation refusée". En tant que root (avec Sudo), rien ne se passe, ce qui signifie que je suis immédiatement renvoyé à l'invite du shell. Les applications doivent produire une sortie textuelle ou des fenêtres ouvertes. Certaines de ces applications sont des binaires, d'autres des scripts. J'essaie de les lancer avec ./program. Si je les recopie dans mon dossier personnel, je peux les exécuter sans problèmes.

En fait, j'ai gardé ces applications pendant des mois dans un autre sous-répertoire /home/username/apps de mon dossier personnel et les ai exécutées à partir de là, sans aucun problème.

Comment puis-je réparer cela? Qu'est-ce que je fais mal? :)

5
Caspar

Je l'ai résolu. Le problème était les options de montage dans /etc/fstab. Les changer en defaults (ce qui revient à changer user en nouser) résout le problème, tout fonctionne maintenant comme prévu.

2
Caspar

Vous pouvez accéder aux fichiers de la partition ext4 que vous venez de créer, mais vous ne pouvez pas exécuter de programmes. Lorsque vous le faites, vous obtenez une erreur "autorisation refusée". Ceci suggère deux possibilités, car reverendj1 a suggéré :

  • Les fichiers peuvent ne pas avoir exécuter permissions . Pour donner à un fichier des autorisations d'exécution à partir de la ligne de commande, exécutez:

    chmod +x filename

    Si vous souhaitez simplement donner des autorisations d'exécution au propriétaire du fichier:

    chmod u+x filename

    Pour accorder à un fichier des autorisations d'exécution dans Nautilus (le navigateur de fichiers), cliquez avec le bouton droit de la souris sur le fichier, puis cliquez sur Propriétés . Cliquez sur l'onglet Autorisations . Cochez la case Autoriser l'exécution du fichier en tant que programme , puis cliquez sur Fermer .

    enter image description here

  • La partition peut être montée avec noexec. Pour vérifier cela, exécutez mount et voyez si noexec est répertorié à côté de l'entrée correspondante. Comme vous montez depuis /etc/fstab, vous pouvez supprimer noexec ici.

De plus, veuillez noter que:

  • Habituellement, mais pas toujours, les exécutables doivent être stockés aux endroits habituels: /bin, /sbin, /usr/bin, /usr/sbin/usr/local/bin, /usr/local/sbin, /opt/bin, ~/bin. Êtes-vous sûr de vouloir vraiment des exécutables sur ce lecteur? Vous voudrez peut-être modifier votre question pour fournir davantage d'informations sur ce que vous souhaitez accomplir.

  • Pour exécuter un programme à partir de la ligne de commande située dans le répertoire actuel en spécifiant son chemin relatif, vous devez le faire précéder de ./:

    ./program
  • Si vous lancez un fichier .desktop plutôt qu'une application, alors:

    1. Il n'a pas besoin que le bit exécutable soit défini.
    2. Vous ne devriez pas essayer de l'exécuter comme s'il s'agissait d'un script ou d'un programme, mais plutôt comme ceci :

      xdg-open application.desktop
  • Si ce sont des exécutables Windows que vous exécutez avec Wine, il n'est pas nécessaire de définir le bit exécutable. Si ce n'est pas le cas, vous pouvez cliquer dessus avec le bouton droit de la souris et cliquer sur les ouvrir avec le Chargeur de programme Windows Wine ou les lancer à partir de la ligne de commande, comme suit:

    wine program.exe

(Je vois que cela donne des conseils très similaires à ceux d'une réponse précédente, alors j'ai décidé de faire ceci community-wiki .)

4
Eliah Kagan

Ignore this - La publication d'origine impliquait NTFS, mais ce n'est pas le cas.

Lorsque vous montez une partition NTFS, contrairement à ext3 ou ext4, elle est montée avec des autorisations définies uniquement pour l'utilisateur, où groupe et autre n'ont aucune autorisation (rwx ------). Définir les autorisations avec chmod ou le propriétaire avec chown changera uniquement les autorisations pour le répertoire, rien de ce qu'il y a dans le répertoire.

La solution consiste à spécifier les paramètres corrects dans /etc/fstab/. Celles que j’utilise avec succès pour me rendre propriétaire sont les suivantes (remplacez 00500000000000 par l’UUID correct et remplacez LOGIN_NAME par votre nom de connexion):

UUID=0000000000000000 /home/LOGIN_NAME/bin ntfs-3g auto,users,uid=LOGIN_NAME,gid=LOGIN_NAME,utf8,dmask=002,fmask=113 0 0

Cela devrait tous être sur une seule ligne dans fstab.

La raison en est que les autorisations NTFS sont effectuées différemment des autorisations natives Linux, de sorte que certaines traductions doivent être spécifiées pour être utilisées par Linux.

Fin d'ignorer ceci -------------

EDIT:

Désolé pour la mauvaise direction.

Je pense que vous pouvez résoudre ce problème en changeant le propriétaire du répertoire ~/bin after le monter pour la première fois. Dans un shell bash, entrez la commande Sudo chown LOGIN_NAME:LOGIN_NAME /home/LOGIN_NAME/bin, en remplaçant LOGIN_NAME par votre nom, bien entendu.

J'ai testé cela en utilisant un lecteur USB, et il s'est bien monté dans mon répertoire bin. La seule différence était que je n'utilisais que l'option "auto" dans fstab.

2
Marty Fried

Je rencontrais des problèmes similaires: je ne parvenais pas à exécuter les scripts Shell stockés sur NTFS, même avec Sudo, même après avoir modifié fstab, comme décrit ci-dessus.

Il s’avère que je n’ai jamais créé le répertoire des points de montage. J'ai démonté la partition, créé le répertoire des points de montage pour la partition:

mkdir /media/Windoze7

puis monté à nouveau.

Sudo mount -a
1
user15972

Vous devez définir l'autorisation d'exécution. Dans Nautilus (le navigateur de fichiers), cliquez avec le bouton droit de la souris sur le fichier du programme, puis sélectionnez l'onglet Autorisations. Cochez la case "Autoriser l'exécution du fichier en tant que programme". Depuis le terminal, vous pouvez aussi faire:

Sudo chmod +x /path/to/myfile

Assurez-vous également que vous ne spécifiez pas noexec pour la partition dans fstab, car cela désactivera l'exécution pour toute la partition.

1
reverendj1

Avez-vous essayé de monter cette partition ext4 quelque part en dehors de votre répertoire personnel? Par exemple, configurez son entrée dans/etc/fstab de la manière suivante:

UUID=[uuid] /ext4bins  ext4    rw,suid,dev,exec,auto,user,async  0       2

Si vous parvenez à le monter ailleurs et à exécuter des fichiers et des applications, vous pouvez procéder à une deuxième étape pour obtenir le comportement souhaité, à savoir pouvoir exécuter des applications à partir de ~/bin, en créant un lien symbolique, comme suit:

ln -s /ext4bins /home/[username]/bin

Remplacez [nom d'utilisateur] par votre propre nom d'utilisateur, évidemment. Cela fera apparaître la partition montée dans/ext4bins dans/home/[nom d'utilisateur]/bin, et tant que les fichiers sont exécutables dans/ext4bins, vous pourrez également les exécuter via ~/bin. Par exemple.

/ext4bins/myscript.sh

se déroulera comme

~/bin/myscript.sh
0
OpensourceFool