답변:
패키지를 통해 dpkg
(를 포함하여 apt install
) 설치 한 경우 이는 합리적으로 안정적으로 작동 합니다. 기본 우분투 설치에서 생성 된 사용자 목록과이를 생성하는 패키지에 대해서는 muru의 답변 을 참조하십시오 . 해당 사용자의 경우이 방법은 출력을 생성하지 않습니다.
다음 명령을 사용할 수 있습니다.
grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
<user>
예를 들어, 관심있는 사용자 이름으로 바꾸십시오 .systemd
이 검색한다 preinst
과 postinst
에 알려진 모든 패키지의 스크립트 dpkg
을 위해 adduser
또는 useradd
명령 및 해당 사용자가 해당 사용자를 만들기위한 담당하는 패키지를 확인합니다. 결과는 sed로 파이프되므로 스크립트 파일의 전체 이름 대신 패키지 이름 자체 만 리턴합니다.
grep -RlE
재귀 적으로 검색하고 일치하는 파일을 포함하는 파일 이름 만 인쇄하고 확장 정규식을 사용하십시오.'(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'
를 검색 adduser
하거나 useradd
(같은 줄에 찾으려면 명령과 사용자 .*
디렉토리의 모든 명령 옵션을 잡기, 그들 사이의 모든 문자와 일치합니다) 여기서 dpkg
이름으로 끝나는 파일에 저장 스크립트,inst
sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
/
전체 경로 의 마지막 및 마지막 .preinst
또는 .postinst
확장을 포함하여 모든 항목을 제거합니다.find
여기를 사용하는 것보다 깔끔하고 빠른 검색 방법을 제안하는 @muru에게 감사드립니다. :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
일을 단순화하기 위해 find -exec grep
.
basename -s
동의를 와일드 카드 / 정규식 ...) 나는 그것이하지만 adduser를 어떤 PREINST 스크립트를 찾을 수 없습니다 (접미사 이달 사전 및 사후을 절단 할 수 있도록 그래서 어깨를 으쓱 )
postinst
하므로 사용하는 것을 찾지 못할 것입니다 preinst
(그러나 드문 경우가 있다고 생각합니다).
여기에 일반적인 adduser
추가 사용자 및 그룹 에는 중요한 예외가 있습니다. 기본적으로 Ubuntu와 함께 제공되는 사용자 및 그룹입니다. 이들은 base-passwd
패키지 에 의해 제공됩니다 . 이 패키지로 추가 된 사용자 및 그룹 목록은에 나와 있습니다 (및 설명) /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}
. 목록은 다음과 같습니다.
root man majordom irc gdm
daemon lp postgres gnats saned
bin mail www-data nobody klog
sys news backup messagebus syslog
sync uucp operator postfix
games proxy list haldaemon
adm fax audio staff sshd
tty voice src users fetchmail
disk cdrom shadow lpadmin cupsys
kmem floppy utmp sasl nogroup
dialout tape video scanner
dip sudo plugdev ssh
패키지 README ( /usr/share/doc/base-passwd/README
)에는 60000-64999 범위의 UID를 가진 일부 사용자가 나열되어 있으며 각 사용자가 해당 패키지에 의해 작성되었다고 명시되어 있습니다.
참조 :
base-passwd
14.04 의 소스 코드 - *.master
파일 에서 사용자 및 그룹 목록을 볼 수 있습니다.
preinst
해당 스크립트에 사용자를 작성하는 일부 패키지가 있으므로 확인해야합니다 . 하지만 아이디어를 얻었으므로 받아들입니다.