저는 Mac OSX에서 zsh를 실행하고 있는데 가끔 터미널에서 루트로 전환하고 싶습니다.
모든 도트 파일, 환경 경로 구성 및 스크립트를 일반 사용자로 유지하고 루트로 많은 작업을 수행하고 싶습니다.
sudo bash
나는 루트로 전환 하는 쉬운 방법으로 실행했지만 sudo zsh
일반 사용자로서 모든 zsh 구성을 실행할 수 없다는 단점이 있습니다.
일련의 명령을 실행하고 일반 사용자의 모든 구성/환경 설정을 유지하기 위해 "루트가 되는" 가장 좋은 방법은 무엇입니까? "
예를 들어 일반 사용자를 위해 다음을 사용자 정의하고 루트 사용자도 사용할 수 있도록 하려고 합니다.
- .zshrc
- ~/빈
- .별명
- vim 모드 입력
편집: 자주 "루트 권한으로 실행"하면 안 된다는 점을 참고하세요. 하지만 나는 그렇게 생각하지 않습니다. 그러나 때로는 몇 가지 간단한 명령을 루트로 계속 실행해야 하며 다른 목적으로는 사용하지 않고 해당 목적으로만 tmux 분할을 켭니다.
답변1
공통 도트 파일을 얻으려면 환경 변수를 sudo
변경하지 마십시오 . HOME
이 문제가 발생하는지 여부는 sudo의 컴파일 타임 및 런타임 구성에 따라 다릅니다. 을 보존하려면 파일 HOME
을 편집하고 sudoers
(실행하고 visudo
이 파일을 직접 편집하지 마십시오!) 파일에 다음이 포함되어 있는지 확인하십시오.
Defaults !always_set_home, !set_home
Defaults env_keep+=HOME
(컴파일 옵션에 따라 이 중 일부는 불필요할 수 있습니다.) 물론 sudo -i
.
그러나 루트로서 너무 많은 작업을 수행하지 마십시오. 예를 들어 편집기를 루트로 실행하는 대신 sudoedit
.
답변2
당신은 거의 확실히 이것을하고 싶지 않습니다.
루트 사용자가 일반 사용자의 도트 파일을 가리키는 경우 해당 도트 파일에 대한 권한이 변경되어 일반 사용자의 상황이 복잡해질 수 있습니다.
당신이 할 수 있는 일은 로그인할 때마다 루트 사용자의 홈 디렉토리에 파일을 복사하는 것입니다.
이 파일을 ~/.zshenv(루트 사용자용)에 복사하고 권한을 조정하세요. 이렇게 하면 환경을 계속 실행하고 사용자 지정 설정을 사용할 수 있습니다.
개인적으로 여러 루트 명령을 실행하고 싶지만 사용자 환경을 보존 sudo su -
해 볼 수도 있습니다 .sudo -E su -p
의무적인 경고!
달리는 데는 타당한 이유가 없습니다 sudo su
. 멀리더 나은 것sudo
모든 명령 전에 실행하십시오. 즉, sudo su
가끔 그런 일을 합니다. 그러나 일반적인 규칙은 그렇지 않습니다 sudo su
.