우리는 시스템 간 파일 전송, 모니터링 등과 같이 세분화된 권한이 필요한 자동화된 작업을 위해 여러 사용자 계정을 만들었습니다.
이러한 "사용자"가 셸을 갖지 않고 로그인할 수 없도록 이러한 사용자 계정을 어떻게 잠글 수 있습니까? 우리는 누군가가 SSH를 통해 이러한 사용자 계정 중 하나로 로그인하는 것을 방지하고 싶습니다.
답변1
usermod
이 명령을 사용하여 사용자의 로그인 셸을 변경할 수 있습니다.
usermod -s /sbin/nologin myuser
또는
usermod -s /usr/sbin/nologin myuser
운영 체제가 /sbin/nologin을 제공하지 않는 경우 셸을 /bin/false와 같은 NOOP 명령으로 설정할 수 있습니다.
usermod -s /bin/false myuser
답변2
로그인 셸을 변경한다고 해서 반드시 사용자 인증이 차단되는 것은 아닙니다(일부 검사에서 사용자 셸이 언급되는 서비스 제외 /etc/shells
).
사람들은 여전히 시스템이 UNIX 사용자에게 제공하는 다양한 서비스에 대해 인증을 받을 수 있으며, 임의의 명령을 직접 실행할 수 없더라도 특정 작업을 수행할 수 있는 권한을 계속 부여받을 수 있습니다.
셸을 변경하거나 셸 /bin/false
을 /usr/sbin/nologin
실행하는 데 사용할 수 있는 서비스(콘솔 로그인, ssh, telnet, rlogin, rexec...)에서 명령을 실행하지 못하게 하여 영향을 미치게 됩니다.승인하다특정 서비스에만 사용할 수 있습니다.
이를 통해 여전히 포트 전달( 예 ssh
: .
passwd -l
비밀번호 인증은 비활성화되지만 사용자는 여전히 다른 인증 방법(예: )을 사용할 수 authorized_keys
있습니다 ssh
.
pam
적어도 Linux에서는 이 모듈을 사용하여 pam_shells
허용된 셸(참고자료에 언급된 셸)을 사용하는 사용자에게 인증 또는 권한 부여를 제한 할 수 있습니다 /etc/shells
. 인증 을 위해서는 ssh
인증( ) 수준에서 이 작업을 수행해야 합니다.account
sshd
pam
또한다른 인증 방법(예: )에 연결 하거나 authorized_keys
(예: 및 친구) sshd_config
의 지침을 사용하여 이를 수행할 수 있습니다./etc/ssh/sshd_config
AllowUsers
그러나 전역 pam 인증에 일부 제한 사항을 추가하면 cron
이러한 사용자로 작업이 실행되지 않을 수 있습니다.
답변3
먼저 비활성화된 비밀번호를 사용하세요 passwd -l username
.
man
for 옵션에 대한 페이지 도 참고하세요 .passwd
-l
-l, --lock
Lock the password of the named account. This option disables a password by changing it to a value which matches no
possible encrypted value (it adds a ´!´ at the beginning of the password).
Note that this does not disable the account. The user may still be able to login using another authentication token
(e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's
expire date to Jan 2, 1970).
Users with a locked password are not allowed to change their password.
답변4
chsh 명령을 사용할 수 있습니다.
~# chsh myuser
필요에 따라 새 셸 세부정보를 입력합니다.
Login Shell [/bin/sh]: /bin/nologin
또는 더 짧은 버전:
~# chsh myuser -s /bin/nologin