Linux, sudo env에는 환경 변수가 없지만 루트 사용자에게는 환경 변수가 있습니다.

Linux, sudo env에는 환경 변수가 없지만 루트 사용자에게는 환경 변수가 있습니다.

RHEL 7이 있고 sudo에 대한 환경 변수를 설정하고 싶습니다.

루트 사용자로 전환하고 해당 파일에 sudo su추가하기 위해 실행했습니다 . 그런 다음 .export.bashrcsource

env이제 모드 에서 실행하면 root환경 변수가 있습니다. 그러나 종료하고 실행하면 sudo env그렇지 않습니다.

왜 이런 일이 발생합니까?

답변1

sudo제한된 자체 환경에서 프로그램을 실행합니다(설명서의 환경 섹션 참조 man sudo). bash프로그램을 실행하는 데 암시적으로 사용되지 않으므로 ~/.bashrc명시적으로 호출할 수는 있지만 실행되지는 않습니다.

sudo bash --rcfile=~root/.bashrc -c ProgramAndParameters

실행 문자열에서 환경 변수를 설정할 수 있습니다.

sudo variable=value ProgramAndParameters

별칭이나 함수를 사용하여 기본적으로 이러한 작업을 수행할 수 있습니다.

또는 환경 파일을 추가할 수도 있습니다 /etc/sudoers( man sudoers자세한 내용은 참조).

답변2

sudoers 항목은 아래와 같습니다.

%DBTEAM     ALL = (oracle) NOPASSWD: ALL

DBTEAM --> 그룹 이름

oracle --> oracle 사용자 이름

환경 변수 없이 대상 사용자로 전환 sudo -s -u oracle

환경 변수를 사용하여 대상 사용자로 전환 sudo -i -u oracle

관련 정보