서버를 Debian 8에서 9로 업그레이드한 이후로 bash에서 이상한 동작이 발생했습니다. SSH를 통해 로그인하면 구성 파일이 로드되지 않고 다음 메시지가 나타납니다.
Linux myserver 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64
Last login: Mon Jul 16 22:37:12 2018 from x.x.x.x
-bash-4.4$
return -bash를 실행합니다 echo $0
. 호출되는 시점을 확인하기 위해 /etc/profile, ~/.bashrc에 한 줄을 넣었 echo "sourcing ..."
지만 해당 줄이 전혀 표시되지 않습니다. 그러나 파일을 수동으로 가져오면 텍스트가 표시되고 파일은 정상적으로 가져옵니다.
사용 추적 (여기에서 발견) 어떤 파일이 열려 있는지 확인하려면 모든 프로필이 열려 있는 것을 볼 수 있습니다.
echo exit | strace bash -li |& less | grep '^open'
다음과 같은 결과가 나타납니다.
...
open("/etc/profile", O_RDONLY) = 3
open("/etc/bash.bashrc", O_RDONLY) = 3
open("/etc/profile.d/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
open("/etc/profile.d/bash_completion.sh", O_RDONLY) = 3
...
open("/home/myuser/.bash_profile", O_RDONLY) = 3
open("/home/myuser/.bash_history", O_RDONLY) = 3
open("/home/myuser/.bash_history", O_RDONLY) = 3
...
open("/home/myuser/.bash_logout", O_RDONLY) = 3
open("/etc/bash.bash_logout", O_RDONLY) = -1 ENOENT (No such file or directory)
...
이 문제는 일반 사용자로 로그인할 때만 발생합니다. 일단 루트로 설정하면 구성 파일이 정상적으로 로드됩니다. 지금은 루트만이 이 파일에 액세스할 수 있을 것이라고 생각합니다. 그러나 제가 확인한 모든 것이 그렇게 되어야 하기 때문에 제 자신이 미치고 있습니다.
어떤 팁이나 아이디어라도 대단히 감사하겠습니다.