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

pampam_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 

댓글

Answer

/sbin/nologin가 셸로 설정된 경우 (사용자의 경우) 셸에 로그인하면 “현재 계정을 사용할 수 없습니다.”라는 정중 한 메시지가 표시됩니다.이 메시지는 /etc/nologin.txt 파일로 변경할 수 있습니다.

/bin/false는 호출 될 때 false를 반환하는 즉시 종료되는 바이너리 일 뿐이므로 false를 쉘 로그로 가진 사람이있을 때 false가 종료되면 “즉시 로그 아웃됩니다. 셸을 /bin/true로 설정하면 다른 사람이 로그인하지 못하도록하는 것과 동일한 효과가 있습니다. 하지만 false는 아마도 true보다 규칙으로 사용됩니다. t 사람이 “껍질이 없다”는 개념을 전달합니다.

nologin “의 man 페이지를 보면 4.4 BSD (1990 년대 초반 ) 그래서 false가 생성 된 지 오래되었습니다. false를 셸로 사용하는 것은 아마도 UNIX 초창기의 관습 일 것입니다.

nologin는 로그인을 시도하는 사용자에게 사용자 지정 가능한 메시지가 제공되는보다 사용자 친화적 인 옵션이므로 이론적으로는 사용하고 싶을 것입니다. 그러나 nologinfalse 모두 셸이없고 SSH를 사용할 수없는 동일한 최종 결과를 갖습니다.

댓글

  • /usr/sbin/nologin Debian 기반 배포판
  • 최소한 BSD 구현도 기록합니다. 로그인은 opensource.apple.com/source/system_cmds/system_cmds-735/ … 에 표시된대로 syslog를 시도합니다. , / bin / false는 ' 아무것도 기록하지 않는 반면
  • 이것은 놀라운 대답이며 여기에 훌륭한 역사가 제시되어 있습니다. Mark!
  • /etc/nologin.txt 사용자 지정 메시지 기능은 Ubuntu에서 사용할 수 없습니다.

Answer

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

( “유효”는 종료 상태는 0이지만 /etc/shells도 포함될 수 있으며 시스템, FTP 소프트웨어 및 구성에 따라 다를 수 있습니다.)

설명

h3>

  • 예, '는 아마도 pam을 사용하는 ftp 프로그램의 일부일 것입니다. 그리고 pam은 말했듯이

. 추측 해봐요 … 제가 틀릴 수도 있습니다.

  • 우분투 8.04와 14.04를 모두 확인했습니다. nologin 명령은 false와 유사한 상태 1로 종료되며 true, false 또는 nologin은 / etc / shells에 포함되지 않습니다. 그렇다면 사용자는 chsh를 사용하여 그러한 셸을 선택하고 자신의 계정에서 자신을 잠글 수 있습니다.
  • 답변

    /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를 사용하는 것이 일반적 이었지만 사용자가 로그인하지 않기 때문에 혼란 스러울 수 있습니다. 시작된 이유를 알 수 있습니다.

    댓글

    • /bin/true/bin/false는 항상 쉘 스크립트에서 얻을 수있는 것은 아닙니다. zsh truefalse는 내장되어 있으며 bash/bin/* 버전

    을 사용합니다.

    답변

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

    유용성 측면에서 nologin는 실제 사람이 영어를 구사합니다. 보안 측면에서는 차이가 없습니다.

    댓글

    • false 실제 사용자가없는 시스템 계정을위한 것이며 nologin는 비활성화 된 계정을위한 것입니다.
    • OS는 무엇입니까? Centos nologin 버전은 인수를받지 않지만 /etc/nologin.txt에서 메시지를 읽을 수 있습니다.

    Answer

    Linux에서 /sbin/nologin util-linux 프로젝트에서 가져 오는 반면 /bin/false GNU Coreutils 의 일부입니다. 이들은 다른 역할을 수행하며 nologin은 다음을 가진 사람들을 위해 메시지를 인쇄 할 수있는 옵션이 있습니다. 로그인하고있는 셸입니다. Linux 명령은 BS에서 가져옵니다. D, 서로 다른 오랜 역사를 가지고있는 것 같습니다. FreeBSD false는 단순히 1 을 반환하는 반면 nologin TTY에서 실행되고 로그인 시도 중에 syslog에 메시지를 전송하는지 확인하십시오. Linux 버전은 조금 더 복잡합니다 (false –help의 출력을 국제화하여 모든 종류의 재미있는 작업을 수행하지만 기본적으로 동일한 방식으로 수행합니다.

    Answer

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

    명령 줄에서 시도해보세요.

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

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

    답변

    동일한 프로그램 일 수도 있지만 의미가 다릅니다. 프로그램 이름이 모든 것을 알려줍니다.

    • / bin / false는 거짓 값을 반환하기위한 것입니다. 프로그램으로 실행됩니다.
    • / bin / nologin은 계정에 로그인이 허용되지 않음을 사용자에게 알리기위한 것입니다. (로그인 셸을 사용합니다.)

    Answer

    둘 다 거의 동일한 작업을 수행하지만 /bin/false는 권한이없는 사용자에게 유용합니다. 반면에 /sbin/nologin는 권한이있는 사용자를위한 것입니다.

    댓글

    • 어떻게 했습니까? 결론에 도달 했습니까?
    • 아마 /etc/passwd를 조사했을 것입니다. 방금 새로 설치된 데비안 스트레치의 /etc/passwd를 살펴 보았습니다. 이 상자에서 거의 모든 시스템 계정 (사용자 ID < 1000)에는 몇 가지 예외를 제외하고 /usr/sbin/nologin가 쉘로 있습니다. @pythondetective '의 답변에 동의하지 않습니다. 나는 그저 그를이 결론에 이르게 한 것이 무엇인지 추측하고있다. 하지만 제 의견은 조금 늦었습니다.
    • 아니요! 기본 로그인 셸은 권한과 다릅니다.

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다