많은 사용자가 다른 사용자 이름을 사용하여 연결하는 SFTP 서버가 있습니다. 사용자가 이름 변경을 요청했습니다. 아주 간단한 과정이라고 생각해서 일반적인 방법으로 해봤습니다.
usermod --login new_username old_username
그 이후에는 더 이상 새 이름으로 로그인할 수 없습니다. 사용자가 여러 명이므로 권한을 비교하고 있는데 모든 것이 괜찮아 보입니다. 또한 로그 파일을 확인해 보니 사용자의 비밀번호가 승인된 것으로 나타났습니다. 서비스를 다시 시작했지만 여전히 동일합니다.
- 운영 체제: Centos7.
- 아직 LDAP 서버가 사용되지 않습니다.
- 모든 사용자는 로컬 사용자입니다.
- 이름을 변경한 후에는 이전 사용자 이름으로도 액세스할 수 없습니다.
- 다시 시작하지 않고 서비스만 다시 시작했습니다.
- sshd_config에는 사용자가 아닌 그룹에 대한 규칙이 있습니다. 그룹은 변경되지 않습니다.
이름이 변경된 /etc/passwd 항목은 다음과 같습니다.
newname:x:2108:2000:oldname:/opt/ftp/oldname/:/usr/sbin/nologin
그러나 수동으로 passwd 항목을 다음과 같이 변경하더라도(절박한 시도):
newname:x:2108:2000:newname:/opt/ftp/oldname/:/usr/sbin/nologin
로그인할 수 없습니다.
usermod 명령을 다시 실행하고 사용자 이름을 복원하면 로그인할 수 있습니다.
새 사용자 이름으로 로그인하려면 어떻게 해야 합니까?
답변1
다섯 번째 확인 결과 sshd_config
로그인을 차단하는 그룹 규칙을 발견했습니다.
Match Group ftp
ChrootDirectory /opt/ftp/%u
ForceCommand internal-sftp -u 0002
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory는 기본적으로 로그인 후 사용자 루트 디렉터리가 지정된 디렉터리로 변경되며, 이 디렉터리는 로그인한 사용자 이름(%u)과 동일한 이름을 가져야 함을 알려줍니다. 그렇지 않기 때문에 로그인이 거부됩니다. 사용자 이름과 일치하도록 디렉터리 이름을 바꾸면 로그인할 수 있습니다.
안타깝게도 로그 파일에는 이 문제와 관련된 힌트나 오류가 없습니다.