パスワードなしでこのリモートサーバーへのSSH接続を確立できます。また、bashスクリプトの代わりに1行のコマンドを実行すると正常に動作します。ただし、SSHを介してbashスクリプトを実行しようとすると、次のように表示されます。
bash: /home/username/script.sh: Permission denied
この問題をどのように解決できますか?何の問題もなくSSHを介して1行のコマンドを実行できます。
答え1
このコマンドを実行しようとすると:
/home/username/LastBootupTime.sh
次の権限があります。
-rwxr--r-- 1 root root 42 Nov 3 14:01 LastBootUpTime.sh
それがroot
私たちができるすべてです。他の誰もがエラーを受けますbash: /home/username/LastBootUpTime.sh: Permission denied
。
その理由は、権限が次のとおりです。
rwx
- 所有者(この場合はルート)はスクリプトを読み、書き込み、実行できます。r--
- グループ(この場合はルートグループ)はスクリプトを読み取ることができますが、スクリプトを書いたり実行したりすることはできません。r--
- 他の人はスクリプトを読むことができますが、書き込みまたは実行することはできません。
これで、次のコマンドを明示的に指定しました。
bash /home/user/LastBootupTime.sh
したがって、読み取り権限が必要ですが、欲しくない実行権限が必要です。したがって、エラーメッセージが表示される別の理由があります。ユーザーはディレクトリの1つにアクセスできない可能性があります。
おそらく実際のコマンドは次のようになります。
bash /root/LastBootupTime.sh
この場合、root
ユーザーだけが/root
ディレクトリにアクセスできるため、他のすべてのユーザーに権限拒否エラーが発生します。解決策は、スクリプトを適切なアクセス可能なディレクトリに配置することです(私は/usr/local/bin
これを私のシステムで使用しています。他の人はこれを好みます/opt/bin
が、あなたは自分に合った場所に置くことができます)。