일반적인 Linux 시스템에는 시스템에 대한 실제 사용자 계정뿐만 아니라 다양한 시스템 계정도 있습니다.
/etc/passwd
계정을 정의할 수 있는 파일(예: 데몬)이나 기타 리소스가 있나요 ?
계정이 서비스 계정으로 위장될 수 있다는 이야기를 듣고 내 컴퓨터에서 비슷한 계정을 찾아보려고 합니다.
답변1
데몬 사용자는 실제 사용자와 동일한 파일에 나열됩니다. " /etc/passwd
데몬과 유사한 파일"은 /etc/passwd
.
인간과 시스템 사용자 사이에는 공식적인 정의가 없습니다. 커널은 신경 쓰지 않습니다(UID 0을 가진 사용자에게 많은 권한을 부여하는 것 외에는). 대부분의 관리 명령도 상관하지 않습니다. 몇 가지 일반적인 차이점은 다음과 같습니다.
- 인간 사용자는 "John Doe"와 같은 실제 이름을 갖는 반면, 시스템 사용자는 "Nasal daemon"과 같은 설명적 이름을 갖거나 전혀 갖지 않습니다.
- 인간 사용자는 실제 로그인 쉘(예:
/bin/sh
또는/bin/bash
또는/bin/csh
)을 가지고 있습니다. 일부 시스템 사용자는 쉘을 가지고 있지만(거의 항상/bin/sh
), 사용 방법에 따라 다른 시스템 사용자는 그렇지 않습니다(예: 쉘이su foo
필요함 ).foo
- 인간 사용자는 일반적으로 비밀번호를 가지고 있지만 항상 그런 것은 아닙니다. 예를 들어 원격 사용자만이 SSH 키만 가질 수 있습니다. 최신 unice에서는 비밀번호가
/etc/passwd
다른 파일에 없습니다/etc/shadow
. /home
인간 사용자의 홈 디렉토리는 일반적 으로 (또는 일부 사이트별 위치) 에 있는 반면, 시스템 사용자의 홈 디렉토리는 일반적으로 위치가 없거나/home
존재하지 않을 수도 있습니다(예외가 있음).- 대부분의 사이트에서는 시스템 사용자에 대한 사용자 ID 범위를 지정하고 인간 사용자에 대해서는 분리된 범위를 지정합니다. 일반적으로 100–65533 또는 500–65533 또는 1000–65533이 예약되어 있으며 대부분의 배포판은 500 또는 1000부터 시작하는 실제 사용자 ID를 할당하도록 설정됩니다.
여러 대의 컴퓨터가 계정을 공유하는 사이트에는 일반적으로 사용자 목록이 포함된 중앙 서버가 있습니다.국정원또는LDAP. passwd
항목/etc/nsswitch.conf
사용자 정보를 찾을 위치를 지정합니다. 시스템 사용자가 로컬에 있고 /etc/passwd
네트워크 전체 데이터베이스에 실제 사용자가 있는 것이 일반적이지만 때로는 네트워크 전체 데이터베이스에 시스템 사용자가 있고(일관된 UID를 강제하고 서버 및 데이터 복제를 용이하게 하기 위해) 사람이 있는 경우도 있습니다. 로컬 파일의 사용자(네트워크가 중단되더라도 로그인 상태를 유지함)
시스템 사용자로 가장하는 사람이 액세스할 수 있는 계정은 일반적으로 실제 이름이 없지만 로그인 셸, 비밀번호 세트 또는 SSH 키는 물론 시스템 전체 사용자 ID가 있습니다. 실제로 실제 시스템 계정을 사용하는 것이 더 나은 변장이며 해당 계정을 삭제하면 일부 서비스의 작동이 중지됩니다. 그러나 잠재적인 공격을 탐지하기 위해 엄격하고 빠른 규칙을 가질 수는 없습니다. 정의에 따르면 공격자는 규칙을 따르지 않습니다.
답변2
별도의 사용자 정의 파일을 가질 이유가 없습니다. 시스템 사용자와 실제 사용자는 기술적으로 분리되지 않지만 UID 범위를 획득하여 조직적으로 분리됩니다. 문서를 살펴보십시오 /etc/login.defs
. 내 openSUSE에는 다음 항목이 있습니다.
SYSTEM_UID_MIN 100
SYSTEM_UID_MAX 499
UID_MIN 1000
UID_MAX 60000
배포 도구는 이러한 값을 사용하여 두 그룹을 구별합니다. 단, UID 300으로 사용자 계정을 생성하면 로그인 메뉴에 나타나지 않을 수 있으나, 다른 계정과 마찬가지로 사용할 수 있습니다.
답변3
사용자 계정과 시스템 계정을 정말로 분리하고 싶다면(다른 게시물의 댓글을 읽어보면 이에 대해 궁금해하실 것 같습니다), 모든 시스템 사용자를 files
데이터베이스(예: /etc/passwd)에 보관하고 두 번째 데이터베이스에 사용자를 추가합니다(LDAP를 수행하는 것과 유사).
이를 위해 Berkeley DB NSS 모듈(glibc라는 추가 glibc 패키지를 통해 많은 시스템에서 사용 가능 nss_db
)을 사용할 수 있습니다. 어떤 OS를 사용하고 있는지 잘 모르겠지만 이 사이트에서는 Linux에 대한 몇 가지 정보를 제공합니다.http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt
문서가 광범위하지 않기 때문에 이것은 마음이 약한 사람을 위한 것이 아니지만, 이와 같은 것이 어떻게 작동하는지 더 자세히 알고 싶다면 시도해 보는 것이 재미있을 것입니다. (@Hauke Laging의 자체 구현에 대한 조언 또한 훌륭합니다).
답변4
대부분의 데몬은 루트로 실행되며 일부(보안상의 이유로 해를 끼치는 능력을 제한하기 위해) 자체 사용자로 실행됩니다. /etc/passwd
파일 에 나열되어 있습니다 . 대부분의 배포판은 단서를 제공하기 위해 "시스템 사용자"의 UID를 500 또는 1000과 같은 특정 값으로 제한합니다. 일부 데몬에는 "데몬"을 의미하는 GECOS(사용자 설명) 항목이 있고, 다른 데몬에는 이상한 쉘이 있습니다. 그러나 NFS 및 기타 목적을 위한 가상 사용자도 있습니다.