
위의 질문에서 알 수 있듯이 SSH 액세스용으로 설계된 RHEL 6 서버가 있는데 루트는 설계상 SSH를 통해 로그인할 수 없습니다. 로컬 서버에 있을 때 루트로 로그인할 수 있지만 루트로만 로그인할 수 있습니다. 사용자로 로그인하려고 하면 화면에 다음 메시지가 빠르게 깜박입니다.
Last Login: Mon Aug 24 08:24:52 on tty1
no directory: /home/user1!
logging in with home="/"
login: no shell: Permission denied
에 쉘이 없기 때문에 쉘 없음이 표시됩니다 /
.
하지만 나에게 정말 혼란스러운 점은 홈 디렉토리가 실제로 존재하고 유효한 쉘을 포함하며 내가 알 수 있는 바로는 권한이 부여된다는 것입니다( 755
). 이는 이 서버 인스턴스에 존재하고 생성된 모든 사용자에게 공통적입니다. 사용자를 만들 때 홈 디렉토리에 대한 경로를 정의하거나 기본값을 담당하고 자동으로 할당하는 것은 중요하지 않은 것 같습니다.
보안 로그나 메시지 로그에서 이상한 점을 발견하지 못했습니다. 단지 사용자가 성공적으로 로그인했다는 것뿐입니다(로그인했지만 쉘 없이는 아무것도 할 수 없습니다).
이 시점에서 다시 설치할 필요가 없기를 바라고 있지만 이것이 유일한 옵션이라면 손실될 서버의 데이터가 거의 없습니다.
내가 운 없이 일주일 동안 검색하고 시도했기 때문에 어떤 도움이라도 대단히 감사하겠습니다.
편집하다:
처음에 사용자를 추가하기 위해 이 명령을 사용했는데 useradd user1
, 이로 인해 위에서 사용한 문제가 발생했습니다.
mkdir /home/user1 && useradd user1 -d /home/user1 && chown -R user:user1 /home/user
명령 을 실행하면 다음과 같은 결과 cat /etc/passwd | grep user1
가 나타납니다.
user1:x:513:517::/home/user1:bin/bash
명령 을 실행하면 ls -l /home
해당 사용자에 대한 항목은 다음과 같습니다.
drwxr-xr-x. 4 user1 user1 4096 Aug 19 17:03 user1
답변1
명령을 실행하여 문제를 해결할 수 있었습니다.
for p in $(rpm -qa); do rpm --setperms $p; done
서버를 다시 시작합니다. 다시 시작한 후에는 생성된 사용자로 로그인할 수 있을 뿐만 아니라 GUI도 다시 사용할 수 있었습니다. 이는 시스템 어딘가에 손상된 파일 권한이 있음을 나타냅니다. 그들이 어떻게 타락했는지는 모르겠지만 이제 모든 것이 작동합니다.
답변2
귀하의 설정에서 제가 볼 수 있는 유일한 문제는 귀하의 passwd 파일에 있습니다. user1:x:513:517::/home/user1:bin/bash
로 변경해 보세요
user1:x:513:517::/home/user1:/bin/bash
.
답변3
올바른 옵션이 전달되면 홈 디렉토리를 생성 해야 useradd
하며 수동으로 생성할 필요가 없습니다(또는 생성해서는 안 됩니다). 사용자를 올바르게 제거하고 다시 생성하려면 다음을 나열된 순서대로 실행하는 것이 좋습니다.
userdel -f -r user1
useradd -m user1
-d
참고: 이 경우 기본값이 적용되므로 옵션을 전달할 필요가 없습니다 /home/user1
.
답변4
CentOS 6 시스템에서도 이와 동일한 문제가 발생했습니다. 이는 SELinux 보안 컨텍스트 라벨이 잘못 지정된 /home의 파일에 문제가 있었습니다. 위의 댓글 작성자 중 한 명인 Michael Hampton은 /var/log/audit/audit 로그를 확인하라고 말했습니다. 나는 그의 조언을 따랐고 여기서 SELinux 문제가 발생하고 있음을 발견했습니다. 나를 위해 해결한 솔루션은 다음과 같습니다.
sudo restorecon -Rv /home
그러면 홈 디렉터리의 모든 파일에 대한 기본 보안 컨텍스트 레이블이 반복적으로 복원됩니다. 그 후 공개 키를 통한 SSH 액세스가 복원되었습니다.