bashプロファイルはユーザーには機能しますが、sudoには機能しません


9

フラッシュドライブが接続されている場合にフォルダーを含めるように.profileを変更しました。ユーザーとしてコマンドを実行すると、正常に機能しますが、スクリプトはsudoで実行する必要があることを通知します(これは私が望んでいることです)。ただし、sudoで実行しようとすると、「コマンドが見つかりません」と表示されます

/ var / wwwフォルダーに/ media / flashドライブを指すシンボリックリンク(フラッシュ)があります。(ただの開発のため、この設定は気にしないでください)

これは私のユーザーの.profileです。

# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
    PATH="/var/www/flash/scripts:$PATH"
fi

私が得るsudoとして実行しようとすると:

sudo: script: command not found    

何か案は?

回答:


3

sudorootにアクセスしようとしているときにスクリプトを実行したとき。そのため、$HOME/.profile代わり/root/.profileにアクセスされません。

だから、今まであなたが何をしたか変更を加える$HOME/.profileにします/root/.profile。作成するには/root/.profile。次のコマンドを使用します。

sudo su
cd /root
touch .profile

変更を加えたら、スクリプトを実行してみてください。

または$HOME/.bashrc次の行を編集して追加します

alias sudo='sudo env PATH=$PATH $@'

お役に立てれば。


「エイリアスsudo = 'sudo env PATH = $ PATH $ @」を試しましたが、「env:wp:Permission denied」と表示されます
user564448

申し訳ありませんが、「WP」はスクリプトです
user564448

私が述べた他のステップを試してください。
devav2

1
ここを読んで、使用してくださいsudo su -p
devav2

2

$PATH使用時にの値を保持できsudoます。保持する変数のリストvisudoに追加する$PATHために使用します。次のような行で/etc/sudoersトリックを実行できます。

Defaults env_keep += "PATH"

1

これは、ubuntuでのsudoの動作です。

たとえば、次のコマンドを実行します

echo 'echo $PATH' | sh

そしてこれより

echo 'echo $PATH' | sudo sh 

出力が異なることがわかります!異なるパスを回避するには、以下を〜/ .bashrcに入れます

alias sudo='sudo env PATH=$PATH'

エイリアスsudo = 'sudo env PATH = $ PATH'を.bashrcに入れた後、 "env:wp:Permission denied"
user564448

-1

ファイルをsudoers usedディレクトリに移動することもできます:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.