계정이 많은 이유는 무엇입니까? 나는 유일한 사용자 야


13

Ubuntu 12.04 데스크탑 시스템을 실행 중입니다. 지금까지 일부 프로그램 만 설치했습니다 (sudo 권한이 있습니다).

  1. 시스템에서 사용자 목록을 확인하면 20 명 이상의 사용자와 같은 긴 목록이 나타납니다.이 사용자가 생성 된시기 (예 : 데몬, 시스템, 동기화, 게임, 펄스 등)는 무엇입니까? 이들은 새로운 프로그램 설치와 어떤 관련이 있습니까?

  2. 시스템에서 프로그램을 실행하면 UID로 실행해야합니다. 그러나 ps 를 수행 하면서 다른 UID로 실행되는 다른 많은 프로그램 (루트, 데몬, avahi, syslog, 색상 등)을 볼 수 있습니다. 이러한 프로그램은 다른 UID로 어떻게 시작 되었습니까?


3
컴퓨터를 처음 부팅 할 때는 아직 로그인하지 않았으며 프로그램은 누군가 로 실행해야합니다 . 그것들은 모두 루트로 실행될 수 있지만 대부분의 프로그램은 컴퓨터 작동의 작은 부분만을 담당하기 때문에 안전하지 않습니다. 로그인하면 직접 실행하는 대부분의 프로그램이 그대로 실행됩니다.
dimo414

궁극적으로 그것은 해킹입니다. 널리 사용되지만 그럼에도 불구하고 해킹. UNIX 배포판은 오래되고 불완전한 보안 모델을 해결하기 위해 "사용자"개념을 남용합니다.
Federico Poloni

답변:


24

사용자 계정은 실제 인간 사용자뿐만 아니라 시스템 서비스를 실행하거나 시스템 파일의 소유자로 사용되기도합니다. 이는 휴먼 사용자의 자원 (프로세스, 파일 등)을 분리하고 시스템 서비스 자원을 분리하려면 동일한 메커니즘이 필요하기 때문에 수행됩니다.

일반적으로 실행하는 프로그램은 사용자 ID로 실행됩니다. 자체 계정으로 실행되는 시스템 데몬 뿐입니다 . 데몬을 실행할시기를 나타내는 구성 파일은 또한 사용자가 어떤 데몬을 실행해야하는지 나타내거나 데몬은 시작 후 권한이없는 계정으로 전환합니다. 일부 데몬에는 전체 관리 권한이 필요하므로 루트 계정으로 실행 됩니다. 많은 데몬은 특정 하드웨어 장치 나 특정 파일에만 액세스 할 수 있으므로 전용 사용자 계정으로 실행됩니다. 이는 보안을 위해 수행됩니다. 이러한 방식으로 이러한 서비스 중 하나에 버그 나 구성 오류가 있어도 공격자가이 서비스가 수행 할 수있는 작업과 제한되지 않기 때문에 전체 시스템 공격으로 이어질 수 없습니다. 파일 덮어 쓰기, 프로세스 스파이 등

Ubuntu에서 0–99 범위의 사용자 ID는 시스템 설치시 작성됩니다. 0은 루트입니다. 1-99 범위의 많은 항목은 역사적 이유로 만 존재하며이를 사용하는 일부 로컬 설치와의 호환성을 위해서만 유지됩니다 (몇 가지 추가 항목은 아프지 않습니다). 100-999 범위의 사용자 ID는 전용 사용자 ID가 필요한 서비스를 설치하거나 제거 할 때 동적으로 작성 및 제거됩니다. 1000 이상의 범위는 사람 사용자 또는 시스템 관리자가 만든 다른 계정을위한 것입니다. 그룹도 마찬가지입니다.


7

이 사용자 목록을 확인하여 /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

우분투에 새로운 프로그램을 설치할 때 새로운 사용자를 생성합니까? 그렇지 않다면 얼마나 많은 프로그램이 내 UID와 다른 UID로 실행되고 있습니까? 나는이 프로그램들이 diff UID로 어떻게 실행되는지 의미합니까?
Jake

원하는 경우 dpkg --get-selections | grep -v deinstall/ etc / passwd 파일 목록을 실행 하고 비교할 수 있습니다 . 귀하의 질문에 관해서 : "...이 프로그램은 diff UID로 어떻게 실행됩니까?", 직접 시도해 볼 수 있습니다. test_file무해한 것을 포함 하는 임의의 bash 스크립트 를 작성하십시오 ( echo "Test"). 그런 다음 sudo chmod 755 test_file(누구든지 읽고 읽을 수 있고 소유자가 읽고 쓸 수 있고 실행할 수 있음) 그러면 sudo chown nobody사용자에게 할당됩니다 nobody. 그런 다음 실행하십시오. '프로그램' test_file은 UID와 함께 실행되었습니다 nobody.
toxefa

2
@ py4on 확실하지 않습니다 ... nobodyUID 가있는 파일에서 실행되었지만 UID로 실행되었습니다. 그렇게하려면 SUID 파일로 만들어야하지만 파일이 인터프리터로 실행되면 SUID 비트가 삭제됩니다.
Riking

좋아하지만, 위의 내 코멘트를 편집 할 수있는 dpkg비트는 여전히 유용하다 (희망)에 대한 부분을 무시하십시오 실행 자신으로! SUID를 사용하거나 다른 사용자로 로그인하여이를 이해하십시오
toxefa

3

이 사용자는 언제 작성 되었습니까?

언급 한 경우 시스템 설치시 작성되었습니다. 이 사용자 계정 은 몇 십년 전의 기존의 계정 입니다. 그들은 또한 표준화되어 있습니다. Linux Standard Base는 다음과 같이 나뉩니다.

  • 필요한 표준 사용자는 계정 root, bindaemon; 과
  • 옵션 표준 사용자 계정 adm, lp, sync, shutdown, halt, mail, news, uucp, operator, man, 및nobody

여기에 언급 된 다른 사용자 계정 - pulse, avahi, colord, 및 Debian-exim(py4on의 암호 파일에서 하나 선택하기) - 당신의 다음 질문으로 우리를 데리고.

이들은 새로운 프로그램 설치와 어떤 관련이 있습니까?

비표준 사용자 계정은 해당 패키지가 설치 및 제거 될 때 다양한 패키지에 대한 "유지 관리자 스크립트"에 의해 생성 및 삭제됩니다. 사용자 계정은 패키지의 소위 postinst관리자 스크립트에 의해 생성되며 ,이 스크립트 getent는 사용자 계정이 이미 존재하는지 여부를 확인하기 위해 실행 됩니다 useradd. 이론적으로 패키지의 소위 postrm관리자 스크립트 인 running에 의해 삭제됩니다 userdel.

실제로 패키지의 사용자 계정은 삭제되지 않습니다. 페도라 위키 (qv)는 이것이 어렵다고 설명합니다. 이 이론적 근거에 대한 예제는 데비안 버그 # 646175 를 참조하십시오 . 여기서 패키지를 제거 할 때 사용자 계정 을 삭제 하지 않고rabbitmq 해당 계정의 문제로 계속 실행되는 dæmon 관련 문제를 해결 하기로 결정했습니다 .

이 프로그램들은 어떻게 다른 UID로 시작 되었습니까?

Unix와 Linux에서 수퍼 유저의 시대에 따라 실행되는 프로세스는 사용자 계정을 다른 것으로 변경하고 동일한 프로그램을 계속 실행할 수 있지만 그 반대는 허용되지 않습니다. set-UID 메커니즘을 사용해야합니다.

데몬 관리 시스템은 수퍼 유저로 실행됩니다. 구성 데이터는 특정 사용자 계정의 특정 요원에서 특정 데몬이 실행되도록 지정합니다.

  • System 5 rc에서 스크립트 는 옵션 과 /etc/init.d같은 도우미 도구 를 사용합니다 .start-stop-daemon--chuid
  • 데몬 툴즈 가족 서비스 관리자와의 run스크립트 호출 setuidgid, s6-setuidgid, chpst, 또는 runuid사용자 계정 이름. /unix//a/179798/5132 에는 nagios사용자 계정 을 설정하는 예가 있습니다.
  • upstart를 사용하면 setuid작업 파일에 사용자 계정을 지정 하는 스탠자가 있습니다. 이것은 특히 세분화되지 않고 때로는 /superuser//a/723333/38062에 설명 된 내용을 원합니다 .
  • systemd를 사용 User=하면 서비스 계정 파일에 사용자 계정을 지정하는 설정이 있습니다.

데몬 관리 시스템이 데몬이되기 위해 프로세스를 생성하면 이러한 메커니즘은 수퍼 유저 권한을 삭제 하여 권한이없는 사용자 계정의 영향으로 데몬 프로세스가 계속 실행되도록합니다.

좋은 악마 관리가 이런 식으로 수행되는 이유 는 상당히 길다 . 그러나 당신은 이유를 묻지 않았습니다. 언제, 어떻게, 언제 만. ☺ 따라서 매우 간단한 문구 :

유닉스와 리눅스 운영 체제는 서로 다른 사용자 계정으로 실행되는 프로세스를 격리시킵니다. 역사적으로, 수퍼 유저로 실행 된 데몬을 인계 할 수 있었다면 원하는 것을 할 수있었습니다. 반면, 권한이없는 계정으로 인해 실행되는 데몬은 권한이없는 계정이 할 수있는 파일, 디렉토리, 장치 및 프로세스에만 액세스 할 수 있습니다. 의 시스템 상호 untrusting 데몬 프로그램이 모두 다른 사용자 계정의 aegises에서 실행 및 액세스 / 제어 서로의에없는 파일 / 디렉토리 / 프로세스 / 장치 따라서, 즉 더 힘들어 크랙하는 것입니다 (내부, 신뢰).

추가 자료


1

Linux에서 서비스를 설치할 때 다른 파일에 액세스 할 수 없도록 서비스 이름 또는 이와 유사한 사용자를 작성합니다.


1
이것은 컨벤션이지만 반드시 필요한 것은 아니며 보편적이지 않습니다. 사실, 그것은하지 정말 ... 더 이상 일반
HalosGhost

1
@HlosGhost 어? 아니요, 매우 일반적인 관행이며 여전히 강력합니다. 이 답변은 불완전하지만 완벽하게 맞습니다.
Gilles 'SO- 악마 그만'

1
@ Giles, 나는 그것이 틀렸다고 말하지 않았다. 그러나 대부분 구식입니다. 요즘 서비스의 상당 부분 (systemd의 출현으로)은 서비스 파일 일뿐입니다. 이제 서비스 별 사용자 계정이 더 이상 존재하지 않는다고 말할 수는 없습니다. 그들은 확실히한다. 그러나 예를 들어 전체 시스템에 24 개의 계정 만 있으면 더 많은 서비스를 이용할 수 있습니다.
HalosGhost

@Gilles 계정보다 더 많은 서비스 인 HalosGhost와 동일한 상황이 있습니다. 이것이 모두 루트로 실행된다는 것을 의미합니까?
lonix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.