Đây là lệnh dbus-daemon có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
dbus-daemon - Trình nền xe buýt tin nhắn
SYNOPSIS
dbus-daemon
dbus-daemon [--version] [--session] [--system] [--config-file=FILE]
[--in-địa chỉ [=MÔ TẢ]] [--print-pid [=MÔ TẢ]] [--cái nĩa]
MÔ TẢ
dbus-daemon là daemon bus tin nhắn D-Bus. Nhìn thấy http://www.freedesktop.org/software/dbus/
để biết thêm thông tin về bức tranh lớn. D-Bus là thư viện đầu tiên cung cấp
giao tiếp một-một giữa hai ứng dụng bất kỳ; dbus-daemon là một ứng dụng
sử dụng thư viện này để triển khai một daemon bus thông báo. Nhiều chương trình kết nối với
daemon bus tin nhắn và có thể trao đổi tin nhắn với nhau.
Có hai phiên bản bus tin nhắn tiêu chuẩn: bus tin nhắn toàn hệ thống (được cài đặt trên
nhiều hệ thống như dịch vụ init "messagebus") và bus tin nhắn phiên đăng nhập cho mỗi người dùng
(bắt đầu mỗi khi người dùng đăng nhập). dbus-daemon được sử dụng cho cả hai trường hợp này, nhưng
bằng một tập tin cấu hình khác.
Tùy chọn --session tương đương với "--config-file=/usr/share/dbus-1/session.conf"và
tùy chọn --system tương đương với "--config-file=/usr/share/dbus-1/system.conf". Qua
tạo các tệp cấu hình bổ sung và sử dụng tùy chọn --config-file, bổ sung
daemon bus tin nhắn có mục đích đặc biệt có thể được tạo ra.
Daemon toàn hệ thống thường được khởi chạy bằng tập lệnh init, được gọi tiêu chuẩn một cách đơn giản
"xe buýt tin nhắn".
Daemon toàn hệ thống phần lớn được sử dụng cho các sự kiện của hệ thống phát sóng, chẳng hạn như thay đổi đối với
hàng đợi máy in hoặc thêm/xóa thiết bị.
Daemon mỗi phiên được sử dụng để liên lạc giữa các tiến trình khác nhau giữa các máy tính để bàn
các ứng dụng (tuy nhiên, nó không bị ràng buộc với X hoặc GUI theo bất kỳ cách nào).
SIGHUP sẽ khiến trình nền D-Bus tải lại MỘT PHẦN tệp cấu hình của nó và xóa sạch
bộ nhớ đệm thông tin người dùng/nhóm của nó. Một số thay đổi cấu hình sẽ yêu cầu khởi động lại tất cả
ứng dụng tắt xe buýt; vì vậy chúng sẽ chỉ có hiệu lực nếu bạn khởi động lại daemon. Thay đổi chính sách
sẽ có hiệu lực với SIGHUP.
LỰA CHỌN
Các tùy chọn sau được hỗ trợ:
--config-file = FILE
Sử dụng tệp cấu hình đã cho.
--cái nĩa
Buộc bus thông báo rẽ nhánh và trở thành một daemon, ngay cả khi tệp cấu hình thực hiện điều đó.
không xác định rằng nó nên. Trong hầu hết các bối cảnh, tệp cấu hình đã có được điều này
đúng, mặc dù vậy. Tùy chọn này không được hỗ trợ trên Windows.
--nofork
Buộc bus thông báo không phân nhánh và trở thành daemon, ngay cả khi tệp cấu hình
chỉ định rằng nó nên. Trên Windows, dbus-daemon không bao giờ phân nhánh, vì vậy tùy chọn này là
được phép nhưng không làm gì cả.
--print-address[=DESCRIPTOR]
In địa chỉ của bus thông báo ra đầu ra tiêu chuẩn hoặc vào tệp đã cho
mô tả. Điều này được sử dụng bởi các chương trình khởi chạy bus tin nhắn.
--print-pid[=MÔ TẢ]
In ID tiến trình của bus thông báo ra đầu ra tiêu chuẩn hoặc vào tệp đã cho
mô tả. Điều này được sử dụng bởi các chương trình khởi chạy bus tin nhắn.
--phiên họp
Sử dụng tệp cấu hình tiêu chuẩn cho bus thông báo mỗi phiên đăng nhập.
--hệ thống
Sử dụng tệp cấu hình tiêu chuẩn cho bus thông báo toàn hệ thống.
--phiên bản
In phiên bản của daemon.
--xem xét nội tâm
In thông tin nội bộ cho tất cả các giao diện nội bộ của D-Bus.
--địa chỉ[=ĐỊA CHỈ]
Đặt địa chỉ để nghe. Tùy chọn này ghi đè địa chỉ được cấu hình trong
tập tin cấu hình.
--kích hoạt hệ thống
Cho phép kích hoạt dịch vụ kiểu systemd. Chỉ hữu ích khi kết hợp với systemd
trình quản lý hệ thống và phiên trên Linux.
--nopidfile
Không ghi tệp PID ngay cả khi tệp này được cấu hình trong tệp cấu hình.
CẤU HÌNH FILE
Một daemon bus thông báo có một tập tin cấu hình chuyên biệt cho một mục đích cụ thể
ứng dụng. Ví dụ: một tệp cấu hình có thể thiết lập bus thông báo thành một
bus thông báo toàn hệ thống, trong khi một bus khác có thể thiết lập nó thành bus phiên đăng nhập cho mỗi người dùng.
Tệp cấu hình cũng thiết lập giới hạn tài nguyên, tham số bảo mật, v.v.
ra
Tệp cấu hình không phải là một phần của bất kỳ đặc tả khả năng tương tác nào và các thông số ngược của nó
khả năng tương thích không được đảm bảo; tài liệu này là tài liệu, không phải đặc điểm kỹ thuật.
Các thiết lập bus thông báo tiêu chuẩn trên toàn hệ thống và mỗi phiên được cấu hình trong các tệp
"/usr/share/dbus-1/system.conf"Và"/usr/share/dbus-1/session.conf". Những tập tin này thường
một system-local.conf hoặc session-local.conf trong /etc/dbus-1; bạn có thể đặt địa phương
ghi đè vào các tệp đó để tránh sửa đổi các tệp cấu hình chính.
Tệp cấu hình là một tài liệu XML. Nó phải có khai báo doctype sau:
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
Các phần tử sau có thể có trong tệp cấu hình.
·
Phần tử gốc.
·
Loại bus tin nhắn nổi tiếng. Các giá trị hiện được biết là "hệ thống" và "phiên";
nếu các giá trị khác được đặt thì chúng phải được thêm vào đặc tả D-Bus hoặc
không gian tên. Cuối cùng phần tử "thắng" (các giá trị trước đó bị bỏ qua). phần tử này
chỉ kiểm soát các biến môi trường cụ thể của bus thông báo được thiết lập trong kích hoạt
khách hàng. Hầu hết chính sách phân biệt bus phiên với bus hệ thống là
được kiểm soát từ các phần tử khác trong tệp cấu hình.
Nếu loại bus thông báo phổ biến là "phiên", thì DBUS_STARTER_BUS_TYPE
biến môi trường sẽ được đặt thành "phiên" và môi trường DBUS_SESSION_BUS_ADDRESS
biến sẽ được đặt thành địa chỉ của bus phiên. Tương tự, nếu loại của
bus thông báo là "hệ thống", thì biến môi trường DBUS_STARTER_BUS_TYPE sẽ được đặt
thành "hệ thống" và biến môi trường DBUS_SESSION_BUS_ADDRESS sẽ được đặt thành
địa chỉ của bus hệ thống (thường được nhiều người biết đến).
Ví dụ: phiên họp
·
Bao gồm một tập tin tên tệp.conf tại thời điểm này. Nếu tên tập tin là
tương đối, nó nằm ở vị trí tương đối với tệp cấu hình đang thực hiện việc bao gồm.
có thuộc tính tùy chọn "ignore_missing=(yes|no)" mặc định là "no" nếu
không cung cấp. Thuộc tính này kiểm soát liệu đó có phải là lỗi nghiêm trọng đối với tệp được bao gồm hay không.
vắng mặt.
·
Bao gồm tất cả các tập tin trong đồ ăn tại thời điểm này. Các tập tin trong thư mục
được bao gồm theo thứ tự không xác định. Chỉ bao gồm các tệp kết thúc bằng ".conf".
Điều này nhằm mục đích cho phép mở rộng bus hệ thống bằng các gói cụ thể. Ví dụ,
nếu CUPS muốn có thể gửi thông báo về các thay đổi hàng đợi máy in, nó có thể
cài đặt tệp vào /usr/share/dbus-1/system.d hoặc /etc/dbus-1/system.d đã cho phép tất cả ứng dụng
để nhận được tin nhắn này và cho phép người dùng daemon máy in gửi nó.
·
Tài khoản người dùng mà daemon sẽ chạy dưới dạng tên người dùng hoặc UID. Nếu daemon
không thể thay đổi UID này khi khởi động, nó sẽ thoát. Nếu phần tử này không có mặt thì
daemon sẽ không thay đổi hoặc quan tâm đến UID của nó.
Cuối cùng mục trong tệp "wins", những mục khác sẽ bị bỏ qua.
Người dùng được thay đổi sau khi xe buýt hoàn tất khởi tạo. Vì vậy, ổ cắm, v.v. sẽ là
được tạo trước khi thay đổi người dùng, nhưng sẽ không có dữ liệu nào được đọc từ máy khách trước khi thay đổi người dùng.
Điều này có nghĩa là các ổ cắm và tệp PID có thể được tạo ở vị trí yêu cầu root
đặc quyền để viết.
·
Nếu có, daemon bus sẽ trở thành daemon thực sự (phân nhánh vào nền, v.v.). Cái này
thường được sử dụng thay vì tùy chọn dòng lệnh --fork.
·
Nếu có, daemon bus sẽ giữ nguyên ô ban đầu của nó khi phân nhánh. Điều này có thể hữu ích để
tránh ảnh hưởng đến hành vi của các tiến trình con.
·
Nếu có, daemon bus sẽ đăng nhập vào nhật ký hệ thống.
·
Nếu có, daemon bus sẽ ghi pid của nó vào tệp được chỉ định. --nopidfile
tùy chọn dòng lệnh được ưu tiên hơn cài đặt này.
·
Nếu có, các kết nối được xác thực bằng cơ chế ẨN Danh sẽ bị hủy
được phép kết nối. Tùy chọn này không có tác dụng thực tế trừ khi cơ chế ẨN Danh
cũng đã được kích hoạt bằng cách sử dụng phần tử, được mô tả dưới đây.
·
Thêm địa chỉ mà xe buýt sẽ lắng nghe. Địa chỉ ở định dạng D-Bus tiêu chuẩn
chứa tên vận chuyển cộng với các tham số/tùy chọn có thể có.
Ví dụ: unix:path=/tmp/foo
Ví dụ: tcp:host=localhost,port=1234
Nếu có nhiều các phần tử thì bus sẽ lắng nghe trên nhiều địa chỉ. Các
xe buýt sẽ chuyển địa chỉ của nó đến các dịch vụ đã bắt đầu hoặc các bên quan tâm khác với địa chỉ cuối cùng
địa chỉ được đưa ra trong Đầu tiên. Nghĩa là, các ứng dụng sẽ cố gắng kết nối với ứng dụng cuối cùng
địa chỉ đầu tiên.
Ổ cắm tcp có thể chấp nhận địa chỉ IPv4, địa chỉ IPv6 hoặc tên máy chủ. Nếu tên máy chủ được giải quyết
tới nhiều địa chỉ, máy chủ sẽ liên kết với tất cả chúng. Họ=ipv4 hoặc họ=ipv6
các tùy chọn có thể được sử dụng để buộc nó liên kết với một tập hợp con các địa chỉ
Ví dụ: tcp:host=localhost,port=0,family=ipv4
Một trường hợp đặc biệt là sử dụng số cổng bằng 0 (hoặc bỏ qua cổng), nghĩa là
chọn một cổng khả dụng được hệ điều hành chọn. Số cổng được chọn có thể là
thu được bằng tham số dòng lệnh --print-address và sẽ có mặt trong các
trường hợp máy chủ báo cáo địa chỉ của chính nó, chẳng hạn như khi DBUS_SESSION_BUS_ADDRESS được
thiết lập.
Ví dụ: tcp:host=localhost,port=0
Địa chỉ tcp/nonce-tcp cũng cho phép tùy chọn bind=hostname, được sử dụng trong địa chỉ có thể nghe được để
định cấu hình giao diện mà máy chủ sẽ lắng nghe: tên máy chủ là IP
địa chỉ của một trong các giao diện của máy cục bộ (phổ biến nhất là 127.0.0.1), tên DNS
phân giải thành một trong những địa chỉ IP đó, '0.0.0.0' để nghe trên tất cả các giao diện IPv4
đồng thời hoặc '::' để nghe đồng thời trên tất cả các giao diện IPv4 và IPv6 (nếu
được hệ điều hành hỗ trợ). Nếu không được chỉ định, giá trị mặc định là cùng giá trị với "máy chủ".
Ví dụ: tcp:host=localhost,bind=0.0.0.0,port=0
·
Liệt kê các cơ chế ủy quyền được phép. Nếu phần tử này không tồn tại thì tất cả đã biết
cơ chế được cho phép. Nếu có nhiều các yếu tố, tất cả các cơ chế được liệt kê
được cho phép. Thứ tự liệt kê các cơ chế không có ý nghĩa.
Ví dụ: BÊN NGOÀI
Ví dụ: DBUS_COOKIE_SHA1
·
Thêm thư mục để quét tìm tệp .service. Các thư mục được quét bắt đầu bằng
xuất hiện đầu tiên trong tệp cấu hình (tệp .service đầu tiên được tìm thấy cung cấp
dịch vụ cụ thể sẽ được sử dụng).
Các tập tin dịch vụ cho xe buýt biết cách tự động khởi động một chương trình. Chúng chủ yếu được sử dụng
với bus phiên cho mỗi người dùng, không phải bus toàn hệ thống.
·
tương đương với việc xác định một loạt
các phần tử cho từng thư mục dữ liệu trong "Đặc tả thư mục cơ sở XDG" với
thư mục con "dbus-1/services", ví dụ như "/usr/share/dbus-1/services" sẽ là
trong số các thư mục được tìm kiếm.
Bạn có thể tìm thấy "Đặc tả thư mục cơ sở XDG" tại
http://freedesktop.org/wiki/Standards/basedir-spec nếu nó không di chuyển, nếu không hãy thử
công cụ tìm kiếm yêu thích.
Các tùy chọn chỉ liên quan đến bus phiên của mỗi người dùng
daemon được xác định trong /etc/dbus-1/session.conf. Đặt nó vào bất kỳ tập tin cấu hình nào khác
có lẽ sẽ là điều vô nghĩa.
·
chỉ định các thư mục kích hoạt tiêu chuẩn trên toàn hệ thống
cần tìm kiếm các tập tin dịch vụ. Tùy chọn này mặc định là
/usr/share/dbus-1/system-services.
Các tùy chọn chỉ liên quan đến daemon bus trên mỗi hệ thống
được xác định trong /usr/share/dbus-1/system.conf. Đặt nó vào bất kỳ tập tin cấu hình nào khác sẽ
có lẽ là vớ vẩn.
·
chỉ định trình trợ giúp setuid được sử dụng để khởi chạy các trình nền hệ thống với
người dùng thay thế. Thông thường, đây phải là tệp thực thi dbus-daemon-launch-helper trong
nằm ở libexec.
Các tùy chọn chỉ liên quan đến daemon bus trên mỗi hệ thống được xác định trong
/usr/share/dbus-1/system.conf. Đặt nó vào bất kỳ tập tin cấu hình nào khác có thể sẽ
trở nên vô nghĩa.
·
thiết lập một giới hạn tài nguyên. Ví dụ:
64
512
Thuộc tính tên là bắt buộc. Tên giới hạn có sẵn là:
"max_incoming_bytes" : tổng kích thước tính bằng byte của tin nhắn
đến từ một kết nối duy nhất
"max_incoming_unix_fds" : tổng số unix fds của tin nhắn
đến từ một kết nối duy nhất
"max_outending_bytes" : tổng kích thước tính bằng byte của tin nhắn
xếp hàng cho một kết nối duy nhất
"max_outending_unix_fds" : tổng số unix fds của tin nhắn
xếp hàng cho một kết nối duy nhất
"max_message_size" : kích thước tối đa của một tin nhắn trong
byte
"max_message_unix_fds" : fds unix tối đa của một tin nhắn
"service_start_timeout" : mili giây (phần nghìn) cho đến khi
một dịch vụ đã bắt đầu phải kết nối
"auth_timeout" : mili giây (phần nghìn) a
kết nối được trao cho
xác nhận
"pending_fd_timeout" : mili giây (phần nghìn) a
fd được cho để truyền tới
dbus-daemon trước khi ngắt kết nối
liên quan
"max_completed_connections" : số lượng kết nối được xác thực tối đa
"max_incomplete_connections" : số lượng tối đa chưa được xác thực
kết nối
"max_connections_per_user" : số lượng kết nối hoàn thành tối đa từ
cùng một người dùng
"max_pending_service_starts" : số lần khởi chạy dịch vụ tối đa trong
đồng thời tiến bộ
"max_names_per_connection" : số lượng tên tối đa một đơn
kết nối có thể sở hữu
"max_match_rules_per_connection": số lượng quy tắc đối sánh tối đa cho một đơn
liên quan
"max_replies_per_connection" : số lượng phương thức đang chờ xử lý tối đa
trả lời trên mỗi kết nối
(số lượng cuộc gọi đang diễn ra)
"reply_timeout" : mili giây (phần nghìn)
cho đến khi cuộc gọi phương thức hết thời gian
Kích thước hàng đợi đến/đi tối đa cho phép một tin nhắn mới được xếp hàng đợi nếu vẫn còn một byte
dưới mức tối đa. Vì vậy, trên thực tế, bạn có thể vượt quá mức tối đa max_message_size.
max_completed_connections chia cho max_connections_per_user là số lượng người dùng
có thể phối hợp với nhau để từ chối dịch vụ tất cả người dùng khác bằng cách sử dụng hết tất cả các kết nối trên
xe buýt toàn hệ thống.
Các giới hạn thường chỉ được quan tâm trên bus toàn hệ thống chứ không phải trên bus phiên của người dùng.
·
Các phần tử xác định một chính sách bảo mật được áp dụng cho một tập hợp cụ thể các
kết nối với xe buýt. Một chính sách được tạo thành từ Và các phần tử. Chính sách được
thường được sử dụng với bus toàn hệ thống; chúng tương tự như tường lửa ở chỗ chúng cho phép
lưu lượng dự kiến và ngăn chặn lưu lượng truy cập không mong muốn.
Hiện tại, bus hệ thống có chính sách từ chối mặc định để gửi các cuộc gọi phương thức và sở hữu
tên xe buýt. Mọi thứ khác, đặc biệt là tin nhắn trả lời, nhận kiểm tra và tín hiệu đều có
chính sách cho phép mặc định.
Nói chung, tốt nhất là giữ các dịch vụ hệ thống dưới dạng các chương trình nhỏ, có mục tiêu chạy trong
quy trình riêng của họ và cung cấp một tên xe buýt duy nhất. Sau đó, tất cả những gì cần thiết là một
quy tắc về quyền "riêng" để cho phép quá trình yêu cầu tên xe buýt và
Quy tắc "send_destination" để cho phép lưu lượng truy cập từ một số hoặc tất cả uid đến dịch vụ của bạn.
Các phần tử có một trong bốn thuộc tính:
bối cảnh="(mặc định|bắt buộc)"
at_console="(true|false)"
user="tên người dùng hoặc userid"
nhóm="tên nhóm hoặc gid"
Các chính sách được áp dụng cho một kết nối như sau:
- tất cả các chính sách ngữ cảnh="mặc định" đều được áp dụng
- tất cả các chính sách nhóm="connection's user's group" được áp dụng
theo thứ tự không xác định
- tất cả các chính sách user="connection's auth user" được áp dụng
theo thứ tự không xác định
- tất cả các chính sách at_console="true" đều được áp dụng
- tất cả các chính sách at_console="false" đều được áp dụng
- tất cả các chính sách ngữ cảnh="bắt buộc" đều được áp dụng
Các chính sách áp dụng sau sẽ ghi đè những chính sách áp dụng trước đó khi các chính sách trùng lặp.
Nhiều chính sách có cùng người dùng/nhóm/bối cảnh được áp dụng theo thứ tự chúng xuất hiện
tệp cấu hình.
MỘT phần tử xuất hiện bên dưới một phần tử và cấm một số hành động. Các
phần tử tạo ra một ngoại lệ đối với phần tử trước đó báo cáo và hoạt động giống như Nhưng
với ý nghĩa ngược lại.
Các thuộc tính có thể có của các phần tử này là:
send_interface="interface_name"
send_member="phương thức_or_signal_name"
send_error="error_name"
send_destination="tên"
send_type="method_call" | "phương thức_return" | "tín hiệu" | "lỗi"
send_path="/path/name"
nhận_interface="interface_name"
nhận_member="phương thức_or_signal_name"
nhận_error="error_name"
nhận_sender="tên"
nhận_type="phương thức_gọi" | "phương thức_return" | "tín hiệu" | "lỗi"
nhận_path="/đường dẫn/tên"
send_requested_reply="true" | "SAI"
nhận_requested_reply="true" | "SAI"
nghe lén="true" | "SAI"
riêng="tên"
own_prefix="tên"
người dùng="tên người dùng"
nhóm="tên nhóm"
Ví dụ:
Các thuộc tính của phần tử xác định xem việc từ chối có "khớp" với một hành động cụ thể hay không.
Nếu nó khớp, hành động đó sẽ bị từ chối (trừ khi các quy tắc sau này trong tệp cấu hình cho phép điều đó).
Các quy tắc send_destination và get_sender có nghĩa là tin nhắn có thể không được gửi đến hoặc
nhận được từ *chủ sở hữu* của tên đã cho, không phải là chúng không thể được gửi *đến tên đó*.
Nghĩa là, nếu một kết nối sở hữu dịch vụ A, B, C và việc gửi tới A bị từ chối, việc gửi tới B
hoặc C cũng sẽ không hoạt động.
Các thuộc tính send_* và get_* khác hoàn toàn khớp với văn bản/theo giá trị so với
trường nhất định trong tiêu đề thư.
"Nghe lén" xảy ra khi một ứng dụng nhận được một tin nhắn rõ ràng
được gửi đến một tên mà ứng dụng không sở hữu hoặc là câu trả lời cho một tin nhắn như vậy.
Do đó, việc nghe lén chỉ áp dụng cho các tin nhắn được gửi đến các dịch vụ và trả lời
những thông báo như vậy (tức là nó không áp dụng cho tín hiệu).
Vì , eavesdrop="true" chỉ ra rằng quy tắc phù hợp ngay cả khi nghe lén.
eavesdrop="false" là mặc định và có nghĩa là quy tắc này chỉ cho phép tin nhắn đi đến
người nhận được chỉ định của họ. Vì , nghe lén="true" chỉ ra rằng quy tắc phù hợp
chỉ khi nghe lén. nghe lén="false" là mặc định cho cũng vậy, nhưng đây
có nghĩa là quy tắc này luôn được áp dụng, ngay cả khi không nghe lén. Thuộc tính nghe lén
chỉ có thể kết hợp với quy tắc gửi và nhận (có thuộc tính send_* và get_*).
Thuộc tính [send|receive]_requested_reply hoạt động tương tự như thuộc tính nghe lén.
Nó kiểm soát liệu hoặc khớp với câu trả lời được mong đợi (tương ứng với
một thông báo cuộc gọi phương thức trước đó). Thuộc tính này chỉ có ý nghĩa đối với tin nhắn trả lời
(lỗi và trả về phương thức) và bị bỏ qua đối với các loại thông báo khác.
Vì , [send|receive]_requested_reply="true" là mặc định và chỉ ra rằng chỉ
các câu trả lời được yêu cầu được cho phép theo quy tắc. [gửi|nhận]_requested_reply="false" nghĩa là
rằng quy tắc cho phép bất kỳ phản hồi nào ngay cả khi không mong muốn.
Vì , [send|receive]_requested_reply="false" là mặc định nhưng chỉ ra rằng
quy tắc chỉ khớp khi không yêu cầu trả lời. [gửi|nhận]_requested_reply="true"
chỉ ra rằng quy tắc luôn được áp dụng, bất kể trạng thái trả lời đang chờ xử lý.
từ chối của người dùng và nhóm có nghĩa là người dùng hoặc nhóm nhất định có thể không kết nối với tin nhắn
xe buýt.
Đối với "tên", "tên người dùng", "tên nhóm", v.v., ký tự "*" có thể được thay thế, nghĩa là
"bất kì." Hiện tại, các khối phức tạp như "foo.bar.*" không được phép vì chúng sẽ có tác dụng
thực hiện và có thể khuyến khích bảo mật cẩu thả.
cho phép bạn sở hữu tên "ab" hoặc bất kỳ tên nào có tên đầu tiên
các phần tử được phân tách bằng dấu chấm là "ab": cụ thể, bạn có thể sở hữu "abc" hoặc "abcd", nhưng không
"a.bc" hoặc "ac". Điều này hữu ích khi các dịch vụ như Thần giao cách cảm và ReserveDevice xác định một
ý nghĩa cho cây con của những cái tên nổi tiếng, chẳng hạn như
org.freedesktop.Telepathy.ConnectionManager.(anything) và
org.freedesktop.ReserveDevice1.(bất cứ thứ gì).
Sẽ không có ý nghĩa gì khi từ chối một người dùng hoặc một nhóm trong một cho một người dùng hoặc một nhóm;
việc từ chối của người dùng/nhóm chỉ có thể nằm trong chính sách context="default" hoặc context="mandatory".
Một đơn quy tắc có thể chỉ định kết hợp các thuộc tính như send_destination và
send_interface và send_type. Trong trường hợp này, việc từ chối chỉ áp dụng nếu cả hai thuộc tính
phù hợp với tin nhắn bị từ chối. ví dụ
send_destination="foo.blah"/> sẽ từ chối các tin nhắn có giao diện đã cho VÀ giao diện đã cho
tên xe buýt. Để có được hiệu ứng OR, bạn chỉ định nhiều quy tắc.
Bạn không thể bao gồm cả thuộc tính gửi_ và nhận_ trên cùng một quy tắc, vì "liệu
tin nhắn có thể được gửi" và "liệu có thể nhận được tin nhắn hay không" được đánh giá riêng.
Hãy cẩn thận với send_interface/receive_interface, vì trường giao diện trong tin nhắn
Là tùy chọn. Đặc biệt, KHÔNG chỉ định ! Điều này sẽ
khiến các tin nhắn không có giao diện bị chặn đối với tất cả các dịch vụ, điều này gần như chắc chắn là không
những gì bạn dự định. Luôn sử dụng các quy tắc có dạng:
send_destination="org.foo.Service"/>
·
Các phần tử chứa các cài đặt liên quan đến Linux nâng cao bảo mật. Thêm chi tiết
phía dưới.
·
MỘT phần tử xuất hiện bên dưới một phần tử và tạo ra một ánh xạ. Ngay lập tức
chỉ có một loại liên kết có thể xảy ra:
Điều này có nghĩa là nếu một kết nối yêu cầu sở hữu tên "org.freedesktop.Foobar" thì
bối cảnh nguồn sẽ là bối cảnh của kết nối và bối cảnh đích sẽ là
"foo_t" - xem phần thảo luận ngắn về SELinux bên dưới.
Lưu ý, ngữ cảnh ở đây là ngữ cảnh đích khi yêu cầu tên, KHÔNG phải ngữ cảnh của
kết nối sở hữu tên.
Hiện tại không có cách nào để đặt mặc định cho việc sở hữu bất kỳ tên nào, nếu chúng ta thêm cú pháp này vào
sẽ giống như sau:
Nếu bạn tìm thấy lý do điều này hữu ích, hãy cho nhà phát triển biết. Ngay bây giờ mặc định sẽ
là bối cảnh an ninh của chính xe buýt.
Nếu hai phần tử chỉ định cùng tên, phần tử xuất hiện sau trong
tập tin cấu hình sẽ được sử dụng.
·
Các phần tử được sử dụng để định cấu hình dàn xếp AppArmor trên bus. Nó có thể chứa
một thuộc tính chỉ định chế độ hòa giải:
Chế độ mặc định là "bật". Ở chế độ "đã bật", quá trình dàn xếp AppArmor sẽ được thực hiện nếu
Hỗ trợ AppArmor có sẵn trong kernel. Nếu nó không có sẵn, dbus-daemon sẽ
bắt đầu nhưng quá trình hòa giải AppArmor sẽ không xảy ra. Ở chế độ "bị vô hiệu hóa", dàn xếp AppArmor được
tàn tật. Ở chế độ "bắt buộc", tính năng dàn xếp AppArmor sẽ được bật nếu hỗ trợ AppArmor được bật
có sẵn, nếu không dbus-daemon sẽ từ chối bắt đầu.
Không thể thay đổi chế độ dàn xếp AppArmor của xe buýt sau khi xe buýt khởi động. sửa đổi
chế độ trong tệp cấu hình và gửi tín hiệu SIGHUP tới daemon không có hiệu lực
trên chế độ hòa giải.
SELINUX
Xem http://www.nsa.gov/selinux/ để biết chi tiết đầy đủ về SELinux. Một số trích đoạn hữu ích:
Mọi chủ thể (tiến trình) và đối tượng (ví dụ: tệp, ổ cắm, đối tượng IPC, v.v.) trong hệ thống đều được
được gán một tập hợp các thuộc tính bảo mật, được gọi là bối cảnh bảo mật. Một sự bảo mật
ngữ cảnh chứa tất cả các thuộc tính bảo mật liên quan đến một chủ đề hoặc một chủ đề cụ thể.
đối tượng liên quan đến chính sách bảo mật.
Để đóng gói tốt hơn các bối cảnh bảo mật và mang lại hiệu quả cao hơn,
mã thực thi chính sách của SELinux thường xử lý các mã định danh bảo mật (SID) thay vì
hơn bối cảnh bảo mật. SID là một số nguyên được máy chủ bảo mật ánh xạ tới một
bối cảnh bảo mật trong thời gian chạy.
Khi cần có quyết định bảo mật, mã thực thi chính sách sẽ chuyển một cặp SID
(thường là SID của chủ thể và SID của đối tượng, nhưng đôi khi là một cặp chủ thể
SID hoặc một cặp SID đối tượng) và lớp bảo mật đối tượng cho máy chủ bảo mật. Các
lớp bảo mật đối tượng chỉ ra loại đối tượng, ví dụ như một tiến trình, một tập tin thông thường, một
thư mục, ổ cắm TCP, v.v.
Các quyết định truy cập chỉ định liệu có cấp quyền cho một cặp SID nhất định hay không
và lớp học. Mỗi lớp đối tượng có một tập hợp các quyền liên quan được xác định để kiểm soát
thao tác trên các đối tượng thuộc lớp đó.
D-Bus thực hiện kiểm tra bảo mật SELinux ở hai nơi.
Đầu tiên, bất cứ khi nào một tin nhắn được định tuyến từ kết nối này đến kết nối khác, bus
daemon sẽ kiểm tra các quyền với bối cảnh bảo mật của kết nối đầu tiên dưới dạng nguồn,
bối cảnh bảo mật của kết nối thứ hai làm mục tiêu, lớp đối tượng "dbus" và được yêu cầu
quyền "send_msg".
Nếu bối cảnh bảo mật không có sẵn cho kết nối (không thể thực hiện được khi sử dụng miền UNIX
sockets), thì ngữ cảnh đích được sử dụng là ngữ cảnh của chính trình nền bus. Có
hiện tại không có cách nào để thay đổi mặc định này vì chúng tôi giả định rằng chỉ có miền UNIX
ổ cắm sẽ được sử dụng để kết nối với xe buýt toàn hệ thống. Nếu điều này thay đổi, có lẽ chúng tôi sẽ thêm
một cách để thiết lập bối cảnh kết nối mặc định.
Thứ hai, bất cứ khi nào một kết nối yêu cầu sở hữu một tên, daemon bus sẽ kiểm tra các quyền
với bối cảnh bảo mật của kết nối là nguồn, bối cảnh bảo mật được chỉ định cho
tên trong tệp cấu hình làm mục tiêu, lớp đối tượng "dbus" và quyền được yêu cầu
"có được_svc".
Bối cảnh bảo mật cho tên xe buýt được chỉ định bằng yếu tố được mô tả
trước đó trong tài liệu này. Nếu một tên không có bối cảnh bảo mật liên quan đến
tập tin cấu hình, bối cảnh bảo mật của chính daemon bus sẽ được sử dụng.
THIẾT BỊ
Bối cảnh giam giữ AppArmor được lưu trữ khi các ứng dụng kết nối với bus. Các
bối cảnh giam giữ bao gồm một nhãn và một chế độ giam giữ. Khi có quyết định bảo mật
là bắt buộc, daemon sẽ sử dụng bối cảnh giam giữ để truy vấn chính sách AppArmor để
xác định xem hành động đó nên được cho phép hay từ chối và liệu hành động đó có cần được kiểm tra hay không.
Daemon thực hiện kiểm tra bảo mật AppArmor ở ba nơi.
Đầu tiên, bất cứ khi nào một tin nhắn được định tuyến từ kết nối này đến kết nối khác, bus
daemon sẽ kiểm tra quyền với nhãn của kết nối đầu tiên là nguồn, nhãn
và/hoặc tên kết nối của kết nối thứ hai làm mục tiêu, cùng với tên bus,
tên đường dẫn, tên giao diện và tên thành viên. Trả lời tin nhắn, chẳng hạn như phương thức_return
và các thông báo lỗi, hoàn toàn được cho phép nếu chúng phản hồi lại một thông báo có
đã được cho phép rồi.
Thứ hai, bất cứ khi nào một kết nối yêu cầu sở hữu một tên, daemon bus sẽ kiểm tra các quyền
với nhãn của kết nối là nguồn, tên được yêu cầu là đích, cùng với
tên xe buýt.
Thứ ba, bất cứ khi nào một kết nối cố gắng nghe lén, daemon bus sẽ kiểm tra quyền
với nhãn của kết nối là nguồn, cùng với tên bus.
Các quy tắc AppArmor cho việc dàn xếp bus không được lưu trữ trong các tệp cấu hình bus. họ đang
được lưu trữ trong hồ sơ AppArmor của ứng dụng. Xin vui lòng xem apparmor.d(5) để biết thêm chi tiết.
NỢ
Nếu bạn đang cố gắng tìm hiểu xem tin nhắn của mình sẽ đi đâu hoặc tại sao bạn không nhận được
tin nhắn, có một số cách bạn có thể thử.
Hãy nhớ rằng bus hệ thống bị khóa chặt và nếu bạn chưa cài đặt một
chính sách bảo mật để cho phép tin nhắn của bạn đi qua, nó sẽ không hoạt động. Đối với bus phiên,
đây không phải là một mối quan tâm.
Cách đơn giản nhất để tìm hiểu điều gì đang xảy ra trên xe buýt là chạy chương trình màn hình dbus
chương trình đi kèm với gói D-Bus. Bạn cũng có thể gửi tin nhắn kiểm tra với
dbus-gửi. Các chương trình này có trang man riêng của họ.
Nếu bạn muốn biết chính daemon đang làm gì, bạn có thể xem xét việc chạy một trình nền riêng
bản sao của daemon để kiểm tra. Điều này sẽ cho phép bạn đặt daemon dưới một
trình gỡ lỗi hoặc chạy nó với đầu ra dài dòng mà không làm hỏng phiên và hệ thống thực của bạn
daemon.
Ví dụ, để chạy một bản sao thử nghiệm riêng của daemon, bạn có thể mở một thiết bị đầu cuối và gõ:
DBUS_VERBOSE=1 dbus-daemon --session --print-address
Địa chỉ daemon kiểm tra sẽ được in khi daemon khởi động. Bạn sẽ cần đến
sao chép và dán địa chỉ này và sử dụng nó làm giá trị của DBUS_SESSION_BUS_ADDRESS
biến môi trường khi bạn khởi chạy ứng dụng bạn muốn kiểm tra. Điều này sẽ gây ra
những ứng dụng đó để kết nối với bus thử nghiệm của bạn thay vì DBUS_SESSION_BUS_ADDRESS của
xe buýt phiên thực sự của bạn.
DBUS_VERBOSE=1 sẽ KHÔNG CÓ HIỆU QUẢ trừ khi bản sao D-Bus của bạn được biên dịch chi tiết
đã bật chế độ. Điều này không được khuyến khích trong các bản dựng sản xuất do ảnh hưởng đến hiệu suất. Bạn
có thể cần phải xây dựng lại D-Bus nếu bản sao của bạn không được tạo với mục đích gỡ lỗi. (DBUS_VERBOSE
cũng ảnh hưởng đến thư viện D-Bus và do đó ảnh hưởng đến các ứng dụng sử dụng D-Bus; nó có thể hữu ích để xem
đầu ra dài dòng ở cả phía máy khách và từ daemon.)
Nếu muốn cầu kì hơn, bạn có thể tạo cấu hình bus tùy chỉnh cho bus thử nghiệm của mình (xem
các tệp session.conf và system.conf xác định hai cấu hình mặc định cho
ví dụ). Điều này sẽ cho phép bạn chỉ định một thư mục khác cho các tệp .service, ví dụ:
thí dụ.
Sử dụng dbus-daemon trực tuyến bằng dịch vụ onworks.net