rtorrent session permission

Автор conformist, 24 августа 2013, 18:45:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

conformist

доброго времени суток!
второй день ломаю голову над проблемой, уже устал. прошу помощи.
ставлю rtorrent по стандартной инструкции. без создания юзера rtorrent (есть и такой вариант), в прошлый раз ставил — все работало.
вот мой rtorrent.rc:
min_peers = 1
max_peers = 1000
download_rate = 0
upload_rate = 0
dht = auto
directory=/media/files/films/
session=/home/conformist/torrents/.session
schedule = watch_directory_1,10,10,"load_start=/home/conformist/torrents/*.torrent,d.set_custom1=/media/files/films"
schedule = watch_directory_2,10,10,"load_start=/home/conformist/torrents/games/*.torrent,d.set_custom1=/media/files/games"
schedule = watch_directory_3,10,10,"load_start=/home/conformist/torrents/music/*.torrent,d.set_custom1=/media/files/music"
schedule = watch_directory_4,10,10,"load_start=/home/conformist/torrents/other/*.torrent,d.set_custom1=/media/files/other"
schedule = untied_directory,5,5,stop_untied=
schedule = low_diskspace,5,60,close_low_diskspace=100M
execute_log = /home/conformist/torrents/session/rtorrent.log
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/Torrents/Complete/ ;d.set_directory=/Torrents/Complete/"
port_range = 55556-55560
scgi_port = 127.0.0.1:5000
use_udp_trackers = yes
encryption = allow_incoming,enable_retry,prefer_plaintext

созданы соответствующие каталоги в /home/conformist/torrents и /media/files/, есть права на чтение и на запись, владелец — conformist:
~$ ls -ahl torrents/
итого 24K
drwxrwxrwx  6 conformist conformist 4,0K авг 24 15:07 .
drwxr-xr-x 40 conformist conformist 4,0K авг 24 08:29 ..
drwxrwxrwx  2 conformist conformist 4,0K авг 23 23:24 games
drwxrwxrwx  2 conformist conformist 4,0K авг 23 23:24 music
drwxrwxrwx  2 conformist conformist 4,0K авг 23 23:24 other
drwxrwxrwx  2 conformist conformist 4,0K авг 24 15:12 .session

вот скрипт запуска init:
~$ cat /etc/init.d/rtorrent
#!/bin/sh
#############
###<Notes>###
#############
# This script depends on screen.
# For the stop function to work, you must set an
# explicit session directory using ABSOLUTE paths (no, ~ is not absolute) in your rtorrent.rc.
# If you typically just start rtorrent with just "rtorrent" on the
# command line, all you need to change is the "user" option.
# Attach to the screen session as your user with
# "screen -dr rtorrent". Change "rtorrent" with srnname option.
# Licensed under the GPLv2 by lostnihilist: lostnihilist _at_ gmail _dot_ com
##############
###</Notes>###
##############

#######################
##Start Configuration##
#######################
# You can specify your configuration in a different file
# (so that it is saved with upgrades, saved in your home directory,
# or whateve reason you want to)
# by commenting out/deleting the configuration lines and placing them
# in a text file (say /home/user/.rtorrent.init.conf) exactly as you would
# have written them here (you can leave the comments if you desire
# and then uncommenting the following line correcting the path/filename
# for the one you used. note the space after the ".".
# . /etc/rtorrent.init.conf

#Do not put a space on either side of the equal signs e.g.
# user = user
# will not work
# system user to run as
user="conformist"

# the system group to run as, not implemented, see d_start for beginning implementation
# group=`id -ng "$user"`

# the full path to the filename where you store your rtorrent configuration
config="`su -c 'echo $HOME' $user`/.rtorrent.rc"

# set of options to run with
options=""

# default directory for screen, needs to be an absolute path
base="`su -c 'echo $HOME' $user`"

# name of screen session
srnname="rtorrent"

# file to log to (makes for easier debugging if something goes wrong)
logfile="/var/log/rtorrentInit.log"
#######################
###END CONFIGURATION###
#######################
PATH=/usr/bin:/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin
DESC="rtorrent"
NAME=rtorrent
DAEMON=$NAME
SCRIPTNAME=/etc/init.d/$NAME

checkcnfg() {
    exists=0
    for i in `echo "$PATH" | tr ':' '\n'` ; do
        if [ -f $i/$NAME ] ; then
            exists=1
            break
        fi
    done
    if [ $exists -eq 0 ] ; then
        echo "cannot find rtorrent binary in PATH $PATH" | tee -a "$logfile" >&2
        exit 3
    fi
    if ! [ -r "${config}" ] ; then
        echo "cannot find readable config ${config}. check that it is there and permissions are appropriate" | tee -a "$logfile" >&2
        exit 3
    fi
    session=`getsession "$config"`
    if ! [ -d "${session}" ] ; then
        echo "cannot find readable session directory ${session} from config ${config}. check permissions" | tee -a "$logfile" >&2
        exit 3
    fi
}

d_start() {
  [ -d "${base}" ] && cd "${base}"
  stty stop undef && stty start undef
  su -c "screen -ls | grep -sq "\.${srnname}[[:space:]]" " ${user} || su -c "screen -dm -S ${srnname} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
  # this works for the screen command, but starting rtorrent below adopts screen session gid
  # even if it is not the screen session we started (e.g. running under an undesirable gid
  #su -c "screen -ls | grep -sq "\.${srnname}[[:space:]]" " ${user} || su -c "sg \"$group\" -c \"screen -fn -dm -S ${srnname} 2>&1 1>/dev/null\"" ${user} | tee -a "$logfile" >&2
  su -c "screen -S "${srnname}" -X screen rtorrent ${options} 2>&1 1>/dev/null" ${user} | tee -a "$logfile" >&2
}

d_stop() {
    session=`getsession "$config"`
    if ! [ -s ${session}/rtorrent.lock ] ; then
        return
    fi
    pid=`cat ${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g"`
    if ps -A | grep -sq ${pid}.*rtorrent ; then # make sure the pid doesn't belong to another process
        kill -s INT ${pid}
    fi
}

getsession() {
    session=`cat "$1" | grep "^[[:space:]]*session[[:space:]]*=" | sed "s/^[[:space:]]*session[[:space:]]*=[[:space:]]*//" `
    echo $session
}

checkcnfg

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
  stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

собственно, он стандартный, изменил только переменную user
и вот, при выполнении /etc/init.d/rtorrent start я получаю:
cannot find readable session directory /home/conformist/torrents/.session
from config /home/conformist/.rtorrent.rc. check permissions

читал, что возможно файл запуска rtorrent содержит виндовые символы перевод строки, возврат каретки, но нет, файл получен wget'ом и редактировался в nano.
в общем не знаю, что делать, заранее благодарен!

Сообщение объединено: 24 августа 2013, 18:48:31

версия ОС:
~$ uname -a
Linux myWork 3.9-1-686-pae #1 SMP Debian 3.9.8-1 i686 GNU/Linux

версия rtorrent:
~$ aptitude show rtorrent
Пакет: rtorrent                                 
Состояние: установлен
Автоматически установлен: нет
Версия: 0.9.2-1
werwfewr

conformist

#1
создал каталог /home/conformist/session, выставил полные права, как ни странно, все заработало. проблема теперь другая. при запуске от обычного юзера (в консоли rtorrent) — сканирует папки, все запускает как положено, а вот скрипт /etc/init.d/rtorrent не хочет работать. пишет, что запустил, проверяю в процессах — такого процесса нет. что делать?
в логе rutorrent следующее:
[28.08.2013 15:57:58] Bad response from server: (500 [error,remove]) &lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt; &lt;html&gt;&lt;head&gt; &lt;title&gt;500 Internal Server Error&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;h1&gt;Internal Server Error&lt;/h1&gt; &lt;p&gt;The server encountered an internal error or misconfiguration and was unable to complete your request.&lt;/p&gt; &lt;p&gt;Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.&lt;/p&gt; &lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt; &lt;/body&gt;&lt;/html&gt;
притом, на запуск никаких нареканий, кроме того, что он таки не запускается:
~$ /etc/init.d/rtorrent start
Starting rtorrent: rtorrent.


Сообщение объединено: 28 августа 2013, 17:45:20

при добавлении в автозагрузку (update-rc), скрипт выдавал ошибку, решил, добавив в скрипт автозапуска строки:
### BEGIN INIT INFO
# Provides:          rtorrent_autostart
# Required-Start:    $local_fs $remote_fs $network $syslog $netdaemons
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: rtorrent script using screen(1)
# Description:       rtorrent script using screen(1) to keep torrents working without the user logging in
### END INIT INFO

стартует теперь без проблем, но его не видно в netstat, нет открытых портов и соответственно его не видит rutorrent

Сообщение объединено: 28 августа 2013, 23:31:24

все решил. спасибо всем
werwfewr

qupl

Цитата: conformist от 28 августа 2013, 17:00:34все решил. спасибо всем
Поделитесь решением. Что было?