Tại sao syslog một người dùng?


15

Khi tôi kiểm tra /var/log, tôi thấy một cái gì đó rất lạ

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

Lưu ý rằng chủ sở hữu của bốn tệp nhật ký đầu tiên là syslog. Thật kỳ lạ, vì chỉ có một người dùng trên hệ thống của tôi:

me@me~$ users
me

Tại sao tên tệp syslogcó thể là người dùng?


6
Tôi đảm bảo với bạn rằng có nhiều hơn một người dùng trên hệ thống của bạn. Tôi biết bạn có nghĩa là "người dùng được liên kết với một tài khoản và thư mục chính" nhưng khái niệm "người dùng" cho tất cả các hệ thống còn rộng hơn thế.

Hãy nhìn vào /etc/passwdmột lúc nào đó. Tôi đếm 36 người dùng vai trò, không bao gồm root. Ngoài ra, hãy thử - bạn man usersđang giả sử (không chính xác) những gì lệnh làm.
chrylis -on đình công-

Câu trả lời:


26

Nó phải được thực hiện với bảo mật và quyền truy cập hệ thống của bạn.

Và không, bạn có nhiều người dùng hơn là chỉ người dùng của riêng bạn. Có "root", "daemon", "bin", "games", "none" và "list".

Làm một more /etc/passwddanh sách người dùng trên hệ thống của bạn. Bạn sẽ thấy rất nhiều dòng với "/ usr / sbin / nologin". Điều đó có nghĩa là những người dùng không thể được sử dụng như một người dùng bình thường với thông tin đăng nhập như người dùng của bạn có thể. Cột thứ ba là ID người dùng. Tất cả ID người dùng dưới 1000 là người dùng giả. Người dùng sudo đầu tiên của bạn (người đã cài đặt hệ thống) có 1000 theo mặc định.

Về cơ bản syslog người dùng được phép sử dụng /var/log/thư mục được đặt làm thư mục do root sở hữu . Để không phải thỏa hiệp quyền trên thư mục (nghĩa là hạ thấp quyền để người dùng khác có thể sử dụng), người dùng này đã được tạo.

Điều tương tự cũng được thực hiện với người dùng cho Apache và MySQL (bạn sẽ thấy nhóm và người dùng dữ liệu www và nhóm và người dùng MySQL khi bạn cài đặt những thứ này), nhưng nó được sử dụng cho vô số thứ. Có một nhóm "dialout" được sử dụng để truy cập các thiết bị bên ngoài. Người dùng được thêm vào nhóm này để cho phép người dùng sử dụng các thiết bị này. Nếu không, bạn sẽ nhận được một quyền từ chối lỗi. Nó hoạt động theo hai cách: từ chối quyền truy cập của người dùng có nghĩa là xóa nhóm.


Con số đó không phải lúc nào cũng là 1000. Tôi đã làm việc trên các hệ thống có lịch sử đủ dài để ID của người dùng thực bắt đầu từ 20.
kasperd

1
Tôi biết nhưng Ubuntu luôn bắt đầu từ 1000. Chẳng hạn, Redhat bắt đầu từ 500.
Rinzwind

Có, nhưng người dùng không nhất thiết phải được tạo cục bộ. Trong trường hợp của tôi, họ đã được nhận qua NIS, những ngày này có lẽ sẽ là LDAP.
kasperd

Người dùng thực sự bắt đầu từ 20 tuổi sẽ phá vỡ nghiêm trọng một bản phân phối dựa trên Debian. Các UID 0-99 trên các hệ thống dựa trên Debian được dự án Debian cấp phát tĩnh cho các mục đích sử dụng cụ thể.
Peter Green

1
@PaddyLandau / bin / false sẽ thoát đăng nhập mà không cần thông báo. nologin sẽ hiển thị một thông báo "Tài khoản này hiện không có sẵn." (/etc/nologin.txt giữ thông báo này)
Rinzwind

8

Dịch vụ nhật ký hệ thống, ghi các thông điệp tường trình được tạo bởi kernel và bởi các dịch vụ khác vào các tệp nhật ký khác nhau, bàn điều khiển và / hoặc các đích khác, chạy trong tài khoản người dùng đặc biệt của riêng nó. Nhiều dịch vụ khác cũng vậy. Điều này là để thực hiện nguyên tắc đặc quyền tối thiểu :

Để giảm thiểu tác động có thể có của dịch vụ bị xâm nhập hoặc bị lỗi (ví dụ: dịch vụ có lỗi bị kẻ tấn công khai thác hoặc dịch vụ có lỗi gây ra là làm những việc không mong muốn ngẫu nhiên hoặc dịch vụ đã được cố tình thiết kế bởi một nhà phát triển ác tính để làm những điều xấu), bạn muốn mỗi dịch vụ chỉ có quyền truy cập vào những gì nó cần cho hoạt động của nó và không có gì khác.

Trên bất kỳ hệ điều hành giống như unix nào (bao gồm tất cả các bản phân phối GNU / Linux như Ubuntu), bạn có thể dễ dàng gán các quyền riêng tư nhất (đó chủ yếu là quyền đọc và / hoặc ghi từ / vào một số tệp hoặc những thứ giống như tệp nút thiết bị) dựa trên người dùng và nhóm. Có những khả năng khác, nhưng chúng thường tẻ nhạt hơn và dễ bị lỗi khi thiết lập, hoặc chỉ hoạt động trong các bối cảnh cụ thể.

Vì vậy, dịch vụ nhật ký hệ thống chạy dưới tài khoản người dùng nhật ký hệ thống. Ví dụ, nếu bây giờ, kẻ tấn công có thể yêu cầu dịch vụ nhật ký hệ thống thực hiện những gì họ nói với nó thay vì những gì được cho là, dịch vụ nhật ký hệ thống vẫn bị hạn chế (được thực thi bởi kernel dựa trên tài khoản người dùng, không được thực thi bởi syslog bản thân phần mềm, sẽ vô dụng vì nó bị xâm phạm) chỉ ghi vào các tệp nhật ký (các tệp duy nhất mà người dùng syslog có quyền truy cập ghi). Do đó, kẻ tấn công không thể sử dụng dịch vụ nhật ký hệ thống bị xâm nhập để thay đổi nội dung của trang web hoặc cơ sở dữ liệu được lưu trữ trên cùng một máy tính, bởi vì các tệp có liên quan được thiết lập để chỉ có thể ghi được bởi một số người dùng (người hoặc hệ thống ) cụ thể khác tài khoản, không phải bởi tài khoản người dùng syslog.

Để gây hại nhiều hơn là chỉ xóa / sửa đổi tệp nhật ký và đọc tệp "công khai" (với quyền "đọc" cho mọi người), trước tiên kẻ tấn công cần khai thác thêm lỗi thứ hai, trong kernel hoặc trong một số phần mềm được cài đặt để chạy với các đặc quyền khác với người dùng đã gọi nó ( setuid ) và do đó có được các đặc quyền bổ sung ( leo thang đặc quyền ).


Các userslệnh bạn sử dụng, theo trang người đàn ông của mình , chương trình chỉ có người dùng đang hiện đang đăng nhập . Vì người dùng syslog là người dùng hệ thống , nên nó sẽ không bao giờ đăng nhập, vì vậy nó sẽ không bao giờ xuất hiện trong danh sách này. Bạn có thể xem tệp /etc/passwdhoặc sử dụng bất kỳ phương pháp nào khác được mô tả ở đây để nhận danh sách tất cả người dùng (người và hệ thống) trên hệ thống của bạn.


7

Bởi vì syslog không phải là một tập tin; nó là một trình nền được hệ thống sử dụng để lưu trữ các thông điệp ứng dụng và trình nền hệ thống (gỡ lỗi, lỗi, cảnh báo và thông tin) vào các tệp.

Đọc ở đây để biết một lịch sử ngắn gọn của syslog.

Trong các bản phân phối khác, ví dụ như các bản phân phối dựa trên Red Hat Linux, đầu ra nhật ký hệ thống cho hệ thống được lưu trữ trong một tệp có tên /var/log/messages. Nó phụ thuộc vào cấu hình.

Như Rinzwind nói, vì lý do bảo mật, các thành phần khác nhau trong hệ điều hành chạy với một người dùng cụ thể và mỗi người dùng có quyền riêng. Ví dụ, syslog ít nhất có quyền ghi trên /var/logthư mục.

Một hệ thống có nhiều dịch vụ và thường có người dùng cho mỗi dịch vụ hoặc cho một nhóm nhỏ dịch vụ. Ví dụ , apache get www-data|httpd|apache. Thông thường những người dùng daemon này không có quyền truy cập Bash để tránh rò rỉ bảo mật.

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.