좀 이상한 질문일 수도 있지만, 가능한지 알고 싶습니다.
나는 시스템을 구성할 때 모든 작업을 수행할 필요가 없도록 루트를 사용하는 것을 선호합니다. 하지만 루트 계정은 내 개인 계정이 아니기 때문에 루트 계정(bashrc, vimrc 등)에서 설정을 변경하면 다른 사람들이 짜증을 낼 수도 있습니다. 그래서 개인 계정을 사용하여 구성으로 돌아가고 싶지만 권한이 없습니다.
루트 계정에만 문제가 없으며 때로는 다른 사용자 계정에서도 작업을 수행해야 할 때가 있습니다.
이상적으로는 다른 사용자(또는 루트 계정)로 인증할 수 있지만 그렇게 로그인할 수는 없습니다.
특정 사용자로 로그인하여 개인 프로필의 구성 파일(bashrc 및 vimrc 등)을 수동으로 실행할 수도 있지만 이는 매번 귀찮은 작업인 것 같습니다.
내가 여기서 설명하는 내용을 효율적으로 수행하는 방법을 아는 사람이 있습니까? 아니면 이것이 이상해서 해서는 안 된다고 생각하시나요?
답변1
나는 이 문제에 대한 보편적인 해결책이 없다고 생각합니다. 동시에 두 명의 사용자가 될 수 없습니다. 명령을 실행할 때마다 쉘은 명령을 실행해야 하는 사용자를 추측해야 합니다. 파일을 만들 때 파일이 누구에게 속해야 하는지 등을 추측해야 합니다.
다섯 번째 문단을 작성하겠습니다. 내 홈 디렉토리에 대한 경로를 포함하도록 PATH, LD_LIBRARY_PATH, MANPATH 및 PKG_CONFIG_PATH를 소싱하고 조정하는 스크립트 /usr/local/bin
(저는 이것을 이라고 부릅니다 becomeme
) 가 있습니다. /home/user/.bashrc
또한 vi
. HOME=/home/me vi
간단한 사용 사례인 bashrc, vi 및 screen에서는 꽤 잘 작동합니다.
그러나 이것은 어느 정도까지만 작동합니다. 왜냐하면 다른 사용자로 내 홈 디렉토리에 액세스한다는 것은 일반적으로 사용자가 원하지 않는 특정 파일 및 디렉토리에 대한 쓰기 권한이 필요함을 의미하기 때문입니다. 따라서 vi
가장 일반적인 사용 사례에서는 해킹에 가깝습니다 screen
.
becomeme
다른 사용자로 전환한 후 입력하는 것만 기억하면 되므로 별로 복잡하지 않습니다 . 루트의 경우 이는 상당히 빠르게 작동하며, 다른 사용자의 경우 먼저 집에 있는 파일에 대한 권한을 부여해야 합니다.
아직 시도하지 않았지만 귀하의 사용 사례에 적합할 수 있는 또 다른 접근 방식은 UID 0과 사용자 가족을 사용하여 다른 사용자를 생성하는 것입니다. 당신이 해야 할 일은 /etc/passwd
합계에 한 줄을 추가하는 것 뿐입니다 /etc/shadow
. 예를 들어 루트 사용자 이름이 admin인 경우 해당 행은 /etc/passwd
다음과 같습니다.
admin:x:0:0:My personalized root account:/home/mynormaluser:/bin/bash
그런 다음 입력 passwd admin
하여 에 항목을 만듭니다 /etc/shadow
. 지금 로그인하면 admin
루트인 UID 0이 되지만 일반 홈 디렉터리와 일반 사용자의 설정이 적용됩니다. 또한 공유할 필요가 없는 자체 비밀번호도 있습니다. 그러나 이는 NFS-home에서는 작동하지 않습니다(root_squash 참조).
이것이 작동하는 동안 admin
사용자로서 홈 디렉터리에 파일을 만들 때마다 약간의 파일 권한 문제가 발생할 수 있습니다. 적절한 생성 마스크를 사용하고 사용자와 지정된 그룹 간에만 공유하면 이러한 문제를 해결할 수 있습니다 admin
.
답변2
이중 인증
내가 아는 한, 당신이 요청한 것을 성취할 방법이 없습니다.
대안
다중 터미널
언제든지 여러 창을 열어둘 수 있습니다. 나는 종종 여러 개의 탭으로 끝나는 경우가 있는데 gnome-terminal
, 그 중 일부는 다른 시스템의 다른 계정에 로그인되어 있고 다른 일부는 여전히 내 로컬 시스템에만 있습니다.
스크린과 TMUX
또 다른 옵션은 사용 방법을 배우는 것입니다.screen
또는tmux
이를 통해 창 사이를 앞뒤로 전환할 수 있습니다. 여러 탭이 있는 것 외에도 꽤 많이 사용합니다 gnome-terminal
.
이 접근 방식의 또 다른 이점은 터미널 세션을 저장하기 위해 원격 시스템과의 연결을 끊었다가 나중에 다시 연결할 수 있다는 것입니다.
대체 sudo 작업 흐름
이 트릭을 사용하면 환경의 별칭에 액세스할 수 있습니다. 별칭을 다음과 같이 설정하세요.
$ alias sudo='sudo '
노트:명령 뒤에 공백이 있습니다. 그때부터는 sudo
제대로 작동하고 문제 없이 사용자의 별칭을 사용할 수 있습니다(일반적으로 루트 권한으로).
더작동 방식에 대한 세부정보여기에서 찾을 수 있습니다.
발췌
별칭 값의 마지막 문자가 공백이나 탭인 경우 별칭 뒤의 다음 명령 단어도 별칭 확장을 확인합니다.
다음 별칭을 사용하여 환경의 .profile을 로드할 수도 있습니다.
$ alias sudo='sudo su -i ENV=/home/myuser/.profile'
또 뭐야?
귀하가 겪고 있는 작업 흐름은 Unix 환경이 작동하는 방식과 정확히 같습니다. 따라서 이에 적응하고 반복적인 작업을 스크립트나 별칭으로 작성하여 나타나지 않도록 하는 것이 좋습니다.
시스템 계정(예: 루트)에 로그인할 때 특정한 것이 필요하다고 생각되면 동일한 높은 권한을 가진 다른 사람들과 협력하여 해당 계정 내의 특정 표준에 동의할 수 있습니다.
바로가기와 별칭을 생성하는 경우에는 그렇게 할 수도 있고 그렇게 해야 효율적일 수도 있습니다.