sudo 명령에서도 전역 변수를 표시하도록 설정하는 방법은 무엇입니까?

sudo 명령에서도 전역 변수를 표시하도록 설정하는 방법은 무엇입니까?

다음과 같이 Ubuntu 16.04에 Maven을 설치했습니다.지시하다.

/etc/environment경로를 편집 하고 추가했습니다.전문가/빈폴더$경로바꾸다.

일반 사용자에서는 모든 것이 잘 작동하지만 실행하려고 하면 sudo mvn test다음과 같은 메시지가 나타납니다.MVN알 수 없는 명령입니다. 다시 시작해도 도움이 되지 않습니다.

실수:

/bin/sh: 1: mvn: not found

나도 약간 혼란스러워요 /bin/sh. 저는 bash를 사용하고 있어요.

그러면 sudo 명령이 볼 수 있도록 Maven 바이너리 경로를 어디에 넣어야 할까요? 감사해요.

답변1

사용하면 보안상의 이유로 sudo파일의 다음 줄로 덮어쓰게 됩니다.$PATH/etc/sudoers

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

해당 항목이 다음에 존재하는 경우에도 /etc/environment:

$ cat /etc/environment
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/tmp

픽업 된 것 같습니다 :

$ sudo env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/tmp

우리는 스크립트를 가지고 있습니다 /tmp:

$ ls -l /tmp/blah.bash
-rwxrwxr-x 1 vagrant vagrant 20 Aug  8 20:57 /tmp/blah.bash

이 스크립트를 whoami실행하면 다음과 같이 인쇄됩니다.

$ cat /tmp/blah.bash
#!/bin/bash

whoami

Sudo는 우리가 이것을 하도록 허용하지 않습니다:

$ sudo blah.bash
sudo: blah.bash: command not found

sudo의 안전한 경로 변경

하지만 내 파일을 편집하면 /etc/sudoers:

$ sudo visudo
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/tmp

이제 작동합니다:

$ sudo blah.bash
root

안전

sudo안전한 경로에 디렉터리를 추가 하려는 이유를 신중하게 생각해 보세요 . 이렇게 설정한 데는 그럴 만한 이유가 있습니다. 추가 sudo명령 경로를 가볍게 추가하지 마십시오 !

추가 디렉터리를 추가하면 귀하와 귀하의 사용자가 너무 늦을 때까지 많은 사람들이 인식하지 못하는 추가 위험에 노출됩니다.

관련 정보