Mac OSX에서 zsh를 실행하는데 가끔 터미널에서 루트 사용자로 전환하고 싶습니다.
나는 일반 사용자의 모든 도트 파일, 환경 경로 구성 및 스크립트를 유지하고 루트로 많은 작업을 수행하고 싶습니다.
sudo bash
나는 루트로 전환하는 쉬운 방법으로 실행 했지만 sudo zsh
일반 사용자를 위해 가지고 있는 모든 zsh 구성을 실행하지 않는다는 단점이 있습니다.
일련의 명령을 실행하기 위해 "루트가 되어" 일반 사용자에 대한 모든 구성/환경 설정을 유지하는 가장 좋은 방법은 무엇입니까?
예를 들어 일반 사용자를 위해 다음을 사용자 정의했으며 루트 사용자도 이 모든 항목을 사용할 수 있도록 하고 싶습니다.
- .zshrc
- ~/빈
- .aliases
- 입력을 위한 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
.