Câu trả lời:
Điều này sẽ hoạt động hợp lý đáng tin cậy nếu gói được cài đặt thông qua dpkg
(bao gồm cả với apt install
). Xem câu trả lời của muru để biết danh sách người dùng được tạo trong cài đặt Ubuntu mặc định và gói tạo ra chúng. Đối với những người dùng, phương pháp này sẽ không tạo ra bất kỳ đầu ra nào.
Bạn có thể sử dụng lệnh:
grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
thay thế <user>
bằng tên của người dùng mà bạn quan tâm, ví dụ,systemd
Điều này tìm kiếm các tập lệnh preinst
và postinst
tập lệnh của tất cả các gói được biết dpkg
cho lệnh adduser
hoặc useradd
lệnh và người dùng đang đề cập, để xem gói nào chịu trách nhiệm tạo người dùng đó. Kết quả được chuyển sang sed để nó chỉ trả về tên gói thay vì tên đầy đủ của tệp script.
grep -RlE
tìm kiếm đệ quy và chỉ in tên của các tệp chứa kết quả khớp, sử dụng các biểu thức chính quy mở rộng'(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'
tìm kiếm adduser
hoặc useradd
lệnh và người dùng bạn muốn tìm trên cùng một dòng ( .*
sẽ khớp với bất kỳ ký tự nào giữa chúng, bắt bất kỳ tùy chọn lệnh nào) trong thư mục dpkg
lưu trữ tập lệnh, trong các tệp có tên kết thúc bằnginst
sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
loại bỏ tất cả mọi thứ trước & bao gồm cuối cùng /
trong đường dẫn đầy đủ và .preinst
hoặc .postinst
phần mở rộngCảm ơn @muru đã gợi ý cách tìm kiếm gọn gàng và nhanh hơn so với sử dụng find
tại đây :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
để đơn giản hóa find -exec grep
điều.
basename -s
chấp nhận ký tự đại diện / regex ...) vì vậy tôi có thể làm cho nó chặt trước và sau inst hậu tố (nhưng tôi đã không tìm thấy bất kỳ kịch bản preinst với adduser nên nhún vai )
postinst
, vì vậy bạn không thể tìm thấy bất kỳ mục đích sử dụng nào preinst
(nhưng tôi cho rằng trường hợp hiếm gặp có thể tồn tại).
Có một ngoại lệ quan trọng đối với những adduser
người dùng và nhóm người dùng thông thường ở đây: những nhóm đi kèm với Ubuntu theo mặc định. Chúng được cung cấp bởi các base-passwd
gói. Một danh sách người dùng và nhóm được thêm bởi gói này được đưa ra (và được mô tả) trong /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}
. Danh sách này là:
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
Gói README ( /usr/share/doc/base-passwd/README
) cũng liệt kê ra một số người dùng có UID trong phạm vi 60000-64999 và nói rằng những gói này được tạo bởi các gói tương ứng.
Cũng thấy:
base-passwd
14.04 - bạn có thể xem danh sách người dùng và nhóm trong các *.master
tệp.
preinst
vì có một số gói tạo người dùng trong tập lệnh đó. Nhưng tôi có ý tưởng nên tôi sẽ chấp nhận nó.