Làm cách nào để thay đổi Truyền người dùng chạy theo?


10

Tôi đã cài đặt Transmission thông qua PPA và daemon bắt đầu khởi động. Tôi muốn thay đổi người dùng chạy daemon vì tôi muốn các tệp đã tải xuống ở dưới cùng một người dùng với cài đặt XBMC của tôi và dường như tôi không thể tìm thấy nơi để chỉnh sửa.

Trình nền sử dụng mới bắt đầu nên không có gì về người dùng chạy nó /etc/init.d/transmission-daemonvà cũng không có gì /etc/default/transmission-daemonvề người dùng

Tôi đang sử dụng các ppas này để truyền:

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list:deb //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list:deb-src //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list.save:deb //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

/etc/apt/sources.list.d/transmissionbt-ppa-quantal.list.save:deb-src //ppa.launchpad.net/transmissionbt/ppa/ubuntu quantal main

Bạn có thể vui lòng cung cấp PPA và phiên bản Ubuntu không? Ở mọi nơi tôi nhìn thấy gói truyền-daemon đều có tệp /etc/init.d/transmission-daemon.
sắp xếp

Xin lỗi nếu tôi không rõ ràng, tôi có nghĩa là không có bất cứ điều gì về việc người dùng nào chạy daemon trong tệp đó
BvdBijl

Khi bắt đầu tập tin /etc/init.d/transmission-daemon, bạn sẽ thấy dòng "USER = debian-Transmission"; nên là nó
sắp xếp


Tôi đã thêm những PPA nào tôi sử dụng trong bài bắt đầu
BvdBijl

Câu trả lời:


4

Kể từ phiên bản v1.4 mới bắt đầu setuidsetgidđược hỗ trợ nguyên bản trong tệp cấu hình:

setgid <groupname>

setuid <username>

Trước v1.4, bạn có thể sử dụng điều này ( như được mô tả ở đây ):

exec start-stop-daemon --start -c {user} --exec {command}

2
Tôi phải chỉnh sửa /etc/init/transmission-daemon.conf
BvdBijl

1
Tôi cũng đã phải sudo chown -R user: group / var / lib / Transmission-daemon / like said askubfox.com/questions/290943/ chủ
Philippe Gachoud

15

Vì tất cả các câu trả lời khác là dành cho Ubuntu pre-systemd, đây là hướng dẫn cập nhật cho Ubuntu 16.04 ( từ Sensecodons.com ). Về cơ bản, hãy tạo một đơn vị bổ sung cho "Transmission-daemon.service" để thay đổi User=...cài đặt và sau đó cập nhật tệp "~ / .config / Transmission-daemon / settings.json" của người dùng đó.

Dừng truyền (nếu nó đã chạy).

sudo systemctl stop transmission-daemon

Tạo thư mục tập tin bổ sung để truyền:

sudo mkdir -p /etc/systemd/system/transmission-daemon.service.d

Tạo một tệp bổ sung mới gọi là "run-as-user.conf".

sudo vi /etc/systemd/system/transmission-daemon.service.d/run-as-user.conf

và đặt văn bản sau trong đó.

[Service]
User=codon

Rõ ràng, sử dụng tên người dùng mong muốn của bạn chứ không phải "codon".

Nói systemd để tải lại các đơn vị của nó.

sudo systemctl daemon-reload

Tiếp theo, bạn sẽ muốn bắt đầu và sau đó dừng truyền để làm cho nó tạo ~/.config/transmission-daemon/thư mục cho người dùng mới của bạn.

Bắt đầu truyền và sau đó dừng truyền.

sudo systemctl start transmission-daemon; sudo systemctl stop transmission-daemon

Bây giờ bạn sẽ có thư mục sau trong thư mục nhà của người dùng: .config/transmission-daemon/

Từ đây, bạn sẽ có thể cập nhật ~/.config/transmission-daemon/settings.jsonbình thường.

Khi bạn đã hoàn tất, bắt đầu truyền tải.

sudo systemctl start transmission-daemon

3
Thay vì tự tạo thư mục và tệp đó, hãy sử dụng systemctl edit transmission-daemon.service, nó sẽ tự động 1. tạo thư mục và tệp đó và 2. khi bạn lưu và thoát, hãy chạy systemctl daemon-reload.
muru

7

Giả định:

  • Bạn đã sử dụng PPA này: ppa:transmissionbt/ppa
  • Bạn muốn chạy Truyền với người dùng: some_uservà nhóm:some_group

Đối với hệ thống khởi động System V (SysV) (ví dụ: Ubuntu 10.04 LTS):

  1. Dừng Daemon truyền:

    sudo service transmission-daemon stop
    
  2. Chỉnh sửa tập lệnh init.d

    sudo nano /etc/init.d/transmission-daemon
    

    ... và đổi USER=debian-transmissionthànhUSER=some_user

Đối với hệ thống khởi động mới (ví dụ: Ubuntu 14.04 LTS):

  1. Dừng Daemon truyền:

    sudo service transmission-daemon stop
    
  2. Chỉnh sửa tập lệnh init:

    sudo nano /etc/init/transmission-daemon.conf
    

    ... và chỉnh sửa như sau:

    • đổi setuid debian-transmissionsangsetuid some_user

    • và đổi setgid debian-transmissionthànhsetgid some_group

Đối với hệ thống init systemd (ví dụ: Ubuntu 16.04 LTS):

  1. Dừng Daemon truyền:

    sudo systemctl stop transmission-daemon.service
    
  2. Tạo tập tin ghi đè systemd:

    sudo systemctl edit transmission-daemon.service
    

    ... và chỉnh sửa như sau:

    [Service]
    User=
    User=some_user
    Group=
    Group=some_group
    

    Ghi chú:

    • Điều này tạo ra các tập tin sau: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • Các phép gán biến trống (ví dụ User=:) được sử dụng để xóa / đặt lại giá trị trong biến hiện có. Đây dường như là cách mọi thứ được thực hiện khi sử dụng thay thế tập tin đơn vị systemd. Xem: "Ví dụ 2. Ghi đè cài đặt nhà cung cấp" trong hướng dẫn systemd.unit :

      "... Đối với các tệp thả xuống, nếu muốn xóa các mục khỏi cài đặt được phân tích cú pháp dưới dạng danh sách (và không phải là phụ thuộc), ... trước tiên bạn cần xóa danh sách trước khi thêm lại tất cả các mục trừ một thứ sẽ bị xóa ... "

  3. Systemd tải lại và bắt đầu truyền daemon:

    sudo systemctl daemon-reload
    sudo systemctl start transmission-daemon.service
    

    Lưu ý: Không giống với Upstart và SysV init system-daemon lưu tất cả các cấu hình và cài đặt /home/some_user/.config/transmission-daemon/thay vì /etc/transmission-daemon/settings.json/var/lib/transmission-daemon

Ghi chú & Tài liệu tham khảo


Thông tin tùy chọn / bổ sung về quyền và cập nhật gói:

Lưu ý: Những điều sau đây chỉ có thể phù hợp với các hệ thống khởi động và SysV init

Thay đổi quyền trên các tệp cấu hình của Truyền

Nếu bạn không sử dụng hệ thống init systemd, bây giờ bạn có thể cần thay đổi quyền cho các tệp Cấu hình của Transmission từ user=debian-transmissionđến user=some_uservà từ group=debian-transmissionsang group=some_group.

  1. Kiểm tra vị trí của Thư mục cấu hình truyền dẫn của bạn. Bạn có thể tìm thấy nó được đề cập trong /etc/default/transmission-daemontệp dưới dạng một dòng như vậy:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Vì vậy, giả sử Thư mục cấu hình của bạn là /var/lib/transmission-daemon/info, thay đổi quyền sở hữu các tệp cấu hình:

    sudo chown some_user:some_group /var/lib/transmission-daemon/downloads
    sudo chown some_user:some_group /var/lib/transmission-daemon/info
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/blocklists
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/dht.dat
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/resume
    sudo chown some_user:some_group /var/lib/transmission-daemon/info/torrents
    
  3. Thay đổi quyền sở hữu các tệp khác:

    sudo chown :some_group /etc/transmission-daemon
    sudo chown some_user:some_group /etc/transmission-daemon/settings.json
    

Thông tin bổ sung (cập nhật truyền tải):

Vì bạn đã thay đổi người dùng mặc định, bạn có thể thấy rằng sau khi cập nhật Truyền bằng cách sử dụng kho lưu trữ (ví dụ: nâng cấp apt-get), trình nền truyền tải không còn chạy.

Chạy "sudo apt-get -f install" đưa ra lỗi sau:

Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up transmission-daemon (2.84-0ubuntu0.12.04.1) ...
 * Starting bittorrent daemon transmission-daemon
invoke-rc.d: initscript transmission-daemon, action "start" failed.
dpkg: error processing transmission-daemon (--configure):
 subprocess installed post-installation script returned error exit status 255
Errors were encountered while processing:
 transmission-daemon
E: Sub-process /usr/bin/dpkg returned an error code (1)

Lý do daemon không khởi động được ("invoke-rc.d: initscript Transmission-daemon, hành động" start "fail.") Là vì ​​chúng tôi đã thay đổi quyền từ "debian-Transmission" thành "some_user" và sau khi cập nhật, chúng được đặt lại . Vì vậy, để khắc phục chỉ cần làm như sau:

  1. Dừng Daemon và Chỉnh sửa tập tin cấu hình:

    sudo service transmission-daemon stop
    sudo nano /etc/init.d/transmission-daemon
    

    ... và đổi USER=some_userthànhUSER=debian-transmission

  2. Thử lại cập nhật sửa lỗi bằng cách chạy:

    sudo apt-get -f install
    
  3. Nếu cập nhật thành công, daemon Transmission sẽ chạy. Bây giờ bạn có thể làm theo các bước ở trên để thay đổi người dùng / nhóm một lần nữa.


6

Đây không phải là câu chuyện hoàn chỉnh. Ngoài việc thay đổi

setgid <groupname>

setuid <username>

trong

/etc/init/transmission-daemon.conf

bạn cũng cần thay đổi quyền của tệp cấu hình của truyền-daemon. Nếu không, nó sẽ không thể ghi lại cài đặt vào tệp này và trình nền sẽ khởi động lại cho đến khi bắt đầu nghĩ rằng nó có đủ cơ hội (init: truyền-daemon hồi đáp quá nhanh, đã dừng)

sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 

Cảm ơn vì đã thay đổi quyền của settings.json. Bỏ lỡ điều đó.
nighthawk454

2

Trên các hệ thống sử dụng systemd, tệp bạn muốn chỉnh sửa thực sự có thể là:

/etc/systemd/system/multi-user.target.wants/transmission-daemon.service

Theo dõi chỉnh sửa với:

sudo systemctl daemon-reload


Đây là những gì đã giúp tôi. Tôi đã làm tất cả các bước khác nhưng không làm việc. Cảm ơn bạn!
Martijn Smidt

2

Trong Ubuntu 16.04, dịch vụ khởi động đã được thay đổi từ mới bắt đầu sang systemd, khiến các câu trả lời trước đó trở nên lỗi thời. Để thay đổi người dùng truyền-daemon chạy thực thi:

Dừng daemon:

sudo service transmission-daemon stop

Thay đổi quyền sở hữu các tệp cấu hình và "nhà":

sudo chown -R USER:USER /var/lib/transmission-daemon/*
sudo chown -R USER:USER /etc/transmission-daemon/settings.json

Sau đó chỉnh sửa tệp /lib/systemd/system/transmission-daemon.servicebằng:

[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=USER
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-debug --config-dir /var/lib/transmission-daemon/info
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

Xin lưu ý User , --config-dir--log-debugthay đổi.

Tải lại cấu hình systemd:

sudo systemctl daemon-reload

Bắt đầu lại daemon:

sudo service transmission-daemon start

Một khi bạn đã thiết lập --log-debug (sẽ cung cấp cho bạn thêm thông tin về bất kỳ vấn đề nào), bạn có thể lấy nhật ký của daemon:

sudo journalctl -u transmission-daemon.service

Làm xong.

Những điều cần lưu ý:

Bạn có thể bỏ qua các tập tin:

/etc/default/transmission-daemon: Dường như không ai tìm nguồn cung ứng nó trong các hệ thống systemd.

/etc/init.d/transmission-daemon: Có vẻ như đây là kịch bản khởi động hệ thống 5 cũ.

/etc/init/transmission-daemon.conf: Có vẻ như đây là kịch bản khởi động cũ.


2
Không chỉnh sửa /lib/systemd/system/transmission-daemon.servicethủ công. Sử dụng systemctl edit transmission-daemon.servicethay thế, hoặc thay đổi của bạn sẽ bị mất khi bạn nâng cấp gói.
muru

0

Tôi đã làm như sau, mà với tôi dường như ít xâm lấn hơn các câu trả lời khác.

  1. Loại bỏ sự khởi động của truyền-daemon:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Thêm vào như sau /etc/profile:

    if [ -f "$HOME/.autostart" ]; then
      $HOME/.autostart
    fi
    
  3. Tạo ~/.autostart:

    #!/bin/bash
    if [ -z "$(pidof transmission-daemon)" ]; then
     /usr/bin/transmission-daemon --config-dir /home/[USERNAME]/.config/transmission-daemon &
    fi
    

Đây có thể là một chút di động hơn, nó cũng hoạt động với tôi trên Debian đơn giản và xe buýt nhỏ.


không phải là một ý tưởng tồi nhưng nó yêu cầu người dùng đăng nhập bằng shell thực thi /etc/profile(ví dụ zsh không thực thi nó)
elboletaire
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.