비밀번호와 섀도우 파일을 통해 사용자 로그인을 차단하는 방법의 차이점은 무엇입니까?

비밀번호와 섀도우 파일을 통해 사용자 로그인을 차단하는 방법의 차이점은 무엇입니까?

~에서https://unix.stackexchange.com/a/314732/674

사용자 계정과 달리 서비스 계정에는 일반적으로 "적절한" 로그인 셸이 없습니다./usr/sbin/nologin로그인 셸로(또는 과거로 돌아가서/빈/거짓). 또한 서비스 계정은 일반적으로 잠겨 있습니다. 즉, 로그인할 수 없습니다(기존 /etc/passwd 및 /etc/shadow의 경우 다음 방법으로 달성할 수 있음).비밀번호 해시를 * 또는 x와 같은 값으로 설정하세요.).

사용자가 로그인하는 것을 방지하는 여러 가지 방법을 제공하는 것 같습니다.

  • /etc/passwd: nologin, /bin/false, /bin/true ,/dev/null` 쉘 필드;

  • 비밀번호 필드 /etc/shadow: *또는x

그들의 목적의 차이점은 무엇입니까? 그것들은 모두 같은 목적으로 사용됩니까?

감사해요.

답변1

그것들은 다소 다릅니다. 어떤 방법으로 사용자가 비밀번호 없이 로그인할 수 있도록 허용하는 경우(예: SSH 및 인증 키 사용) "잘못된" 비밀번호 해시를 가진 사용자는 여전히 로그인할 수 있습니다. 그러나 유효한 쉘이 없으면 이는 불가능합니다.

반면에 어떤 경우에는 쉘 없이도 사용자에게 특정 액세스 권한이 부여될 수 있습니다(IMAP 또는 SMTP 서버를 생각하고 있습니다). 그러면 "좋은" 비밀번호 해시를 가진 사용자는 유효한 로그인 셸이 없더라도 서비스를 사용할 수 있습니다.

답변2

어떤 일을 하는 방법이 다양하다고 해서 진정한 목적이 있다는 뜻은 아닙니다. 시스템 사용자와 일반 사용자 사이에는 약간의 미묘한 차이가 있습니다.

/usr/sbin/nologin즉시 종료하여 액세스를 거부하도록 설계된 간단한 "셸"입니다. 모든 프로그램은 /etc/shells에 나열되어 있는 한 쉘로 실행될 수 있으며, 프로그램이 즉시 종료되면 사용자는 시스템에 대한 액세스를 잃게 됩니다. 그렇기 때문에 비슷한 것도 /bin/false작동합니다.

섀도우 파일에서 별표를 비밀번호로 사용하는 것은 Linux가 잠긴 계정 비밀번호를 나타내는 것과 정확히 같습니다. 루트로 실행 하면 passwd -l username이 방법을 사용하여 계정이 잠깁니다.

또 다른 방법은 만료 날짜를 1로 설정하여 계정을 만료시키는 것입니다. 이는 다음 명령을 실행하여 수행할 수 있습니다.

usermod -L -e 1 username

관련 정보