2009-04-07 6 views
6

J'ai donc un petit problème Linux, ça va m'apprendre à passer tant d'années sur Windows. Quoi qu'il en soit, je l'ai fait une petite application java, enveloppé bien avec le script Java service Wrapper, mais quand je lance ce script:Autorisation Linux refusée après chmod a = rwx

sh ./wrapper.sh console 

j'obtenir la permission refusée tout de suite. L'autorisation message de refus est comme ça:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Ma petite vie wrapper.sh dans le dossier MyApp/bin. Le répertoire MyApp/bin/emballage contient 2 fichiers:

  • wrapper-linux-x86-32
  • wrapper-linux-x86-64

Comme un test j'ai couru la commande chmod suivante :

chmod a=rwx MyApp -R 

J'ai vérifié que tout était rwx, même dans les sous-dossiers et essayé de courir à nouveau le script, avec le même résultat exact ... l'autorisation refusée.

Quelqu'un at-il une idée de ce que je pourrais essayer de faire courir ce bébé?

Merci, Lancelot

+0

Quel est le contenu de l'emballage? Se pourrait-il qu'il appelle une commande appelée _eval_? Mon homme me dit qu'il y a une commande eval - construct en concaténant des arguments. Peut-être qu'il y a un problème dans le script wrapper. – lothar

+0

Je crois que vous avez supprimé l'autorisation d'écriture publique sur les fichiers et sur les répertoires. Il est rarement défendable de laisser des fichiers ou des répertoires avec une autorisation d'écriture publique -/tmp est un cas particulier et nécessite que le jeu de bits collants soit sécurisé à distance. –

Répondre

8

Je viens de remarquer le message d'erreur fait référence au nom du répertoire hébergement de votre fichier:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Nous savons qu'il est un répertoire depuis que vous avez mentionné « Le répertoire MyApp/bin/emballage contient 2 fichiers » .

Pourriez-vous vérifier votre script par exemple où vous utilisez le nom du répertoire comme une commande? Tels que l'utilisation de wrapper (qui est le nom du répertoire) au lieu de wrapper/wrapper-linux-x86-32 (qui serait un nom de fichier), ou des erreurs similaires?

erreurs similaires apparaissent souvent lors de l'utilisation des espaces dans les noms de fichiers et d'oublier de citer ledit nom de fichier (probablement pas le cas ici, cependant.)

A défaut, pourriez-vous modifier votre question d'inclure le contenu du script d'emballage vous appelez-vous?

(Nouvelle réponse car il est tout à fait sans rapport avec l'idée noexec précédente, et que l'on peut rester à titre de référence.)

+0

Vous da man. C'est exactement ce qui se passait. Le système était confus et a essayé d'exécuter un dossier au lieu d'un fichier. Notez que si ma structure avait été à l'épreuve des balles en premier lieu, le système ne serait pas confus. Les machines ne font que ce que nous leur disons de faire! Merci un million de fois moocha. – Lancelot

+0

Ne le mentionnez pas, heureux de pouvoir vous aider. –

+0

+1 pour l'analyse de génie de la question :) –

0

vous devrez peut-être accorder également script d'exécution à votre emballage

chmod + x wrapper.sh

EDIT: Je viens de remarquer que votre wrapper.sh est situé dans votre dossier MyApp /EDIT

aussi, si u assurez-vous que vous avez

#!/bin/sh 

en haut de votre fichier .sh, vous pouvez l'exécuter comme ceci:

.wrapper.sh

+0

Salut Roy, quand je fais ls -Al voici ce qu'il imprime pour mon wrapper.sh: -rwxrwxrwx 1 utilisateur1 utilisateur1 19035 2009-04-07 15:32 wrapper.sh – Lancelot

+0

chmod avec = est tout à fait acceptable, il est déjà réglé bit d'exécution. – paxdiablo

0

D'abord, essayez de l'ouvrir dans un éditeur de texte, pour vous assurer d'avoir un accès en lecture. Si oui,

chmod +x wrapper.sh 

Et assurez-vous que vous avez #!/bin/sh au début du script

+0

Salut Zifre, le #!/Bin/sh est là je viens de vérifier. – Lancelot

5

Le système de fichiers hébergeant votre script peut être monté avec le drapeau noexec. Vérifiez votre/etc/fstab pour ce système de fichiers et s'il y a un noexec essayer il enlever remonter alors que le système de fichiers via mount /path/to/mountpoint -o remount

À la réflexion, vérifiez la sortie de la commande mount pour les instances noexec au lieu de/etc/fstab (le système de fichiers a pu être monté dynamiquement.)

+0

Non, il n'y a pas d'option "noexec" sur aucun des systèmes de fichiers. Mais merci de signaler ce fichier, il est utile de savoir où se trouve cette information. – Lancelot

+0

Ceci est une installation très simple d'Ubuntu. Rien n'est monté après le démarrage. Les lecteurs de disque et le cdrom sont montés automatiquement lorsque le système démarre. – Lancelot

0

Vous pouvez essayer d'exécuter le fichier qui était là dans le répertoire d'autres utilisateurs, vous pouvez donner l'autorisation à l'utilisateur "user"

chmod -R a + x/home/user1 ou chmod -R o + x/home/user1 chmod -R g + x/home/user1

0

Bien que mon problème était un peu différent cette quête L'ion est apparu dans ma recherche quelques fois en cherchant un problème similaire, donc je posterai mes résultats ici.

Mon problème était que je ne pouvais pas accéder au stockage/dossier après la commande chmod.

Après exécution de la commande:

sudo chmod -755 storage -R //notice -755 is wrong, it should be 755 

Je ne pouvais pas accéder au stockage/dossier plus.

J'ai essayé ls -l:

storage permissions d---------

également après git status:

storage/.gitignore: Permission denied

Après l'exécution de la commande droite:

sudo chmod 755 storage -R // without - 

e Tout est revenu à la normale.

Questions connexes