Tại sao có một người đàn ông trong / etc / passwd


23

Tôi đã nhận thấy rằng có một mục cho người dùng nam trong /etc/passwdtệp của tôi . Mục đích của người dùng này là gì?

man:x:6:12:man:/var/cache/man:/bin/sh

Câu trả lời:


31

man(lệnh, không phải người dùng) là một ứng dụng trợ giúp. Các ứng dụng cung cấp các trang man trong các gói của chúng nhưng mancần biết chúng ở đâu và cũng giúp chúng cung cấp những gì. Để tăng tốc mọi thứ - vì vậy mankhông tìm kiếm toàn bộ hệ thống tập tin khi bạn nhập man <command>- những trang man này được lập chỉ mục vào cơ sở dữ liệu bằng một lệnh được gọi mandb.

Trong Ubuntu mandblưu trữ các chỉ mục trong cơ sở dữ liệu GNU gdbm tại /var/cache/man/index.db(và một vài phiên bản ngôn ngữ cụ thể trong cùng thư mục). Đây là một cơ sở dữ liệu băm khóa-giá trị không giống với memcache, hoặc hàng trăm triển khai khác trên các ý tưởng tương tự. Đó là nhị phân, nhẹ và nhanh. Tôi sẽ đưa ra một ví dụ về cách chơi với nó vào cuối.

Lập chỉ mục này được lên kế hoạch để chạy hàng ngày trong Ubuntu bởi /etc/cron.daily/man-db. Toàn bộ tập lệnh chạy dưới quyền root và thực hiện một số thao tác dọn dẹp trước nhưng ngay khi kết thúc, chúng ta thấy mandbđược chạy với tư cách là manngười dùng:

# --pidfile /dev/null so it always starts; mandb isn't really a daemon,
# but we want to start it like one.
start-stop-daemon --start --pidfile /dev/null \
                  --startas /usr/bin/mandb --oknodo --chuid man \
                  $iosched_idle \
                  -- --no-purge --quiet

Đó không phải là thay đổi nhóm, đó là lý do tại sao tất cả quyền sở hữu nhóm trong /var/cache/manđó vẫn là root.

Nhưng tại sao lại mandbchạy như một người dùng khác? Nó có thể (có thể) chạy tốt như rootvậy nhưng nó đang xử lý đầu vào từ nhiều nguồn khác nhau (nhìn vào manpath). Hoạt động với tư cách là người dùng của chính nó bảo vệ hệ thống khỏi quá trình thổi bùng lên, hay tệ hơn nữa là bị khai thác bởi các trang người đàn ông không đúng định dạng, bị hỏng hoặc độc hại.

Điều tồi tệ nhất có thể xảy ra sẽ chỉ ảnh hưởng đến manchỉ mục trang. Boo Hoo. Bạn có thể xác nhận rằng với một cái gì đó như:

sudo -u man find / -writable 2>/dev/null

Và bạn có thể sử dụng phương pháp đó để xem mức độ thiệt hại mà bất kỳ người dùng nào có thể gây ra trên hệ thống. Đó là một ý tưởng tốt để kiểm tra quyền truy cập tệp của bạn (tôi chỉ phát hiện ra rằng bất kỳ người dùng nào cũng có thể xóa toàn bộ bộ sưu tập nhạc của tôi chẳng hạn).


Bạn có thể nhìn vào cơ sở dữ liệu với accessdb. Dưới đây là một vài hồ sơ ngẫu nhiên:

$ accessdb | shuf -n3
fpurge -> "- 3 3 1380819168 A - - gz purge a stream"
fcgetlangs -> "FcGetLangs 3 3 1402007131 A - - gz Get list of languages"
ipython -> "- 1 1 1393443907 A - - gz Tools for Interactive Computing in Python."

Mặc dù không hoàn toàn rõ ràng ở trên, thực tế có các trường được phân tách bằng tab trong đó:

<name> -> <ext> <sec> <mtime> <ID> <ref> <comp> <whatis> 

Bạn có thể đọc thêm về nội dung trường thực tế trong hướng dẫn kỹ thuật .


3
Có lẽ bạn có thể thêm một lời giải thích về lý do tại sao dịch vụ này (và nhiều người khác) có người dùng của riêng họ và không chỉ chạy dưới quyền root hay cái gì đó?
Thomas Padron-McCarthy

@ ThomasPadron-McCarthy Đủ kỹ chưa?
Oli

Thật tuyệt vời!
Thomas Padron-McCarthy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.