다양한 사용자에 대해 별도의 /home 파티션 설정

다양한 사용자에 대해 별도의 /home 파티션 설정

나는 별도의 /root 및 /home 파티션이 있는 데비안 시스템을 가지고 있습니다. /home 파티션에 이미 일부 사용자 계정이 있습니다. 이 시스템에는 다른 사용자 계정이 필요합니다. 문제는 휴대용 USB 디스크용 /home 파티션을 생성하고 싶다는 것입니다.

USB가 연결되어 있지 않으면 로컬 사용자 중 하나로만 로그인할 수 있다는 아이디어입니다. USB가 연결되어 있으면 시스템이 이를 감지하고 USB 파티션을 마운트한 후 구성 파일에 액세스할 수 있도록 PortableUser로 로그인할 수 있도록 허용해야 합니다.

가장 쉬운 방법은 무엇입니까? 저는 두 가지 방법을 생각했습니다.

a) usbdisk/portableUser 디렉터리를 /home/portableUser 디렉터리에 기호적으로 연결합니다.

b) usbdisk는 fstab에서 /home 파티션으로 마운트되어 있는데.. 마운트하고 "local" /home 파티션 사용자 계정에 접근할 수 있나요?

나는 성공하지 못한 채 하루 종일 fstab과 심볼릭 링크를 가지고 놀았습니다. 또한 이 작업을 수행하는 방법에 대한 간단한 설명을 찾을 수 없습니다. bash 명령의 형태로 도움을 주시면 감사하겠습니다... :)

답변1

USB 마운트 지점을 변경하지 마십시오. 대신, 마운트된 USB에 있도록 HOME디렉토리를 변경하기만 하면 됩니다.portableuser

예를 들어, USB 설치가 이라면 /media/portable디렉토리에 사용자 계정을 생성하십시오.HOME/media/portable/portableuser

하지만 로그인이 중단되는 것은 아닙니다 portableuser. 로그인 셸의 변형을 사용하겠습니다. 이것은 유효한 예입니다.

  1. USB 설치가 /media/portable.
  2. portableuser홈 디렉터리 /media/portable/portableuser와 로그인 셸을 사용하여 파일을 만듭니다 /usr/local/bin/bash-if-mounted. 이것은 다음의 항목입니다 /etc/passwd.

    portableuser:x:1004:1004:Portable user:/media/portable/portableuser:/usr/local/bin/bash-if-mounted
    
  3. /usr/local/bin/bash-if-mounted다음과 같이 실행 가능한 쉘 스크립트를 작성하십시오 .

    #!/bin/bash
    #
    # bash-if-mounted
    ################################################################
    #
    name="${0##*/}"
    shell=$(type -p "${name%%-*}" 2>/dev/null)
    
    
    if [[ -d "$HOME" ]]
    then
        [[ -n "$shell" ]] && export SHELL="$shell"
    
        exec "$SHELL" "$@"
        echo "No shell" >&2
    else
        echo "No home directory at $HOME" >&2
    fi
    
    sleep 2
    exit 1
    
  4. /media/portable/portableuser디렉토리가 있거나 없는 상태 에서 테스트되었습니다.

이외의 셸을 사용하려면 bash그에 따라 실행 파일의 이름을 바꾸십시오(예 dash-if-mounted: , zsh-if-mounted).

답변2

요청한대로 불가능할 수도 있습니다.현재의암호.

인증 및 로깅을 수행하는 소프트웨어 툴체인은 자동 마운트를 처리하는 툴체인과 별개입니다.

너 뭐야가능한당신이 할 수 있는 일은 UniounFS-FUSE 및 (bash 가정) bashrc 파일을 사용하여 특정 UUID(또는 기타)를 가진 USB 파일 시스템이 있는지 확인하고 로그인 시 이를 통합 마운트하는 것입니다.

아니면 로그인을 위해 디스크 마운트가 필요하다는 생각을 포기하고 /home/portableUser에 /etc/fstab을 마운트하고 "logout"만 포함하는 .bashrc 파일을 생성하세요. 이렇게 하면 USB 디스크가 마운트되지 않은 경우 로그인하면 즉시 로그아웃됩니다. 마운트된 경우(비공동 마운트 사용) .bashrc는 마운트된 파일 시스템에 의해 마스크되고(테스트 결과 완전히 15년 전의 다른 질문 메모리에서 나온 것임) 로그인이 성공합니다.

또한 PortableUser의 홈 디렉토리는 무엇이든 설정할 수 있습니다. /home에 있을 필요는 없으며 디스크가 일반적으로 마운트되는 어느 곳이든 가능합니다.

답변3

귀하의 모든 응답에 감사드립니다. 결국 문제는 내가 의심했던 것이 아니었습니다. 결과적으로 텍스트 모드 셸에서 시스템에 로그인할 수 있었습니다. 로그인 시 KDE만 정지됩니다. 내 USB 파티션은 내 사무실 컴퓨터에 있는 /home 파티션의 복제일 뿐입니다. 내 사무실 컴퓨터에 Debian Buster가 설치되어 있고(plasmashell 5.14.5 사용) 이를 내 집 노트북인 내 집 컴퓨터에 설치하고 싶습니다. Ubuntu 16이 설치되어 있습니다. 노트북에서 (plasmashell 5.5.5 사용) 이제 나는 이 두 KDE 버전 사이의 일부 비호환성이 내 문제의 원인이라고 생각합니다. 이제 내 집 노트북에 Buster를 설치한 후 fstab에 두 줄을 추가하면 모든 것이 잘 작동하기 때문입니다.

UUID=xxxxxxxxxxxxxx...    /mnt/portableUserUSB  ext4  nofail    0   2
/mnt/portableUserUSB/portableUser /home/portableUser none bind,nofail 0 0

(nofail 매개변수가 중요합니다!)

관련 정보