저는 Ubuntu 12.04 데스크탑 시스템을 실행하고 있습니다. 지금까지 저는 몇 가지 프로그램만 설치했습니다(Sudo 권한이 있습니다).
시스템에서 사용자 목록을 확인할 때 20명이 넘는 사용자와 같은 긴 목록이 표시됩니다. 이러한 사용자는 언제 생성되었습니까(예: 데몬, sys, 동기화, 게임, 펄스 등)? 이 중 어떤 것이 설치되는 새 프로그램과 어떤 관련이 있습니까?
내 시스템에서 프로그램을 실행하면 내 UID를 사용하여 실행되어야 합니다. 하지만 하나 만드는 중메모, 다른 UID(예: 루트, 데몬, avahi, syslog, colord 등)로 실행되는 다른 많은 프로그램이 있습니다. 이러한 프로그램은 어떻게 다른 UID로 시작됩니까?
답변1
사용자 계정은 실제 인간 사용자로서뿐만 아니라 시스템 서비스를 실행하는 데에도 사용되며 때로는 시스템 파일의 소유자로서도 사용됩니다. 이는 인간 사용자 리소스(프로세스, 파일 등) 간의 분리와 시스템 서비스 리소스 간의 분리에는 배후에서 동일한 메커니즘이 필요하기 때문에 수행됩니다.
귀하가 실행하는 프로그램은 일반적으로 귀하의 사용자 ID로 실행됩니다. 그것은 단지 시스템일 뿐이다.악마자신의 계정으로 실행합니다. 데몬이 실행되어야 하는 시기를 나타내는 구성 파일은 데몬이 실행되어야 하는 사용자 또는 데몬이 시작된 후 권한이 없는 계정으로 전환되는지 여부도 나타냅니다. 일부 데몬에는 전체 관리 권한이 필요하므로뿌리계정. 많은 데몬은 특정 하드웨어 장치나 특정 파일에만 액세스하면 되므로 전용 사용자 계정으로 실행됩니다. 이는 보안을 위해 수행됩니다. 이렇게 하면 서비스 중 하나에 버그나 구성 오류가 있더라도 공격자가 해당 서비스가 수행할 수 있는 작업이 아니라 해당 서비스가 수행할 수 있는 작업으로 제한되므로 완전한 시스템 공격으로 이어지지는 않습니다. . 파일 덮어쓰기, 프로세스 모니터링 등의 기능.
Ubuntu에서는 시스템 설치 중에 0-99 범위의 사용자 ID가 생성됩니다. 0은 루트입니다. 1-99 범위의 많은 항목은 기록상의 이유로만 존재하며 해당 항목을 사용하는 특정 로컬 설치와의 이전 버전과의 호환성을 위해서만 유지됩니다(몇 가지 추가 항목은 영향을 미치지 않습니다). 전용 사용자 ID가 필요한 서비스를 설치하거나 제거하면 100~999 범위의 사용자 ID가 동적으로 생성되고 삭제됩니다. 1000 이상의 범위는 인간 사용자나 시스템 관리자가 만든 다른 계정에 적용됩니다. 그룹도 마찬가지다.
답변2
/etc/passwd
?를 확인하여 이 사용자 목록을 찾았다고 가정합니다. 이는 완전히 정상적인 현상입니다. "사용자"는 "실제 사용자"뿐만 아니라 시스템의 특정 영역에 있는 프로그램도 잠그고 변경 내용을 추적할 수 있는 권한 집합을 전달하는 데 사용됩니다(그룹과 동일한 개념).
/etc/passwd
참조용으로 아래에 Raspberry Pi 파일 중 하나를 삽입했습니다 . ntop
파일 하단에 ntop
프로그램(네트워크 모니터링)에서 생성된 사용자가 표시됩니다. 마찬가지로 버그 보고서 등도 마찬가지입니다 sshd
.gnats
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
pi:x:1000:1000:,,,:/home/pi:/bin/bash
sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin
ntp:x:102:104::/home/ntp:/bin/false
statd:x:103:65534::/var/lib/nfs:/bin/false
messagebus:x:104:106::/var/run/dbus:/bin/false
usbmux:x:105:46:usbmux daemon,,,:/home/usbmux:/bin/false
lightdm:x:106:109:Light Display Manager:/var/lib/lightdm:/bin/false
smmta:x:107:110:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
smmsp:x:108:111:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
Debian-exim:x:109:113::/var/spool/exim4:/bin/false
ntop:x:110:115::/var/lib/ntop:/bin/false
답변3
이 사용자는 언제 생성되었습니까?
언급한 경우 시스템 설치 중에 생성됩니다. 이것들사용자 계정모두 전통적이며 일부는 수십 년 전으로 거슬러 올라갑니다. 또한 표준화되어 있습니다. Linux 표준 라이브러리는 이를 다음과 같이 나눕니다.
- 이것필수의표준 사용자 계정
root
,bin
및daemon
; - 이것임의로 선택할 수 있는표준 사용자 계정
adm
,lp
,sync
,shutdown
,halt
,mail
,news
,uucp
,operator
,man
및nobody
여기에 언급된 다른 사용자 계정 — pulse
, avahi
, colord
및 Debian-exim
(py4on의 비밀번호 파일에서 하나 선택) — 다음 질문에 답변해 드리겠습니다.
이 중 어떤 것이 설치되는 새 프로그램과 어떤 관련이 있습니까?
이러한 패키지를 설치하고 정리하면 다양한 패키지의 "유지 관리 스크립트"에 의해 비표준 사용자 계정이 생성되고 삭제됩니다. 사용자 계정은 사용자 계정이 이미 존재하는지 여부 를 확인하기 위해 실행되는 패키지의 소위 유지 postinst
관리자 스크립트 에 의해 생성됩니다. 이론적으로 는 .getent
useradd
postrm
userdel
실제로 패키지의 사용자 계정은 삭제되지 않습니다. Fedora 위키(qv)에서는 이것이 어려움을 겪을 수 있다고 설명합니다. 바라보다데비안 버그 #646175결정하는 실제적인 예를 들어보자아니요패키지를 정리할 때 사용자 계정을 제거하여 rabbitmq
해당 계정의 후원으로 데몬이 계속 실행되는 문제를 해결합니다.
이러한 프로그램은 다른 UID로 어떻게 시작됩니까?
Unix 및 Linux에서 수퍼유저 지원으로 실행되는 프로세스는 사용자 계정을 다른 계정으로 변경하고 동일한 프로그램을 계속 실행할 수 있지만 그 반대는 허용되지 않습니다. (set-UID 메커니즘을 사용해야 합니다.)
데몬 관리 시스템은 수퍼유저로 실행됩니다. 해당 구성 데이터는 특정 사용자 계정의 후원으로 특정 데몬 프로세스가 실행되도록 지정합니다.
- 시스템 5에서
rc
스크립트는 옵션/etc/init.d
과 같은 보조 도구를 사용합니다 .start-stop-daemon
--chuid
- daemontools 서비스 관리자 제품군을 사용하면 사용자 계정 이름 , 또는 을 사용하여 스크립트를
run
호출 할 수 있습니다 . 이런 예도 있어요setuidgid
s6-setuidgid
chpst
runuid
https://unix.stackexchange.com/a/179798/5132사용자 계정을 설정합니다nagios
. setuid
시작을 위해 작업 파일에 사용자 계정을 지정하는 섹션이 있습니다. 이것은 특별히 세밀한 것은 아니며 때로는 원하는 것이 설명되는 것입니다.https://superuser.com/a/723333/38062.User=
systemd의 경우 서비스 단위 파일에 사용자 계정을 지정하는 설정이 있습니다 .
데몬 관리 시스템이 프로세스를 데몬으로 생성할 때 이러한 메커니즘은슈퍼유저 권한 제거따라서 데몬은 권한이 없는 사용자 계정의 후원으로 계속 실행됩니다.
설명이 좀 길어요왜좋은 데몬 관리는 이런 방식으로 이루어집니다. 그러나 당신은 왜, 언제, 어디서부터 질문하지 않습니다. ☺ 매우 간단한 요약은 다음과 같습니다.
Unix 및 Linux 운영 체제는 서로 다른 사용자 계정으로 실행되는 프로세스를 서로 격리합니다. 역사적으로 어떤 사람이 슈퍼유저로 실행되는 데몬을 인계받을 수 있다면 그는 자신이 원하는 것은 무엇이든 할 수 있었습니다. 반면, 권한이 없는 계정의 후원으로 실행되는 데몬은 권한이 없는 계정이 액세스할 수 있는 파일, 디렉터리, 장치 및 프로세스에만 액세스할 수 있습니다. 시스템서로를 신뢰하지 않는 데몬이들 모두는 서로 다른 사용자 계정의 후원으로 실행되며 서로의 (내부, 신뢰할 수 있는) 파일/디렉토리/프로세스/장치에 대한 액세스/제어가 없으므로 해킹하기가 훨씬 더 어렵습니다.
추가 읽기
- 조나단 데보인 폴라드(2014).실행 중인 스크립트와 서비스 단위를 나란히 봅니다.. 일반적인 답변.
- 관리자 스크립트의 계정 처리. 데비안 위키.
- 패키징: 사용자 및 그룹. 페도라 프로젝트 위키.
- "15장. 사용자 및 그룹". Linux 표준 기본 사양 2.1. 2004년. 자유표준기구.
- "9.2 사용자 및 그룹".데비안 정책 매뉴얼. 2014-11-22. 데비안 정책 메일링 리스트.
- "37.3. 표준 사용자". RHEL 배포 가이드. 11판. 2013. 빨간 모자.
- 사용자 및 그룹. 아치 위키.
- 캐롤 허위츠(Carol Hurwitz)와 스콧 맥피크(Scott McPeak)(2001-02-12). 루트 데몬을 파괴하세요!. DOI 10.1.1.120.3567.
답변4
Linux에서는 서비스를 설치할 때 해당 서비스 이름이나 이와 유사한 이름으로 사용자를 생성하므로 다른 파일에 액세스할 수 없습니다.