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
댓글
- 로그인 셸로 / usr / sbin / nologin이 보안 목적으로 사용됩니까?
- ' m 궁금합니다. / bin / false가 " 1 " 반환 코드를 반환하는 데 21k 코드를 사용하는 이유! (그리고 / sbin / nologin은 4.7k 밖에 걸리지 않습니다)
- 읽는 데 유용합니다. / sbin / nologin과 / bin / false의 차이점은 무엇입니까?
- @MarkStewart 너무 늦었지만 읽기를 원할 수도 있습니다. 왜 참과 거짓이 그렇게 큰가? 및 리눅스 용 정말 틴시 한 ELF 실행 파일 생성에 대한 회오리 바람 튜토리얼 .
- @nxnev 그렇습니다. ' ELF의 오버 헤드에 대해 생각하지 않았습니다. 그리고 저의 예전 IBM 시절부터 간단한 하나의 연산 코드 어셈블리 명령어 인 IEFBR14 프로그램이있었습니다. BR 14-레지스터 14로 분기하여 레지스터 14에있는 값으로 설정된 리턴 코드로 프로그램을 종료합니다!
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
는 로그인을 시도하는 사용자에게 사용자 지정 가능한 메시지가 제공되는보다 사용자 친화적 인 옵션이므로 이론적으로는 사용하고 싶을 것입니다. 그러나 nologin
및 false
모두 셸이없고 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
true
및false
는 내장되어 있으며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 '의 답변에 동의하지 않습니다. 나는 그저 그를이 결론에 이르게 한 것이 무엇인지 추측하고있다. 하지만 제 의견은 조금 늦었습니다. - 아니요! 기본 로그인 셸은 권한과 다릅니다.