저는 오래된 SLES GNU/Linux 시스템에서 작업하고 있습니다. 루트도 없고 고유한 사용자 계정도 없습니다. 여러 사람이 동일한 사용자 계정을 사용합니다(보통 동시에).
이것은 "필수"입니다. 많은 것들이 귀하가 다른 계정이 아닌 해당 계정을 사용하고 있다고 가정하기 때문에 나 자신을 위해 다른 계정을 요청할 수는 없습니다(단일 계정이 아니기 때문에 실제로 중요하지 않음). 다양한 이유 가능). 동시에 나는 내 자신의 쉘 rc 스크립트, VIM 설정, git 또는 Mercurial 설정, 내가 경로에 작성하는 스크립트 등 개인화를 원합니다. 마지막으로 - 다른 사람들이 계정을 어떻게 사용하고 있는지 알 수 있는 방법이 없습니다. 즉, 내가 설정을 변경하거나 내 파일 등을 조작하는 것을 참을 수 없습니다(그들도 같은 일을 하고 싶어할 수 있습니다).
내 질문: 소위 "하위 사용자" 또는 "사용자 내의 사용자" 계정이나 환경을 생성하는 일반적이고 확립된 방법이 있습니까? 일부 도구/스크립트에서 지원됩니까?
답변1
당신을 $HOME
집에서 멀리 떨어지게 하세요
일회성 초기화:
install -d /home/shareduser/subusers/einpoklum
- 모든 적절한 구성 파일과 데이터 디렉터리를 에서 으로 복사/링크
/home/shareduser
합니다/home/shareduser/subusers/einpoklum
.
홈 디렉토리에 할당량이 있는 사람들은 변경되지 않은 파일에 대한 하드 링크와 디렉토리에 대한 심볼릭 링크가 복사하는 것보다 공간 효율적이라는 것을 알고 있습니다.
각 터미널에서 로그인하세요:
export HOME="$HOME"/subusers/einpoklum
XDG_CONFIG_HOME
해당하는 경우 및 을 비슷하게 조정합니다XDG_DATA_HOME
.PATH
필요에 따라 개선을 수행합니다.
그래픽 로그인에 대해 이 작업을 수행하는 것은 많은 데스크톱 프로세스가 시작 시 변경된 환경 변수를 상속해야 하기 때문에 더 복잡합니다. 메커니즘은 데스크톱 및 운영 체제에 따라 다르지만 동일한 목표가 적용됩니다.
HOME
사람들은 이것이 마법이 아니라 단지 환경 변수라는 사실을 종종 잊어버립니다 .
추가 읽기
답변2
서로 다른 두 사람에게 속한 동시 세션이 없다고 가정. 가장 좋은 방법은 다음을 사용하는 것입니다.GNU 저장소이것을 관리하기 위해. Stow는 Linux 생태계에서 가장 이상하고 유용한 패키지 중 하나입니다. 그 역할은 심볼릭 링크 그룹을 체계적으로 관리하는 것입니다.
애플리케이션의 경우 사용자 계정의 홈 디렉터리에서 해당 계정을 사용하는 모든 사람에 대한 도트 파일을 보관하는 디렉터리(예: ~/.people)를 만듭니다. 그런 다음 각 사람은 자신의 도트 파일을 people 디렉터리 아래의 하위 디렉터리에 저장합니다. 예를 들어, Smitty는 vimrc 등을 ~/.people/smitty에 넣습니다. Nora는 모든 설정 파일을 ~/.people/nora 등에 저장합니다.
로그인 시 모든 사람에 대해 실행
(cd ~/.people && stow $name)
여기서 $name은 실행에서 로그오프할 때 해당 사람의 ~/.people 디렉터리 이름입니다.
(cd ~/.people && stow -d $name)
자동화에는 몇 가지 방법이 있습니다. 각 사용자가 로그인 및 로그아웃할 때 실행되는 ~/.login 및 ~/.logout이라는 쉘 스크립트가 있습니다. 이것이 가장 쉬운 방법이 될 것입니다. 그러나 자동화는 혼란을 초래할 수 있습니다. 지난번에 비슷한 설정을 했을 때 누군가 실수로 ~/.ssh/authorized_keys를 교체했습니다. 그래서 내 조언은 이것을 피하는 것입니다.
동시에 여러 명의 사용자가 있는 경우
화려한 발놀림 없이는 그렇게 할 수 있는 확실한 방법이 없습니다. 그러나 구성 목적을 위해 프로그램은 $HOME 환경 변수를 사용하여 홈 디렉토리의 위치를 결정합니다. 가장 좋은 방법은 이전과 같이 ~/.people/$name을 사용하는 것이지만 stow를 사용하여 사용자별로 실행하지 마십시오 HOME="~/.people/$name" bash -l
. 그러면 홈 디렉터리 변수가 각 사용자의 하위 디렉터리로 설정된 새 bash 세션이 생성되고, 새 홈 디렉터리 값으로 정상적으로 로그인한 것처럼 동일한 시작 스크립트가 실행됩니다. 따라서 구성 파일 위치의 $HOME 값을 참조하는 새 bash 인스턴스에서 실행되는 모든 프로그램은 최상위 홈 디렉터리 대신 각 개별 디렉터리를 사용하도록 속입니다. 이 해킹은 매우 취약하고 모든 프로그램에서 작동하지는 않지만 여러 사람이 동시에 사용할 때 할 수 있는 최선의 방법입니다.
답변3
이 설정은 모든 종류의 "재미있는 것"을 요구합니다. 오래된 운영 체제는 알려진 다양한 취약점을 의미하며 엔터테인먼트 가치를 더해줍니다.
이 복잡함을 버리고 각 사용자가 계정을 가지고 있는 일반적인 것을 설정하십시오. 공유를 설정하는 몇 가지 실제적이고 테스트된 방법이 있습니다(공유 리소스에 대한 자체 그룹, ACL 설정).
결국, 이 모든 것을 저글링하는 추가 작업은 아마도 그만한 가치가 없을 것입니다.