내 컴퓨터에 사용자 이름을 만들고 해당 사용자 이름을 sudoers 파일에 추가하여 루트 액세스 권한을 얻었습니다.
내 .bashrc
파일에는 PS1의 색상과 ls 명령의 색상을 변경하라는 스크립트도 포함되어 있습니다.
export PS1="\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] "
export LS_COLORS="di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90"
스크립트가 끝나면 명령을 사용하여 sudo su
로그인 시 직접 루트 권한을 얻을 수도 있습니다.
문제는 PS1이 지속되고 이후에 색상이 변경되지만 sudo su
ls 명령은 기본 명령으로 유지된다는 것입니다. 이 문제를 어떻게 해결할 수 있나요?
답변1
sudo -l
현재 유효한 옵션을 확인하려면 일반 사용자로 실행하세요 .
출력에는
env_reset
? 그렇다면 탐색하는 동안 안전하고 필요한 환경 변수 중 일부만 보존됩니다sudo
. 파일에서env_check
및/또는env_keep
키워드를 사용하여sudoers
통과할 수 있는 항목을 지정할 수 있습니다sudo
.출력에는
always_set_home
? 그렇다면$HOME
환경 변수는 대상 사용자의 홈 디렉터리를 가리킵니다/root
. 따라서 결과 쉘은 개인 쉘 대신 실행되며 마찬가지로 모든 프로그램은/root/.bashrc
개인 홈 디렉토리 대신 디렉토리에서 사용자별 구성 파일을 찾습니다./root/
자신의 sudo -s
루트 대신 루트를 사용 하면 작동할 가능성이 높습니다(또는 엄격한 PAM 모듈 등을 갖춘 이상한 배포판이 있습니다). 이 경우 sudoers 파일을 편집하고 다음 줄 중 하나를 추가합니다(옵션 이름 앞의 느낌표는 "no"를 의미함)..bashrc
always_set_home
visudo
Defaults !always_set_home
모든 사용자에 대한 옵션을 설정 해제합니다.Defaults>root !always_set_home
원래 사용자에 관계없이 루트로의 모든 전환에 대해 설정을 해제합니다.Defaults:johndoe !always_set_home
johndoe
원래 사용자 만 포함하여 변환하려면 설정을 해제하세요 .
Defaults
순서가 중요합니다. 마지막 설정이 우선하므로 파일에 기존 줄이 있으면 sudoers
그 뒤에 사용자 정의 설정을 추가해야 합니다.
su
이후에 연결 하면 sudo
일반적으로 구성할 수 없는 자체 규칙이 적용됩니다. 동작(및 가용성)은 Linux 배포판과 버전에 따라 su -p
다릅니다 .su -m
sudo su
일반 사용자에서 루트로 전환한 다음 다시 루트에서 루트로 전환하여 세심하게 조정된 개인 환경 설정을 거의 효과 없이 깨뜨릴 가능성을 최대화한다는 의미입니다. 선호도와 Linux 배포판 선택에 따라 sudo -s
파일에서 일부 옵션을 조정하거나 직접 Defaults
동일한 목표를 달성 할 수 있습니다.sudoers
sudo su -
, 반면에쓸모없는즉, "대상 사용자(예: 루트)가 직접 로그인한 것처럼 환경을 명시적으로 원합니다. 버전이 있는 경우 개인 환경의 흔적을 남기고 싶지 않습니다. sudo
" 금세기에 출시된 이 sudo -i
제품을 사용하면 이 목표를 달성할 수 있습니다.
2010년대에는 근육 기억을 사용하거나 sudo su
, sudo su -
오래된 조언을 따르거나, 정말 오래된 시스템을 다루었습니다. 아마도 이 두 명령을 잊어버려야 할 것입니다.
답변2
sudo su -p
일부 예외를 제외하고 호출 사용자의 환경은 보존됩니다. 다음에서는 예외가 있을 수 있습니다.su
매뉴얼 페이지, 그러나 관련 부분은 다음과 같습니다.
-m, -p, --preserve-environment
Preserve the entire environment, i.e. it does not set HOME,
SHELL, USER nor LOGNAME. This option is ignored if the option
--login is specified.