[unix] / sbin / nologin과 / bin / false의 차이점은 무엇입니까

기술적으로, pam쉘을 확인 하지 않으면 쉘을 사용 pam_shells하지 않으면 실제로 로그인을 막을 수 없습니다. 내 시스템에서는 크기가 다르기 때문에 실제로 무언가를하고 있다고 생각합니다. 차이점은 무엇입니까? 왜 둘 다 존재합니까? 왜 다른 것을 사용합니까?

-rwxr-xr-x 1 root root  21K Feb  4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar  2 14:59 /sbin/nologin



답변

/sbin/nologin그 쉘 사용자가 로그인하면, 그들은 말을 정중 메시지를 얻을 것이다, 쉘로 설정 ‘이 계정은 현재 사용할 수 없습니다를.’ 이 메시지는 파일을 사용하여 변경할 수 있습니다 /etc/nologin.txt.

/bin/falsefalse쉘 이있는 누군가가 로그인하면 false종료 될 때 즉시 로그 아웃 됩니다. 셸을 설정하면 /bin/true다른 사람이 로그인하지 못하게하는 것과 같은 효과가 있지만 셸이 없다는 개념을 전달하는 것이 훨씬 낫기 때문에 false아마도 관습으로 사용됩니다 true.

nologin의 매뉴얼 페이지를 살펴보면 4.4 BSD (1990 년대 초) false에 만들어 졌으므로 오래 전에 만들어졌습니다. false쉘로 사용 하는 것은 아마도 유닉스 초기부터 계속 된 관습 일 것입니다.

nologin보다 사용자 친화적 인 옵션으로, 로그인을 시도하는 사용자에게 사용자 정의 가능한 메시지가 제공되므로 이론적으로 사용하려고합니다. 하지만 모두 nologinfalse누군가가 쉘을 가지고 있지 및에 ssh를 할 수없는 동일한 최종 결과있을 것이다.


답변

일부 FTP 서버는 유효한 쉘이있는 경우에만 FTP 액세스를 허용합니다. /sbin/nologin유효한 쉘로 간주되지만 /bin/false그렇지는 않습니다.

( “유효 함”은 종료 상태가 0임을 의미하지만 /etc/shells시스템, FTP 소프트웨어 및 구성에 따라 다를 수 있습니다.)


답변

/bin/false오류로 종료하는 것 외에는 아무것도하지 않는 프로그램에 명령을 전달해야 할 때마다 사용되는 시스템 명령입니다. 의 동반자 /bin/true입니다. 둘 다 매우 오래된 표준 POSIX 유틸리티이며 정의에 따라 출력을 생성하지 않습니다. true는 때때로 다음과 같이 무한 루프되어야하는 쉘 스크립트에 사용됩니다.

while true; do
    ...
    # Waste time
    if [ $wasted_time -gt 100000 ]; then
        exit 0
    fi
    ...
done

/usr/sbin/nologin쉘을 대체하기 위해 특별히 설계되었으며 로그인 할 수 없다는 불만을 출력합니다. 존재하기 전에 /bin/false더미 사용자 를 위해 사용하는 것이 일반적 이었지만 사용자가 왜 시작했는지 알지 못하기 때문에 혼란 스러울 수 있습니다.


답변

내 컴퓨터에서 nologin인수를 무시하고 항상 같은 메시지를 영어로 표시합니다. /bin/false에 응답 --version하고 --help로 표시되는 언어 $LC_CTYPE. 이러한 외관상의 차이점 외에도 동일한 효과가 있습니다.

nologin영어를 사용하는 실제 사람의 계정에 사용하면 유용성 이 더 좋습니다. 보안 측면에서는 차이가 없습니다.


답변

/ bin / false 작업은 0이 아닌 종료 코드로 종료하는 것입니다.

커맨드 라인에서 시도하십시오 :

$:> /bin/false
$:> echo $?
1
$:>

일부 기관은 비밀번호 파일의 쉘 필드에서 / bin / false를 사용합니다. 사용자가 로그인을 시도하면 쉘은 / bin / false이므로 즉시 종료됩니다.


답변

리눅스에서는 util-linux 프로젝트 /sbin/nologin에서 나오고 GNU Coreutils의 일부입니다 . 그것들은 다른 역할을 수행하며, nologin은 로그인 한 쉘로 메시지를 가지고있는 사람들을 위해 메시지를 인쇄 할 수있는 옵션을 가지고 있습니다. FreeBSD의는 단순히 1을 반환 그동안, 검사가있어 확인 터미날에서 실행 및 로그인 시도시 syslog에 메시지를 전송합니다. 리눅스 버전은 조금 더 복잡하지만 ( –help의 결과를 위해 국제화로 모든 종류의 재미있는 작업을 수행합니다) 본질적으로 동일한 방식으로 수행합니다./bin/falsefalsenologinfalse


답변

그들은 같은 프로그램이 될 수 있지만 다른 의미를 가지고 있습니다. 프로그램 이름이 모든 것을 알려줍니다.

  • / bin / false는 잘못된 값을 반환하기위한 것입니다. 프로그램으로 실행됩니다.
  • / bin / nologin은 사용자에게 계정에 대한 로그인이 허용되지 않음을 나타냅니다. (로그인 쉘로 사용됩니다.)