Linux에서 사용자가 “로그인 할 수 있는지”어떻게 알 수 있습니까? 사용자를 볼 수 있는데 /etc/passwd, 이는

질문은 간단합니다. 시스템에 로그인 할 수있는 모든 사용자 계정을 나열하고 싶지만 / etc / passwd의 모든 사용자가 “로그인 할 수있는”사용자인지 확실하지 않습니까?

세부:

쉘이 /usr/sbin/nologin/bin/false로 설정된 사용자를 볼 수 있는데 /etc/passwd, 이는 로그인 할 수 없음을 의미합니까?

나는 또한에 대한 사용자의 암호화 된 암호를 설정할 수 있다는 사실을 알고 *!/etc/shadow“비활성 사용자는”또한 사용자 권리 “에 로그인 할 수 없습니다”로 취급해야하므로, 계정을 비활성화?



답변

기술적으로 모든 사용자 -이 많은는 “로그인”의 당신의 정의에 따라 달라집니다 존재/etc/passwd& /etc/shadow에 “유효한 사용자”이고 이론적으로 상황의 오른쪽 설정에서 로그인 할 수 있습니다.

당신이 말하는 방법은 다음과 같은 광범위한 범주로 나뉩니다.

  • 사용자는 계정 “고정”
    암호가 설정되어 사용자 *, !(협약이 종종 있었다 일 일에 일치 “잠금 없다”입니다 않습니다, 또는 다른 해시 *LK*“잠금”에 대한을).
    이 사용자는 password를 입력하여 로그인 할 수 없지만 다른 인증 메커니즘 (예 : SSH 키)을 사용하여 로그인 할 있습니다.

  • 는 “비 대화식”쉘이있는 사용자
    계정에 “비 대화 형 쉘을”(이있는 사용자가 /bin/false, /sbin/nologin)에 로그인 할 수 없습니다 대화식으로 – 즉, 그들은에서 명령을 실행하는 프롬프트 쉘을 얻을 수 없다 (이 또한 SSH를 방지 사용자에게 시스템에 SSH 키가있는 경우 명령 실행).
    이러한 사용자는 POP / IMAP 및 SMTP AUTH를 통해 이메일 읽기 / 보내기와 같은 작업을 수행하기 위해 여전히 로그인 할 수 있습니다. 쉘을 사용할 필요가없는 사용자 (및 대부분의 “서비스 계정”)에 대해 비 대화식 쉘을 설정하는 것은 일반적으로 좋은 습관으로 간주됩니다.

따라서 “로그인 가능”에 대한 기준에 따라이 중 하나 또는 둘 다를 확인할 수 있습니다.


답변

사용자를 비활성화하고 셸을 / bin / false 또는 이와 유사한 것으로 설정하는 것에는 차이가 있습니다.

쉘을 / bin / false로 설정하면 사용자는 쉘을 얻을 수 없지만 로컬 사용자가 다른 용도 (메일 인증, ftp 등)로 사용되는 경우에도 시스템에 로그인 할 수 있습니다. 사용자를 비활성화하면 로컬 사용자를 사용하는 서버 서비스를 사용할 수 없습니다.


답변

이외에도 여러 가지 방법을 사용하여 비밀번호를 올바르게 입력하더라도 시스템에서 사용자가 잠길 수 있습니다.

/etc/security/access.conf를 사용하여 로그인 할 수있는 사람을 제한 할 수 있습니다.

특정 사용자를 제한하거나 필요에 따라 로그인 동작을 수정하도록 구성 할 수있는 많은 PAM 모듈이 있습니다. (즉, 서버의 홈 디렉토리가 로그인을 허용하지 않습니다.)