2009-04-07 14 views
6

Linuxの問題が少しあります。Windowsで長年過ごすよう教えてくれるでしょう。とにかく私は、Javaサービスラッパースクリプトとうまく包まれた小さなJavaアプリケーションを、でしたが、私はそのスクリプトを実行すると:chmod a = rwxの後にLinuxの権限が拒否されました

sh ./wrapper.sh console 

を私はすぐに拒否された権限を取得します。許可の拒否のメッセージは次のようなものです:

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

私の小さなwrapper.shはMyApp/binフォルダにあります。私は、次のchmodコマンドを実行した試験として

  • ラッパーのlinux-x86-32
  • ラッパーのlinux-x86-64の

: ディレクトリのMyApp/binに/ラッパーは、2つのファイルが含まれています:

chmod a=rwx MyApp -R 

は、私はまったく同じ結果であってもサブフォルダに、すべてがRWXたことを確認して、もう一度スクリプトを実行しようとした...許可が拒否されました。

誰かが私がその赤ちゃんを走らせるために次に何を試すことができるか考えていますか?

おかげで、 ランスロット

+0

ラッパーの内容は何ですか? _eval_というコマンドを呼び出すことができますか?私の人は、引数を連結することによって、コマンドeval - constructコマンドがあると教えてくれます。たぶん、ラッパースクリプトに問題があります。 – lothar

+0

私はあなたがファイルとディレクトリに対する一般の書き込み許可を削除したと確信しています。パブリック書き込み許可を持つファイルまたはディレクトリを残すことはめったにありません。 -/tmpは特殊なケースであり、スティッキービットセットをリモートから安全にする必要があります。 –

答えて

8

私は、エラーメッセージがあなたのファイルをホスティングディレクトリの名前を参照気づい:

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

あなたは、「ディレクトリのMyApp/binに/ラッパーは2つのファイルが含まれている」述べたので、我々はそれがディレクトリであることを知っています。

ディレクトリ名をコマンドとして使用している場合など、スクリプトを確認できますか? wrapper/wrapper-linux-x86-32(これはファイル名になります)の代わりにラッパー(ディレクトリ名)を使用するなどのエラー?ファイル名をファイル名にスペースを使用して引用符を忘れたとき

同様のエラーが頻繁に表示されます(ただし、ここではおそらくないケースを。)

をそれに失敗する、あなたはラッパースクリプトの内容が含まれるようにあなたの質問を編集できます電話していますか?

(新答えは前NOEXEC考え方とは全く無関係だし、その1は、参考のために滞在することができるので。)

+0

あなたは男です。それはまさに何が起きているのかです。システムは混乱し、ファイルの代わりにフォルダを実行しようとしました。私の構造が最初に弾丸であったとすれば、システムは混乱することはないことに注意してください。マシンは、私たちに指示するものだけを行います!百万回無情に感謝します。 – Lancelot

+0

それを言及しないで、喜んで助けることができます。 –

+0

質問の天才解析のための+1 :) –

0

また、あなたのラッパーに実行スクリプトを許可する必要があり

ます。chmod + xのwrapper.sh

EDIT:私はちょうどあなたのwrapper.shが置かれていることに気づきましたあなたのMyAppフォルダ /EDITも

、uはあなたが

#!/bin/sh 
01を持っていることを確認した場合あなたはこのようにそれを実行することができます.SHファイルの先頭に

、:

.wrapper.sh

+0

こんにちはロイ、私はls -Alをするときは、私のwrapper.shのために何を印刷しているのです: -rwxrwxrwx 1 user1 user1 19035 2009-04-07 15:32ラッパー。sh – Lancelot

+0

=のchmodはかなり受け入れられますが、すでに実行ビットが設定されています。 – paxdiablo

0

まず、あなたが読み取りアクセス権を持っていることを確認するために、テキストエディタで開いてみてください。もしそうなら、

chmod +x wrapper.sh 

を行うと、あなたはスクリプト

+0

こんにちはZifre、#!/ bin/shがそこにあります。 – Lancelot

5

noexecフラグでマウントされるかもしれないスクリプトをホストしているファイルシステムの先頭に#!/bin/shを持っていることを確認してください。などの代わりに、noexecでインスタンス/ためmountコマンドの出力を確認し、そのファイルシステムのためのあなたの/ etc/fstabのエントリをチェックして、そこにnoexecがあるかどう考え直しにmount /path/to/mountpoint -o remount

を経由して、それはそのファイルシステムを再マウント削除してみてください/ fstab(ファイルシステムが動的にマウントされている可能性があります。)

+0

いいえファイルシステムのいずれにも「noexec」オプションはありません。しかし、そのファイルを指摘してくれてありがとう、その情報がどこにあるのか知ることは有益です。 – Lancelot

+0

これはUbuntuの非常に簡単なインストールです。起動後には何もマウントされません。ディスクドライブとcdromは、システムの起動時に自動的にマウントされます。 – Lancelot

0

あなたはあなたができる、他のユーザのホームディレクトリにあったファイルを実行しようとするかもしれませんユーザーに権限を与える "ユーザー"

ます。chmod -R A + X /ホーム/ user1の または ます。chmod -R O + X /ホーム/ user1の ます。chmod -R G + X /ホーム/ user1の

0

私の問題は少し違っていましたが、このクエスト同じような問題を捜している間に私の検索で何度もイオンが現れたので、ここで私の発見を掲載します。

私の問題は、chmodコマンドの後にstorage/folderにアクセスできないということでした。

のコマンドを実行した後:

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

を、私はこれ以上のフォルダ/ストレージにアクセスできませんでした。

私はls -lを試してみた:

git status後も

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

storage/.gitignore: Permission denied

右のコマンドを実行した後:

sudo chmod 755 storage -R // without - 

E非常に元気に戻りました。