$PATH에 명령이 있지만 sudo를 사용할 때 인식되지 않습니다.

$PATH에 명령이 있지만 sudo를 사용할 때 인식되지 않습니다.

우분투 14.04를 사용하고 있습니다. $PATH에서 명령을 가져오는 데 sudo를 사용할 수 없습니다. 이것을 /root/.profile 파일에 추가했습니다.

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

export PATH=$PATH:/usr/local/rvm/rubies/default/bin

mesg n

로그아웃했다가 sudo 권한이 있는 사용자로 다시 로그인했습니다. 그런 다음 $PATH에서 명령을 실행하려고 하면 "명령을 찾을 수 없습니다"라는 메시지가 나타납니다.

daveuser@mymachine:/home/rails/myproject$ sudo gem pristine --all
sudo: gem: command not found
daveuser@mymachine:/home/rails/myproject$ sudo echo $PATH
/usr/local/rvm/gems/ruby-2.3.0/bin:/usr/local/rvm/gems/ruby-2.3.0@global/bin:/usr/local/rvm/rubies/ruby-2.3.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/    bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/rvm/bin
daveuser@mymachine:/home/rails/myproject$ sudo which gem
daveuser@mymachine:/home/rails/myproject$ which gem
/usr/local/rvm/rubies/ruby-2.3.0/bin/gem

$PATH를 echo하면 "gem" 명령이 있는 PATH를 정확히 알 수 있습니다. sudo 사용자로 명령을 실행할 때 "gem" 명령이 인식되도록 하려면 또 무엇을 해야 합니까?

편집하다:환경을 보존하는 것은 효과가 없습니다. 이런 일이 일어났습니다…

remoteuser@remotemachine:/home/rails/myproject$ sudo --preserve-env gem pristine --all
[sudo] password for remoteuser: 
sudo: gem: command not found

편집 2:sudo -l의 출력

remoteuser@rtemotemachine:/home/rails/myproject$ sudo -l
Matching Defaults entries for remoteuser on rtemotemachine:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User remoteuser may run the following commands on rtemotemachine:
    (ALL : ALL) ALL

답변1

기본적으로 sudo는 보안상의 이유로 환경 변수를 재설정합니다. /etc/sudoers에서 다음 줄을 확인하십시오.

Defaults    env_reset

PATH 변수는 "secure_path" 값으로 재설정됩니다.

e.g. Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

당신은 시도 할 수 있습니다

sudo env "PATH=$PATH" [command]sudo -E에 대한 경로를 유지하는 것은 효과가 없습니다.

더 나은 설명을 찾을 수 있습니다여기

답변2

사용

sudo --preserve-env

-E, --preserve-env 사용자가 기존 환경 변수를 보존하기를 원함을 나타내는 보안 정책입니다. 사용자에게 환경을 보호할 권한이 없으면 보안 정책에서 오류가 반환될 수 있습니다.

관련 정보