Ubuntu 22.04.3 LTS에서 LDAP 사용자의 자격 증명을 사용하여 로그인하면 testuser
몇 가지 다른 프로그램에서 디렉터리 경로가 $HOME
바뀌지 않습니다 ~
(로컬 사용자의 경우와 마찬가지로).
몇 가지 예를 들면 다음과 같습니다.
에서는
bash
값이PS1
기본값입니다.\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
하지만 그것은 다음과 같이 표시됩니다
testuser@myhost:/home/testuser$
바꾸다
testuser@myhost:~$
에서
neomutt
메일 디렉터리를 나열하는 왼쪽 열에 전체 경로를 표시합니다./home/testuser/Mail/mailbox1
바꾸다
~/Mail/mailbox1
그러나bash
$ echo $HOME
/home/testuser
그래서 이 env
변수는 HOME
어느 정도 인식이 됩니다.
무엇이 문제일까요?
고쳐 쓰다
LDAP 사용자를 관리하는 데 사용하는 인증 sssd
:
$ grep passwd /etc/nsswitch.conf
passwd: files systemd sss
LDAP 사용자 및 로컬 사용자에 대한 항목은 매우 유사해 보입니다.
$ getent passwd testuser
testuser:*:<uid>:<gid>:Test User:/home/testuser/:/usr/bin/bash
$ getent passwd localuser
localuser:x:<uid>:<gid>:,,,:/home/localuser:/bin/bash
그리고
$ echo $HOME
/home/testuser/
에 지정된 홈 디렉토리와 일치합니다 getent passwd testuser
.
답변1
문제는 /
LDAP 정의의 후행 문자 입니다 $HOME
.
getent passwd testuser testuser:*:<uid>:<gid>:Test User:/home/testuser/:/usr/bin/bash
로컬 사용자 계정을 사용하여 이를 시연할 수 있습니다.
OHOME="$HOME"
cd "$HOME"
HOME="$HOME/"
cd "$HOME"
HOME="$OHOME"
[ -n "$OHOME" ] && { HOME="$OHOME"; unset OHOME; }
스왑을 홈 디렉토리의 절대 경로에 할당하면 HOME="$HOME/"
이 내용을 볼 수 있습니다 ~
.
답변2
사용자 홈 디렉토리에 대한 LDAP 레코드의 디렉토리 경로 끝에 추가 슬래시가 있는 것 같습니다.
/home/testuser/
바꾸다
/home/testuser
예, 실제로 디렉토리임을 나타내기 위해 디렉토리 이름 끝에 슬래시를 추가하는 것이 일반적입니다. 그러나 이것은 사용자를 위한 추가 장식일 뿐이며 경로 이름의 표준 형식은 아닙니다.
예를 들어, 이 pwd
명령은 슬래시를 추가하지 않고 현재 작업 디렉터리를 반환합니다. 이는 주로 getcwd()
POSIX 준수를 위해 system/libc 호출이 슬래시를 반환하는 방식이기 때문입니다.사용자 레코드( /etc/passwd
LDAP 또는 LDAP)에 저장된 홈 디렉토리 경로 이름은 동일한 형식이어야 합니다.~
이를 통해 간단한 문자열 비교 및 교체 작업을 통해 홈 디렉터리 경로를 교체할 수 있습니다.