bash 프로필은 사용자에게는 작동하지만 sudo는 작동하지 않습니다


9

플래시 드라이브가 연결된 경우 폴더를 포함하도록 내 .profile을 수정했습니다. 사용자로 명령을 실행할 때 정상적으로 작동하지만 sudo에서 scrip을 실행해야한다고 알려줍니다 (이것이 내가 원하는 것입니다). 그러나 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

sudo루트에 액세스하려고 할 때 스크립트를 실행할 때 따라서 귀하의 $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 : 권한이 거부되었습니다"
user564448

죄송합니다, "wp"는 스크립트입니다
user564448

내가 언급 한 다른 단계를 시도하십시오.
devav2

1
읽어 여기에 당신이 사용해야합니다sudo su -p
devav2

2

를 사용할 $PATH때 의 값을 보존 할 수 있습니다 sudo. 유지할 변수 목록에 visudo추가하는 $PATH데 사용 합니다 . 다음과 같은 줄 /etc/sudoers이 트릭을 수행해야합니다.

Defaults env_keep += "PATH"

1

그것이 우분투에서의 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.