मैं उपयोगकर्ता ट्रांसमिशन को किस प्रकार से परिवर्तित करूं?


10

मैंने एक PPA के माध्यम से ट्रांसमिशन स्थापित किया और डेम बूट पर शुरू होता है। मैं उस उपयोगकर्ता को बदलना चाहता हूं जो डेमॉन चलाता है क्योंकि मैं चाहता हूं कि डाउनलोड की गई फाइलें मेरे एक्सबीएमसी इंस्टॉलेशन के समान उपयोगकर्ता के अधीन हों, और मुझे यह पता नहीं लग सकता कि कहां संपादित करना है।

डेमॉन अपस्टार्ट का उपयोग करता है इसलिए ऐसा कुछ भी नहीं है जिसके बारे में उपयोगकर्ता इसे चलाते हैं /etc/init.d/transmission-daemonऔर /etc/default/transmission-daemonउपयोगकर्ता के बारे में कुछ भी नहीं है

मैं ट्रांसमिशन के लिए इन ppas का उपयोग कर रहा हूं:

/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

क्या आप कृपया पीपीए और उबंटू का संस्करण प्रदान कर सकते हैं? हर जगह मैंने देखा कि ट्रांसमिशन-डेमन पैकेज में /etc/init.d/transmission-daemon फ़ाइल है।
व्यवस्था करें

क्षमा करें यदि मैं स्पष्ट नहीं था, तो मेरा मतलब था कि कुछ भी नहीं है जिसके बारे में उपयोगकर्ता उस फ़ाइल में डेमॉन चलाता है
BvdBijl

/Etc/init.d/transmission-daemon फ़ाइल के प्रारंभ में आपको "USER = डेबियन-ट्रांसमिशन" लाइन दिखनी चाहिए; यह होना चाहिए।
व्यवस्था करें

मेरा ऐसा दिखता है: gist.github.com/boukevanderbijl/04c7d6a322a08e9629cb
BvdBijl

मैंने कहा कि जो
PPA

जवाबों:


4

Upstart v1.4 के रूप में, setuidऔर setgidconfig फाइल में मूल रूप से समर्थित हैं:

setgid <groupname>

तथा

setuid <username>

V1.4 से पहले आप इसका उपयोग कर सकते हैं ( जैसा यहाँ वर्णित है ):

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

2
मुझे संपादित करना है /etc/init/transmission-daemon.conf
BvdBijl

1
मुझे
सूडो चाउ

15

चूंकि अन्य सभी उत्तर उबंटू प्री-सिस्टमड के लिए हैं, यहां उबंटू 16.04 ( सेंडेकोडोन डॉट कॉम से ) के लिए एक अद्यतन मार्गदर्शिका है । अनिवार्य रूप से, User=...सेटिंग को बदलने के लिए "ट्रांसमिशन-डेमन.स्वाइस" के लिए एक पूरक इकाई बनाएं और फिर उस उपयोगकर्ता की "~ / .config / ट्रांसमिशन-डेमॉन / सेटिंग्स.json" फ़ाइल को अपडेट करें।

प्रसारण बंद करो (यदि यह पहले से चल रहा है)।

sudo systemctl stop transmission-daemon

ट्रांसमिशन के लिए पूरक फ़ाइल निर्देशिका बनाएं:

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

"रन-एज़-यूज़र.कॉन्फ़" नामक एक नई पूरक फ़ाइल बनाएं।

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

और इसमें निम्नलिखित पाठ डालें।

[Service]
User=codon

जाहिर है, अपने वांछित उपयोगकर्ता नाम का उपयोग करें और "कोडन" नहीं।

सिस्टमड को अपनी इकाइयों को फिर से लोड करने के लिए कहें।

sudo systemctl daemon-reload

अगला, आप शुरू करना चाहते हैं और फिर प्रसारण को बंद करने के लिए इसे ~/.config/transmission-daemon/अपने नए उपयोगकर्ता के लिए निर्देशिका बनाने के लिए चाहते हैं ।

प्रसारण शुरू करें और फिर प्रसारण बंद करें।

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

अब आपके पास अपने उपयोगकर्ता के घर निर्देशिका में निम्नलिखित निर्देशिका होनी चाहिए: .config/transmission-daemon/

यहां से, आपको ~/.config/transmission-daemon/settings.jsonसामान्य रूप से अपडेट करने में सक्षम होना चाहिए ।

जब आप पूरा कर लें, तो ट्रांसमिशन शुरू करें।

sudo systemctl start transmission-daemon

3
मैन्युअल रूप से उस निर्देशिका और फ़ाइल को बनाने के बजाय, उपयोग करें systemctl edit transmission-daemon.service, जो स्वचालित रूप से 1. उस निर्देशिका और फ़ाइल को बनाएगा, और 2. जब आप सहेजते हैं और बाहर निकलते हैं, तो भी चलाएं systemctl daemon-reload
मुरु

8

मान्यताओं:

  • आपने इस PPA का उपयोग किया: ppa:transmissionbt/ppa
  • आप उपयोगकर्ता some_userऔर समूह के साथ ट्रांसमिशन चलाना चाहते हैं :some_group

सिस्टम V (SysV) init सिस्टम के लिए (उदाहरण: Ubuntu 10.04 LTS):

  1. ट्रांसमिशन डेमॉन को रोकें:

    sudo service transmission-daemon stop
    
  2. Init.d स्क्रिप्ट को संपादित करें

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

    ... और USER=debian-transmissionकरने के लिए बदल जाते हैंUSER=some_user

अपस्टार्ट इनिट सिस्टम के लिए (उदाहरण के लिए: Ubuntu 14.04 LTS):

  1. ट्रांसमिशन डेमॉन को रोकें:

    sudo service transmission-daemon stop
    
  2. Init स्क्रिप्ट संपादित करें:

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

    ... और निम्नानुसार संपादित करें:

    • परिवर्तन setuid debian-transmissionकरने के लिएsetuid some_user

    • और के लिए बदल setgid debian-transmissionजाते हैंsetgid some_group

सिस्टमड इनिट सिस्टम के लिए (उदाहरण के लिए: Ubuntu 16.04 LTS):

  1. ट्रांसमिशन डेमॉन को रोकें:

    sudo systemctl stop transmission-daemon.service
    
  2. Systemd override.conf फ़ाइल बनाएँ:

    sudo systemctl edit transmission-daemon.service
    

    ... और निम्नानुसार संपादित करें:

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

    टिप्पणियाँ:

    • यह निम्न फ़ाइल बनाता है: /etc/systemd/system/transmission-daemon.service.d/override.conf

    • खाली चर असाइनमेंट (जैसे:) User=का उपयोग मौजूदा चर में मूल्य को साफ / रीसेट करने के लिए किया जाता है। ऐसा लगता है कि सिस्टम यूनिट फ़ाइल के ड्रॉप-इन प्रतिस्थापन का उपयोग करते समय चीजें कैसे की जाती हैं। देखें: systemd.unit मैनुअल में "उदाहरण 2. ओवरराइडिंग विक्रेता सेटिंग" :

      "... ड्रॉप-इन फ़ाइलों के लिए, यदि कोई ऐसी सेटिंग से प्रविष्टियाँ निकालना चाहता है जो सूची के रूप में पार्स की गई है (और निर्भरता नहीं है), ... सभी प्रविष्टियों को पुनः जोड़ने से पहले सूची को पहले साफ़ करना होगा जिसे हटाया जाना है ... "

  3. सिस्टमड रीलोड और ट्रांसमिशन डेमॉन शुरू:

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

    नोट: अपस्टार्ट और SysV इनिट सिस्टम ट्रांसमिशन-डेमॉन /home/some_user/.config/transmission-daemon/के साथ /etc/transmission-daemon/settings.jsonऔर इसके बजाय सभी कॉन्फ़िगरेशन और सेटिंग्स को बचाता है/var/lib/transmission-daemon

नोट्स और संदर्भ


अनुमति और पैकेज अपडेट के संबंध में वैकल्पिक / अतिरिक्त जानकारी:

नोट: निम्नलिखित केवल उपस्टार्ट और SysV init सिस्टम के लिए ही प्रासंगिक है

ट्रांसमिशन की कॉन्फ़िगरेशन फ़ाइलों पर अनुमतियाँ बदलना

यदि आप systemd init सिस्टम का उपयोग नहीं कर रहे हैं, तो अब आपको ट्रांसमिशन की कॉन्फ़िगरेशन फ़ाइलों के user=debian-transmissionलिए user=some_userऔर इसके लिए अनुमतियों को बदलने की आवश्यकता हो सकती group=debian-transmissionहै group=some_group

  1. अपने ट्रांसमिशन कॉन्फ़िगरेशन निर्देशिका के स्थान की जाँच करें। आप इसका उल्लेख /etc/default/transmission-daemonफ़ाइल में एक पंक्ति के रूप में कर सकते हैं जैसे:

    CONFIG_DIR="/var/lib/transmission-daemon/info"
    
  2. इसलिए मान लें कि आपकी कॉन्फ़िगरेशन निर्देशिका है /var/lib/transmission-daemon/info, कॉन्फ़िगरेशन फ़ाइलों का स्वामित्व बदलें:

    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. अन्य फ़ाइलों का स्वामित्व बदलें:

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

अतिरिक्त जानकारी (ट्रांसमिशन को अपडेट करना):

क्योंकि आपने डिफ़ॉल्ट उपयोगकर्ता को बदल दिया था, आप पा सकते हैं कि रिपॉजिटरी का उपयोग करके ट्रांसमिशन अपडेट करने के बाद (जैसे: apt-get upgrade) ट्रांसमिशन डेमन अब नहीं चल रहा है।

"Sudo apt-get -f install" रन करना निम्न त्रुटि देता है:

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)

डेमन शुरू करने में विफल होने का कारण ("इनवोक-आरईआरडी: इनस्क्रिप्टस्क्रिप्ट-डेमॉन, एक्शन" स्टार्ट "विफल रहा।") ऐसा इसलिए है क्योंकि हमने "डेबियन-ट्रांसमिशन" से अनुमतियों को "some_user" में बदल दिया और अपडेट के बाद इसे रीसेट कर दिया। । तो ठीक करने के लिए बस निम्नलिखित करें:

  1. डेमॉन और एडिट फाइल को रोकें:

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

    ... और USER=some_userकरने के लिए बदल जाते हैंUSER=debian-transmission

  2. रन करके फ़िक्सिंग अपडेट को पुनः आज़माएं:

    sudo apt-get -f install
    
  3. यदि अद्यतन सफल होता है तो ट्रांसमिशन डेमॉन को अब चलना चाहिए। अब आप उपयोगकर्ता / समूह को फिर से बदलने के लिए ऊपर दिए गए चरणों का पालन कर सकते हैं।


शानदार जवाब, लेकिन क्या आप SysV पर समूह को बदलना जानते हैं ? मैं देख रहा हूँ /etc/init.d/transmission-daemonशामिल USER=है, लेकिन कोई GROUP=
एमपीएन

6

यह पूरी कहानी नहीं है। बदलने के अलावा

setgid <groupname>

तथा

setuid <username>

में

/etc/init/transmission-daemon.conf

आपको ट्रांसमिशन-डेमॉन की कॉन्फ़िग फ़ाइल की अनुमतियों को भी बदलना होगा। अन्यथा यह इस फ़ाइल में सेटिंग्स को फिर से लिखने में सक्षम नहीं होगा और डेमॉन तब तक फिर से शुरू हो जाएगा जब तक कि यह नहीं लगता कि इसके पास पर्याप्त मौके थे (init: ट्रांसमिशन-डेमन रिस्पॉनिंग बहुत तेज़, बंद)

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

की अनुमति बदलने के बारे में बिट के लिए धन्यवाद settings.json। याद किया कि
रात्रिशोक ४५४

2

सिस्टमड का उपयोग करने वाले सिस्टम पर, जिस फाइल को आप संपादित करना चाहते हैं वह वास्तव में हो सकती है:

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

इसके साथ संपादन का पालन करें:

sudo systemctl daemon-reload


इससे मुझे मदद मिली। मैंने अन्य सभी कदम उठाए, लेकिन काम नहीं किया। धन्यवाद!
Martijn Smidt

2

उबंटू 16.04 में स्टार्टअप सेवा को अपस्टार्ट से सिस्टमड में बदल दिया गया, जिससे पिछले उत्तरों को अप्रचलित होना चाहिए। उपयोगकर्ता ट्रांसमिशन-डेमॉन रन को बदलने के लिए निष्पादित करें:

डेमॉन बंद करो:

sudo service transmission-daemon stop

कॉन्फ़िगरेशन फ़ाइलों और "होम" का स्वामित्व बदलें:

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

फिर फ़ाइल को इसके /lib/systemd/system/transmission-daemon.serviceसाथ संपादित करें :

[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

कृपया ध्यान दें User, --config-dirऔर --log-debugबदल जाता है।

पुनः लोड सिस्टम कॉन्फ़िगरेशन:

sudo systemctl daemon-reload

फिर से शुरू करें:

sudo service transmission-daemon start

एक बार जब आप सेट कर लेते हैं --log-debug(जो आपको किसी भी मुद्दे की अधिक जानकारी देगा) विकल्प से आप डेमन का लॉग प्राप्त कर सकते हैं:

sudo journalctl -u transmission-daemon.service

किया हुआ।

ध्यान देने योग्य बातें:

आप फ़ाइलों को अनदेखा कर सकते हैं:

/etc/default/transmission-daemon: ऐसा लगता है कि कोई भी इसे systemd सिस्टम में सोर्स नहीं कर रहा है।

/etc/init.d/transmission-daemon: ऐसा लगता है कि यह पुरानी प्रणाली 5 स्टार्ट स्क्रिप्ट थी।

/etc/init/transmission-daemon.conf: ऐसा लगता है कि यह पुरानी अपस्टार्ट स्टार्ट स्क्रिप्ट है।


2
/lib/systemd/system/transmission-daemon.serviceमैन्युअल रूप से संपादित न करें । systemctl edit transmission-daemon.serviceइसके बजाय का उपयोग करें , या जब आप पैकेज को अपग्रेड करते हैं तो आपके परिवर्तन खो जाएंगे।
मुरु

0

मैंने निम्नलिखित किया, जो मुझे अन्य उत्तरों की तुलना में कम आक्रामक लगता है।

  1. ट्रांसमिशन-डेमॉन का स्टार्टअप निकालें:

    sudo update-rc.d -f transmission-daemon remove
    
  2. निम्नलिखित को इसमें जोड़ें /etc/profile:

    if [ -f "$HOME/.autostart" ]; then
      $HOME/.autostart
    fi
    
  3. बनाएँ ~/.autostart:

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

यह शायद थोड़ा अधिक पोर्टेबल है, यह मेरे लिए सादे डेबियन और मिनीबियान पर भी काम करता है।


एक बुरा विचार नहीं है, लेकिन इसके लिए यह आवश्यक है कि उपयोगकर्ता एक ऐसे शेल के साथ लॉगिन करे जो निष्पादित करता है /etc/profile(zsh इसे निष्पादित नहीं करता है, उदाहरण के लिए)
elboletaire
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.