Bagaimana cara mengubah Transmisi pengguna berjalan di bawah?

10

Saya menginstal Transmisi melalui PPA dan daemon dimulai saat boot. Saya ingin mengubah pengguna yang menjalankan daemon karena saya ingin file yang diunduh berada di bawah pengguna yang sama dengan instalasi XBMC saya, dan sepertinya saya tidak dapat menemukan tempat untuk mengeditnya.

Daemon menggunakan pemula sehingga tidak ada tentang pengguna mana yang menjalankannya /etc/init.d/transmission-daemondan tidak ada apa-apa /etc/default/transmission-daemontentang pengguna juga

Saya menggunakan ppas ini untuk transmisi:

/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
BvdBijl
sumber
Bisakah Anda memberikan PPA dan versi Ubuntu? Di mana-mana saya melihat paket transmisi-daemon memang memiliki file /etc/init.d/transmission-daemon.
mengatur
Maaf jika saya tidak jelas, maksud saya tidak ada apa-apa tentang pengguna mana yang menjalankan daemon dalam file itu
BvdBijl
Pada awal file /etc/init.d/transmission-daemon Anda akan melihat baris "USER = debian-transmission"; seharusnya begitu.
mengatur
Milik
BvdBijl
Saya menambahkan PPA mana yang saya gunakan di posting awal
BvdBijl

Jawaban:

4

Mulai dari pemula v1.4, setuiddan setgiddidukung secara native dalam file konfigurasi:

setgid <groupname>

dan

setuid <username>

Sebelum v1.4 Anda dapat menggunakan ini ( seperti dijelaskan di sini ):

exec start-stop-daemon --start -c {user} --exec {command}
Rinzwind
sumber
2
Saya harus mengedit /etc/init/transmission-daemon.conf
BvdBijl
1
Saya juga harus sudo chown -R pengguna: grup / var / lib / transmission-daemon / seperti kata askubuntu.com/questions/290943/…
Philippe Gachoud
15

Karena semua jawaban lain untuk Ubuntu pre-systemd, berikut ini panduan terbaru untuk Ubuntu 16.04 ( dari sensecodons.com ). Pada dasarnya, buat unit tambahan untuk "transmission-daemon.service" untuk mengubah User=...pengaturan dan kemudian perbarui file "~ / .config / transmission-daemon / settings.json" pengguna tersebut.

Hentikan transmisi (jika sudah berjalan).

sudo systemctl stop transmission-daemon

Buat direktori file suplemen untuk transmisi:

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

Buat file suplemen baru yang disebut "run-as-user.conf".

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

dan letakkan teks berikut di dalamnya.

[Service]
User=codon

Jelas, gunakan nama pengguna yang Anda inginkan dan bukan "kodon".

Beri tahu systemd untuk memuat ulang unitnya.

sudo systemctl daemon-reload

Selanjutnya, Anda ingin memulai dan kemudian menghentikan transmisi untuk membuatnya membuat ~/.config/transmission-daemon/direktori untuk pengguna baru Anda.

Mulai transmisi dan kemudian hentikan transmisi.

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

Anda sekarang harus memiliki direktori berikut di direktori home pengguna Anda: .config/transmission-daemon/

Dari sini, Anda harus dapat memperbarui secara ~/.config/transmission-daemon/settings.jsonnormal.

Setelah selesai, mulai transmisi.

sudo systemctl start transmission-daemon
Douglas Manley
sumber
3
Daripada membuat direktori dan file yang, penggunaan manual systemctl edit transmission-daemon.service, yang akan secara otomatis 1. membuat direktori dan file, dan 2. ketika Anda menyimpan dan keluar, berjalan systemctl daemon-reloadjuga.
muru
7

Asumsi:

  • Anda menggunakan PPA ini: ppa:transmissionbt/ppa
  • Anda ingin menjalankan Transmisi dengan pengguna: some_userdan grup:some_group

Untuk sistem init System V (SysV) (mis: Ubuntu 10.04 LTS):

  1. Hentikan Daemon Transmisi:

    sudo service transmission-daemon stop
    
  2. Edit skrip init.d

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

    ... dan ubah USER=debian-transmissionkeUSER=some_user

Untuk sistem init pemula (mis .: Ubuntu 14.04 LTS):

  1. Hentikan Daemon Transmisi:

    sudo service transmission-daemon stop
    
  2. Edit skrip init:

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

    ... dan edit sebagai berikut:

    • ubah setuid debian-transmissionkesetuid some_user

    • dan ubah setgid debian-transmissionkesetgid some_group

Untuk sistem init systemd (mis: Ubuntu 16.04 LTS):

  1. Hentikan Daemon Transmisi:

    sudo systemctl stop transmission-daemon.service
    
  2. Buat file systemride override.conf:

    sudo systemctl edit transmission-daemon.service
    

    ... dan edit sebagai berikut:

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

    Catatan:

    • Ini menciptakan file berikut: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • Penugasan variabel kosong (misalnya:) User=digunakan untuk menghapus / mereset nilai dalam variabel yang ada. Ini tampaknya bagaimana hal-hal dilakukan ketika menggunakan penggantian drop-in dari file unit systemd. Lihat: "Contoh 2. Mengesampingkan pengaturan vendor" di manual systemd.unit :

      "... untuk file drop-in, jika seseorang ingin menghapus entri dari pengaturan yang diuraikan sebagai daftar (dan bukan ketergantungan), ... kita harus menghapus daftar terlebih dahulu sebelum menambahkan kembali semua entri kecuali salah satu yang harus dihapus ... "

  3. Systemd memuat ulang dan memulai daemon transmisi:

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

    Catatan: Berbeda dengan Upit dan sistem init SysV, transmisi-daemon menyimpan semua konfigurasi dan pengaturan /home/some_user/.config/transmission-daemon/daripada /etc/transmission-daemon/settings.jsondan/var/lib/transmission-daemon

Catatan & Referensi


Informasi Opsional / Tambahan mengenai izin dan pembaruan paket:

Catatan: Berikut ini kemungkinan hanya relevan untuk sistem init Upstart dan SysV saja

Mengubah Izin pada file konfigurasi Transmisi

Jika Anda tidak menggunakan sistem init systemd sekarang Anda mungkin perlu untuk mengubah hak akses untuk file konfigurasi Transmission dari user=debian-transmissionke user=some_userdan dari group=debian-transmissionke group=some_group.

  1. Periksa lokasi Direktori Konfigurasi Transmisi Anda. Anda dapat menemukannya disebutkan dalam /etc/default/transmission-daemonfile sebagai baris seperti:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. Jadi dengan asumsi Direktori Konfigurasi Anda /var/lib/transmission-daemon/info, ubah kepemilikan file konfigurasi:

    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. Ubah kepemilikan file lain:

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

Informasi Tambahan (memperbarui Transmisi):

Karena Anda mengubah pengguna default, Anda mungkin menemukan bahwa setelah memperbarui Transmisi menggunakan repositori (misalnya: apt-get upgrade) daemon transmisi tidak lagi berjalan.

Menjalankan "sudo apt-get -f install" memberikan kesalahan berikut:

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)

Alasan daemon gagal dijalankan ("invoke-rc.d: initcript transmission-daemon, action" start "gagal.") Adalah karena kami mengubah izin dari "debian-transmission" menjadi "some_user" dan setelah pembaruan ini ulang . Jadi untuk memperbaikinya lakukan saja hal berikut:

  1. Hentikan Daemon dan Edit file konfigurasi:

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

    ... dan ubah USER=some_userkeUSER=debian-transmission

  2. Coba ulang memperbaiki pembaruan dengan menjalankan:

    sudo apt-get -f install
    
  3. Jika pembaruan berhasil, daemon Transmisi sekarang harus dijalankan. Anda sekarang dapat mengikuti langkah-langkah di atas untuk mengubah pengguna / grup lagi.

melenguh
sumber
6

Ini bukan cerita lengkap. Selain berubah

setgid <groupname>

dan

setuid <username>

di

/etc/init/transmission-daemon.conf

Anda juga perlu mengubah izin file konfigurasi daemon-transmisi. Kalau tidak, ia tidak akan dapat menulis ulang pengaturan untuk file ini dan daemon akan restart sampai pemula berpikir itu memiliki peluang yang cukup (init: transmisi-daemon respawning terlalu cepat, dihentikan)

sudo chown <user>:<group> /etc/transmission-daemon/settings.json
sudo chown -R <user>:<group> /var/lib/transmission-daemon/ 
mrClass
sumber
Terima kasih untuk sedikit tentang mengubah izin settings.json. Melewatkan itu.
nighthawk454
2

Pada sistem yang menggunakan systemd, file yang ingin Anda edit mungkin sebenarnya:

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

Pengeditan lanjutan dengan:

sudo systemctl daemon-reload

Epskampie
sumber
Inilah yang membantu saya. Saya melakukan semua langkah lain tetapi tidak berhasil. Terima kasih!
Martijn Smidt
2

Di Ubuntu 16.04, layanan startup diubah dari pemula menjadi systemd, membuat jawaban sebelumnya menjadi usang. Untuk mengubah transmisi-daemon yang dijalankan dijalankan:

Hentikan daemon:

sudo service transmission-daemon stop

Ubah kepemilikan file konfigurasi dan "home":

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

Kemudian edit file /lib/systemd/system/transmission-daemon.servicedengan:

[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

Harap perhatikan User, --config-dirdan --log-debugperubahannya.

Muat ulang konfigurasi systemd:

sudo systemctl daemon-reload

Mulai daemon lagi:

sudo service transmission-daemon start

Setelah Anda mengatur opsi --log-debug(yang akan memberi Anda informasi lebih lanjut tentang masalah apa pun), Anda bisa mendapatkan log daemon:

sudo journalctl -u transmission-daemon.service

Selesai

Hal yang perlu diperhatikan:

Anda dapat mengabaikan file:

/etc/default/transmission-daemon: Tampaknya tidak ada yang sumbernya dalam sistem systemd.

/etc/init.d/transmission-daemon: Tampaknya ini adalah skrip start sistem 5 yang lama.

/etc/init/transmission-daemon.conf: Tampaknya ini adalah skrip awal pemula yang baru.

Carolina Aguilar
sumber
2
Jangan mengedit /lib/systemd/system/transmission-daemon.servicesecara manual. Gunakan systemctl edit transmission-daemon.servicesebaliknya, atau perubahan Anda akan hilang saat Anda meningkatkan paket.
muru
0

Saya melakukan yang berikut, yang bagi saya tampaknya kurang invasif daripada jawaban lainnya.

  1. Hapus startup-daemon transmisi:

    sudo update-rc.d -f transmission-daemon remove
    
  2. Tambahkan yang berikut ke /etc/profile:

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

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

Ini mungkin sedikit lebih portabel, ia bekerja untuk saya di Debian dan minibian juga.

nicholas.alipaz
sumber
bukan ide yang buruk tetapi mengharuskan pengguna login dengan shell yang mengeksekusi /etc/profile(zsh tidak menjalankannya, misalnya)
elboletaire