시스템(Linux)

/etc/passwd 파일에서 false와 nologin의 차이점에 대해 알아보겠습니다.

forward error correction Circle 2025. 2. 2. 12:25
반응형


리눅스 계열의 시스템에서 사용자 계정의 쉘(Shell) 설정은 /etc/passwd 파일에 저장됩니다.

특정 계정의 쉘이 /bin/false 또는 /sbin/nologin으로 설정될 경우, 해당 계정은 로그인할 수 없습니다.

[root@feccle ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:997:993:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
sssd:x:996:992:User for sssd:/:/sbin/nologin
cockpit-ws:x:995:991:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:994:990:User for cockpit-ws instances:/nonexisting:/sbin/nologin
chrony:x:993:989::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
test1:x:1000:1000::/home/test1:/bin/bash
test2:x:1001:1001::/home/test2:/bin/false
unbound:x:992:988:Unbound DNS resolver:/etc/unbound:/sbin/nologin
setroubleshoot:x:991:987::/var/lib/setroubleshoot:/sbin/nologin
mockbuild:x:990:984::/home/mockbuild:/bin/bash


/bin/false 와 /sbin/nologin 에 대해 두 가지는 동작 방식과 용도에 대해 알아보겠습니다.


1. /bin/false

 Ⅰ. 기능

   □  모든 로그인을 즉시 거부하며, 아무런 메시지도 출력하지 않음.

 Ⅱ. 동작 방식

   □ 사용자가 SSH, 콘솔 또는 기타 방식으로 로그인 시도하면 즉시 로그아웃됨.
   □ 로그인 셸이 실행되지 않음.
 Ⅲ. 사용 예시
   □ 시스템 계정(예: ftp, nobody, www-data)이 로그인을 하지 못하도록 설정할 때
   □ 계정을 비활성화할 때

 Ⅳ. 예제 (/etc/passwd)

[root@feccle ~]# cat /etc/passwd | grep /bin/false
test2:x:1001:1001::/home/test2:/bin/false

Ⅴ.  생성방법

[root@feccle ~]# useradd -m -s /bin/false [계정명]

-m : 홈 디렉토리 생성
-s /bin/false : 로그인을 차단

Ⅵ. 변경 방법

[root@feccle ~]# usermod -s /sbin/nologin [계정명]  
[root@feccle ~]# usermod -s /bin/false [계정명]  
[root@feccle ~]# usermod -s /bin/bash [계정명]  

usermod -s /sbin/nologin [계정명] : /sbin/nologin 로그인 쉘을 변경 및 로그인 차단
usermod -s /bin/false [계정명] : /bin/false 로그인 쉘을 변경 및 로그인 차단
usermod -s /bin/bash [계정명] : /bin/bash 로그인 쉘을 변경 및 로그인 허용

 

2. /sbin/nologin

 Ⅰ. 기능

   □ 로그인 시도를 거부하지만, 사용자에게 "This account is currently not available." 메시지를 출력함.
 Ⅱ. 동작 방식
   □ 사용자가 로그인 시도를 하면 접속이 거부되며 메시지를 표시
   □ SSH 또는 콘솔 로그인 시 /etc/nologin.txt에 저장된 메시지를 표시할 수도 있음
 Ⅲ. 사용 예시
   □ 일반 사용자 계정의 로그인을 비활성화하지만, 계정을 삭제하지 않을 때
   □ 시스템 서비스 계정(예: postfix, apache, mysql)이 직접 로그인하지 못하도록 설정할 때
 Ⅳ. 예제 (/etc/passwd)

[root@feccle ~]# cat /etc/passwd | grep /sbin/nogin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin

Ⅴ.  생성방법

[root@feccle ~]# useradd -m -s /sbin/nologin [계정명]

-m : 홈 디렉토리 생성
-s /sbin/nologin : 로그인을 차단

Ⅵ.  변경 방법

[root@feccle ~]# usermod -s /sbin/nologin [계정명]  
[root@feccle ~]# usermod -s /bin/false [계정명]  
[root@feccle ~]# usermod -s /bin/bash [계정명]  

usermod -s /sbin/nologin [계정명] : /sbin/nologin 로그인 쉘을 변경 및 로그인 차단
usermod -s /bin/false [계정명] : /bin/false 로그인 쉘을 변경 및 로그인 차단
usermod -s /bin/bash [계정명] : /bin/bash 로그인 쉘을 변경 및 로그인 허용

3. /bin/false vs /sbin/nologin 차이점 비교

항목 /bin/false /sbin/nologin
동작 방식 즉시 로그아웃 로그인 거부 메시지 표시
로그인 시 메시지 없음 "This account is currently not available." 출력
사용 목적 시스템 계정이나 비활성 계정 서비스 계정의 로그인 제한
SSH 로그인 차단됨 (즉시 종료) 차단됨 (메시지 출력 후 종료)

보안이 우선시 되고 출력 메시지를 차단하기 위해서는 /bin/false 방식으로 사용하며, 보통은 메시지를 출력하기 때문에 조금 더 유연한  /sbin/nologin을 더 많이 사용됩니다. 필요하면 /etc/nologin.txt에 커스텀 메시지를 설정이 필요합니다.

4. nologin 메시지 커스텀 설정 (/etc/nologin.txt)

ⅰ. /etc/nologin.txt 이란?

 /etc/passwd 파일 안에 /sbin/nogin 으로 설정되어있는 계정들로 변경 할 경우 로그인 거부 메시지를 정의할 수 있습니다.

 Default(기본값)은 "This account is currently not available"이고 파일을 생성할 경우 로그인 즉시 출력이 변경 됩니다.

ⅱ. 수정 전
[root@feccle ~]# su mysql
This account is currently not available.
 
ⅲ. 수정 후
[root@feccle ~]# echo "로그인이 금지된 계정입니다. 관리자에게 문의하세요." > /etc/nologin.txt
[root@feccle ~]# su mysql
로그인이 금지된 계정입니다. 관리자에게 문의하세요.
반응형