리눅스 계열의 시스템에서 사용자 계정의 쉘(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"이고 파일을 생성할 경우 로그인 즉시 출력이 변경 됩니다.
This account is currently not available.
[root@feccle ~]# echo "로그인이 금지된 계정입니다. 관리자에게 문의하세요." > /etc/nologin.txt
[root@feccle ~]# su mysql
로그인이 금지된 계정입니다. 관리자에게 문의하세요.
'시스템(Linux)' 카테고리의 다른 글
SSSD (System Security Services Daemon) 에 대해 알아보겠습니다. (0) | 2025.02.03 |
---|---|
hostid 에 대해 알아보겠습니다. (0) | 2025.02.02 |
journalctl 에 대해 알아보겠습니다. (0) | 2025.02.01 |
sed(Stream Editor)에 대해 알아보겠습니다. (0) | 2025.01.31 |
Local Repository 설정 변경에 대해 알아보겠습니다. (0) | 2025.01.30 |