![sudo 명령에서도 전역 변수를 표시하도록 설정하는 방법은 무엇입니까?](https://linux55.com/image/138352/sudo%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%EB%8F%84%20%EC%A0%84%EC%97%AD%20%EB%B3%80%EC%88%98%EB%A5%BC%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8F%84%EB%A1%9D%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같이 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
명령 경로를 가볍게 추가하지 마십시오 !
추가 디렉터리를 추가하면 귀하와 귀하의 사용자가 너무 늦을 때까지 많은 사람들이 인식하지 못하는 추가 위험에 노출됩니다.