시스템 관리자로서 언제든지 일정한 시스템 유지보수를 수행하게 될 것입니다. 때때로 시스템에 문제가 발생하여 문제를 해결하기 위해 시스템을 중지해야 할 수도 있습니다. 어떤 상황이든지, 일반 사용자가 시스템에 연결하지 못하도록 막는 것이 좋은 아이디어입니다.
관련 기사: 리눅스에서 SSH 루트 로그인 비활성화 및 SSH 액세스 제한
이 기사에서는 리눅스에서 /etc/nologin 파일 및 nologin 쉘을 사용하여 일반 사용자 로그인을 차단하는 방법에 대해 설명하겠습니다. 또한 사용자에게 실제로 무슨 일이 일어나고 있는지 설명하는 메시지를 설정하는 방법을 살펴보겠습니다.
/etc/nologin 파일을 사용하여 사용자 로그인 차단하는 방법
/etc/nologin 파일의 주요 기능은 종료 프로세스 중에 시스템에 로그인하려는 사용자에게 메시지(파일에 저장된)를 표시하는 것입니다.
사용자에게 메시지가 표시된 후에는 로그인 프로시저가 종료되어 사용자가 시스템에 로그인할 수 없게 됩니다.
이를 사용하여 수동으로 파일을 만들어 사용자 로그인을 차단할 수 있습니다.
# vi /etc/nologin
아래의 메시지를 파일에 추가하면 시스템에 로그인하려는 사용자에게 표시됩니다.
The Server is down for a routine maintenance. We apologize for any inconvenience caused, the system will be up and running in 1 hours time. For more information, contact the system admin [email protected].
이제 모든 작동 여부를 테스트할 수 있습니다. 아래 화면 캡처에서 볼 수 있듯이 일반 사용자 tecmint
는 로그인할 수 없습니다.

nologin 쉘을 사용하여 사용자 로그인 차단하는 방법
이 방법은 조금 다르게 작동합니다. 이것은 사용자가 쉘에 접근하는 것만 차단합니다. 그러나 그가 시스템에 로그인 할 수는 있습니다. 예를 들어 ftp와 같은 프로그램을 통해 사용자가 쉘에 접속하지 않고 시스템에 연결할 수 있습니다.
또한 특별한 시나리오에서 특정 사용자의 쉘 액세스를 차단할 수 있습니다.
RHEL/CentOS/Fedora에서
간단히 chsh (change shell) 명령을 사용하여 사용자의 쉘을 /etc/passwd 파일에서 /bin/bash
또는 /bin/sh
와 같은 것에서 /sbin/nologin
으로 변경하여 로그인을 거부합니다.
# chsh -s /bin/nologin tecmint
Debian/Ubuntu에서
여기서는 /bin/false 파일을 사용해야 합니다. 아래 명령은 사용자 tecmint의 쉘을 /bin/false
로 변경하여 (사용자가 로그인 자격 증명을 제공한 후) 아무 작업도 수행하지 않습니다.
$ sudo chsh -s /bin/false tecmint
다음 관련 기사들을 읽으실 수도 있습니다.
- Ubuntu에서 루트 로그인 활성화 및 비활성화하는 방법
- RHEL/CentOS 7에서 잊어버린 루트 사용자 계정 비밀번호 재설정/복구하기
- SFTP 사용자를 홈 디렉터리로 제한하는 방법: chroot 감옥 사용
- Linux에서 로컬, 사용자 및 시스템 전역 환경 변수 설정 및 해제 방법
이상입니다! 이 주제와 관련된 추가적인 아이디어나 질문이 있으시면 아래의 댓글 양식을 활용해 주세요.
Source:
https://www.tecmint.com/block-or-disable-normal-user-logins-in-linux/