Tôi vừa hoàn thành quá trình cài đặt và thiết lập systemd trên hệ thống arch-linux của tôi (2012/09/07). Tôi gỡ cài đặt initscripts
(và loại bỏ các tập tin cấu hình).
Những gì tôi muốn làm là tạo ra một dịch vụ có thể được bắt đầu và dừng bởi một người dùng không phải root. Dịch vụ này là để bắt đầu một phiên màn hình tách rời chạy rtorrent. Tuy nhiên, tôi muốn mọi người dùng trên hệ thống đã đặt dịch vụ này bắt đầu (được bật) để có một phiên bản cụ thể được bắt đầu cho họ một cách cụ thể. Làm thế nào một người sẽ đi về làm điều này?
Tôi nhớ rằng đọc systemd hỗ trợ các phiên bản dịch vụ của người dùng, tuy nhiên tôi không thể tìm thấy bất kỳ thông tin nào về cách thiết lập dịch vụ này, hoặc liệu nó có liên quan đến những gì tôi đang tìm kiếm hay không.
Tệp dịch vụ mà tôi đã sử dụng cho hệ thống:
[Unit]
Description=rTorrent
[Service]
Type=forking
ExecStart=/usr/bin/screen -d -m -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
CẬP NHẬT # 1 :
Sau khi đọc qua các trang man ở đây và đây , tôi hiểu cách systemd hoạt động tốt hơn một chút. Cụ thể là việc sử dụng User=
và WorkingDirectory=
các tùy chọn cho phép dịch vụ được bắt đầu trong phiên của người dùng. Tuy nhiên vấn đề này vẫn còn mà người dùng tự không thể start
, stop
, enable
, hoặc disable
dịch vụ. Một quyền truy cập bị từ chối lỗi được đưa ra bởi systemctl
.
CẬP NHẬT # 2 :
Trước hết, để đơn giản hóa và để sử dụng tốt hơn tính năng phiên người dùng của systemd (vẫn chưa hoàn chỉnh), tôi đã sử dụng các đơn vị phiên người dùng của sofar và làm theo lời khuyên cấu hình của anh ấy.
Có vẻ như có một lỗi trong phiên bản hiện tại của DBus (1.6.4-1) trong đó nó không đặt DBUS_SESSION_BUS_ADDRESS
nghĩa của biến môi trường bằng cách sử dụng các systemctl --user
lỗi lệnh với:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Biến sẽ trông như thế này:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
trong đó USERUID cần là UID của người dùng cụ thể.
sudo
cho người dùng và có họ, như đã đề cập trong nhận xét của tôi ở trên, kiểm soát tệp dịch vụ của riêng họ. Tuy nhiên, giải pháp này cũng cho phép người dùng kiểm soát hầu hết các dịch vụ khác ...
sudo
tài liệu của mình - sudoers (5) có nhiều ví dụ về việc hạn chế các đối số của lệnh.