[WORKLOG] - Installazione e configurazione di un serverino domestico / small office

Visualizzazione dei risultati da 1 a 10 su 44

Threaded View

Messaggio precedente Messaggio precedente   Prossimo messaggio Prossimo messaggio
  1. #9
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,431
    configurazione

    Predefinito 9.1_ Transmission daemon.

    Per il protocollo bittorrent su Linux ho sempre utilizzato Transmission. Non per un motivo particolare, era il client predefinito installato in gnome... Poi ne ho scoperto alcune feature interessanti tra cui il fatto che questo client ho la possibilità di funzionare anche in modalità daemon, con il controllo tramite interfaccia web. Ancora meglio, di recente ho scoperto che c'è la possibilità di installare direttamente un'interfaccia grafica remota per la connessione e la gestione della modalità daemon in esecuzione su un'altra macchina. In più, questa interfaccia remota è disponibile per Windows, Linux, Mac ed in java, quindi in teoria anche per palmari e smartphone... Si candida pertanto a diventare il client bittorrent perfetto per la mia installazione.

    Il contro è che l'ultima versione disponibile nei repository ufficiali di Debian è però la 2.03-2 mentre l'ultima rilasciata come stabile è una 2.33, che tra l'altro sembra implementare qualche bugfix interessante... Inoltre questa versione Transmission richiede una versione della libreria libevent > 2.0.10 e attualmente in debian c'è la 1.4... La 2.0.5 per Debian è in Alpha, si trova nel repository "Experimental". Non molto confortante: Avrei preferito non compilare da sorgenti e forse sarebbe meglio installare una versione più vecchia di transmission ma a questo punto provo...

    La procedura che devo seguire è quella indicata per l'installazione in una headless machine.

    [EDIT del 23 Giugno 2012:]
    Se dovessero servire i .deb già compilati qui ci sono sia il deb di transmission-daemon che delle libreria libevent. Sono quelli che girano sul mio sistema e li aggiungo mano a mano che aggiorno il daemon: è l'unica garanzia che posso dare.


    Questi sono i requisiti per compilare e generare il pacchetto .deb da installare per transmission-daemon:
    codice:
    sudo apt-get install build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev libglib2.0-dev libevent-dev checkinstall
    La procedura installa circa 250mb di librerie e tools...

    Ho trovato questa guida per ubuntu, che fà esattamente quello che mi serve: Con due comandi installa e compila la versione sperimentale della libreria e crea il pacchetto .deb per la versione 2.32 usando il tool checkinstall.
    I comandi, spezzati per maggiore leggibilità ed adattati alla versione 2.33 sono i seguenti:
    codice:
    mkdir -v $HOME/transmission_build
    cd $HME/transmission_build
    wget http://monkey.org/~provos/libevent-2.0.11-stable.tar.gz
    tar xvf libevent-2.0.11-stable.tar.gz
    cd libevent-2.0.11-stable
    ./configure --prefix=$HOME/transmission_build/libevent
    make
    sudo make install
    La procedura crea la directory transmission_build nella home directory dell'utente corrente, ci scarica dentro la versione 2.0.11-stable dei sorgenti della libreria libevent prelevati dal sito monkey.org:/, scompatta l'archivio e configura, compila ed installa la libreria. Di questa sequenza, l'unico comando che richiede i permessi di superuser è l'installazione, tutto il resto è raccomandabile farlo con i permessi di un utente standard.

    Ora non resta che compilare ed installare la versione aggiornata di transmission-daemon.
    Per la verità, la procedura sopra indicata sulla vm di test è andata liscia e senza intoppi mentre sul server fisico mi ha dato diversi problemi, probabilmente a causa della presenza della versione precedente della libreria. Sul server fisico ho dovuto rimuovere la versione 1.4 con il comando
    codice:
    apt-get purge libevent-1.*
    prima della procedura precedente e creare un link simbolico alla nuova versione dopo l'installazione, con il comando:
    codice:
    ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
    Per installare la versione aggiornata di transmission-daemon è sufficiente eseguire il secondo comando della guida linkata in precedenza, di seguito spezzato per leggibilità ed aggiornato per la versione 2.33:
    codice:
    cd $HOME/transmission_build
    wget http://download.transmissionbt.com/files/transmission-2.33.tar.bz2
    tar xjvf transmission-2.33.tar.bz2
    cd transmission-2.33
    export PKG_CONFIG_PATH="$HOME/transmission_build/libevent/lib/pkgconfig"
    ./configure
    make
    sudo checkinstall --pakdir "$HOME/transmission_build" --backup=no --deldoc=yes --fstrans=no --deldesc=yes --delspec=yes --default --pkgversion "2.33"
    make clean
    In realtà, dovendo installare il programma sulla macchina stessa e non dovendo esportare il pacchetto .deb, gli ultimi due comandi possono essere tranquillamente sostituiti con:
    codice:
    sudo make install
    ma non ci avevo pensato subito...

    Installo ora il pacchetto .deb e lancio il comando "transmission-daemon --help" per verificare che la versione sia quella corretta:
    codice:
    sudo dpkg -i transmission_2.33-1_amd64.deb 
    (Reading database ... 65418 files and directories currently installed.)
    Preparing to replace transmission 2.33-1 (using transmission_2.33-1_amd64.deb) ...
    Unpacking replacement transmission ...
    Setting up transmission (2.33-1) ...
    Processing triggers for man-db ...
    matteo@server:~/transmission_build$ transmission-daemon --help
    Transmission 2.33 (12565)  http://www.transmissionbt.com/
    A fast and easy BitTorrent client


    Ora che il programma è installato, si tratta di creare un utente limitato "transmission" che esegua il processo transmission-daemon all'avvio ma che sia sprovvisto di password (in modo che non possa fare login sulla macchina) e creare uno script che avvii il daemon con le giuste credenziali al boot del server.
    codice:
    sudo adduser --disabled-password transmission
    Ora eseguo un "cambio d'identità" necessario per avviare il processo transmission-daemon e generare una configurazione iniziale che posso poi personalizzare:
    codice:
    sudo su transmission
     transmission-daemon -f
    Se non ci sono messaggi di errore, basta avviare il processo per pochi secondi e poi arrestarlo con il comando "Ctrl +C". Con "exit" riprendo poi la mia identità.


    Devo ora creare quello che si chiama "init script" e cioè lo script caricato al boot del server che avvia il processo transmission-daemon e ne permette la classica gestione start | stop | restart. Sono fortunato e la guida riportata qui indica proprio lo script da utilizzare per le distribuzioni debian-like. Non avendo cambiato la configurazione di transmission ed avendo accettato il nome utente "transmission" non devo modificare nulla quindi copio-incollo lo script aprendo con nano come root il file "/etc/init.d/transmission-daemon" e poi lo rendo eseguibile con i comandi:
    codice:
    sudo chmod +x /etc/init.d/transmission-daemon
    sudo chown root:root /etc/init.d/transmission-daemon
    Provo:
    codice:
    # /etc/init.d/transmission-daemon start
    Starting bittorrent client transmission-daemon...
       Starting bittorrent client transmission-daemon succeeded
    root@server:/home/matteo/transmission_build# /etc/init.d/transmission-daemon stop
    Stopping bittorrent client transmission-daemon...
    start-stop-daemon: warning: this system is not able to track process names
    longer than 15 characters, please use --exec instead of --name.
    Ed il processo rimane appeso... Ahi! Lo script proposto dalla guida non funziona ma questa mia modifica un pò a sentimento alla linea 103 sembra risolvere il problema:
    codice:
    start-stop-daemon --chuid $USERNAME --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --exec $DAEMON
    I comandi
    codice:
    /etc/init.d/transmission-daemon start
     /etc/init.d/transmission-daemon stop
     /etc/init.d/transmission-daemon restart
    funzionano ora come previsto. Il mio init-script corretto, testato e funzionate diventa quindi:
    codice:
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          transmission-daemon
    # Required-Start:    networking
    # Required-Stop:     networking
    # Default-Start:     2 3 5
    # Default-Stop:      0 1 6
    # Short-Description: Start the transmission BitTorrent daemon client.
    ### END INIT INFO
    
    # Original Author: Lennart A. JÃŒtte, based on Rob Howell's script
    # Modified by Maarten Van Coile & others (on IRC)
    
    # Do NOT "set -e"
    
    #
    # ----- CONFIGURATION -----
    #
    # For the default location Transmission uses, visit:
    # http://trac.transmissionbt.com/wiki/ConfigFiles
    # For a guide on how set the preferences, visit:
    # http://trac.transmissionbt.com/wiki/EditConfigFiles
    # For the available environement variables, visit:
    # http://trac.transmissionbt.com/wiki/EnvironmentVariables
    #
    # The name of the user that should run Transmission.
    # It's RECOMENDED to run Transmission in it's own user,
    # by default, this is set to 'transmission'.
    # For the sake of security you shouldn't set a password
    # on this user
    USERNAME=transmission
    
    
    # ----- *ADVANCED* CONFIGURATION -----
    # Only change these options if you know what you are doing!
    #
    # The folder where Transmission stores the config & web files.
    # ONLY change this you have it at a non-default location
    #TRANSMISSION_HOME="/var/config/transmission-daemon"
    #TRANSMISSION_WEB_HOME="/usr/share/transmission/web"
    #
    # The arguments passed on to transmission-daemon.
    # ONLY change this you need to, otherwise use the
    # settings file as per above.
    #TRANSMISSION_ARGS=""
    
    
    # ----- END OF CONFIGURATION -----
    #
    # PATH should only include /usr/* if it runs after the mountnfs.sh script.
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    DESC="bittorrent client"
    NAME=transmission-daemon
    DAEMON=$(which $NAME)
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    
    # Load the VERBOSE setting and other rcS variables
    [ -f /etc/default/rcS ] && . /etc/default/rcS
    
    #
    # Function that starts the daemon/service
    #
    
    do_start()
    {
        # Export the configuration/web directory, if set
        if [ -n "$TRANSMISSION_HOME" ]; then
              export TRANSMISSION_HOME
        fi
        if [ -n "$TRANSMISSION_WEB_HOME" ]; then
              export TRANSMISSION_WEB_HOME
        fi
    
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
                --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \
                || return 1
        start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
                --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \
                || return 2
    }
    
    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --chuid $USERNAME --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --exec $DAEMON
      # start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --name $NAME
            RETVAL="$?"
            [ "$RETVAL" = 2 ] && return 2
    
         # Wait for children to finish too if this is a daemon that forks
         # and if the daemon is only ever run from this initscript.
         # If the above conditions are not satisfied then add some other code
         # that waits for the process to drop all resources that could be
         # needed by services started subsequently.  A last resort is to
         # sleep for some time.
    
         start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
            [ "$?" = 2 ] && return 2
    
            # Many daemons don't delete their pidfiles when they exit.
            rm -f $PIDFILE
    
            return "$RETVAL"
    }
    
    case "$1" in
      start)
            echo "Starting $DESC" "$NAME..."
            do_start
            case "$?" in
                    0|1) echo "   Starting $DESC $NAME succeeded" ;;
                    *)   echo "   Starting $DESC $NAME failed" ;;
            esac
            ;;
      stop)
            echo "Stopping $DESC $NAME..."
            do_stop
            case "$?" in
                    0|1) echo "   Stopping $DESC $NAME succeeded" ;;
                    *)   echo "   Stopping $DESC $NAME failed" ;;
            esac
            ;;
      restart|force-reload)
            #
            # If the "reload" option is implemented then remove the
            # 'force-reload' alias
            #
            echo "Restarting $DESC $NAME..."
            do_stop
            case "$?" in
              0|1)
                    do_start
                    case "$?" in
                        0|1) echo "   Restarting $DESC $NAME succeeded" ;;
                        *)   echo "   Restarting $DESC $NAME failed: couldn't start $NAME" ;;
                    esac
                    ;;
              *)
                    echo "   Restarting $DESC $NAME failed: couldn't stop $NAME" ;;
            esac
            ;;
      *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 3
            ;;
    esac
    Ora che il software è installato ed il sistema configurato per avviarlo al boot, è necessario configurare anche transmission. Il daemon viene eseguito dall'utente "transmission" quindi la configurazione da modificare si trova nella home directory di questo utente e precisamente nel percorso:
    codice:
     /home/transmission/.config/transmission-daemon
    E' necessario ricordarsi di fermare il daemon con il comando
    codice:
    /etc/init.d/transmission-daemon stop
    prima di modificare la configurazione altrimenti il programma, chiudendosi, sovrascrive il file di configurazione con le impostazioni correnti, eliminando eventuali modifiche fatte dopo l'ultimo avvio.

    Questo è il file di configurazione di default.
    codice:
    {
        "alt-speed-down": 50, 
        "alt-speed-enabled": false, 
        "alt-speed-time-begin": 540, 
        "alt-speed-time-day": 127, 
        "alt-speed-time-enabled": false, 
        "alt-speed-time-end": 1020, 
        "alt-speed-up": 50, 
        "bind-address-ipv4": "0.0.0.0", 
        "bind-address-ipv6": "::", 
        "blocklist-enabled": false, 
        "blocklist-url": "http://www.example.com/blocklist", 
        "cache-size-mb": 4, 
        "dht-enabled": true, 
        "download-dir": "/home/transmission/Downloads", 
        "encryption": 1, 
        "idle-seeding-limit": 30, 
        "idle-seeding-limit-enabled": false, 
        "incomplete-dir": "/home/transmission/Downloads", 
        "incomplete-dir-enabled": false, 
        "lpd-enabled": false, 
        "message-level": 2, 
        "peer-congestion-algorithm": "", 
        "peer-limit-global": 240, 
        "peer-limit-per-torrent": 60, 
        "peer-port": 51413, 
        "peer-port-random-high": 65535, 
        "peer-port-random-low": 49152, 
        "peer-port-random-on-start": false, 
        "peer-socket-tos": "default", 
        "pex-enabled": true, 
        "port-forwarding-enabled": true, 
        "preallocation": 1, 
        "prefetch-enabled": 1, 
        "ratio-limit": 2, 
        "ratio-limit-enabled": false, 
        "rename-partial-files": true, 
        "rpc-authentication-required": false, 
        "rpc-bind-address": "0.0.0.0", 
        "rpc-enabled": true, 
        "rpc-password": "{112c502b40dc4eb6ef8c5771f18666f2c30cb19e5abEdhD.", 
        "rpc-port": 9091, 
        "rpc-url": "/transmission/", 
        "rpc-username": "", 
        "rpc-whitelist": "127.0.0.1", 
        "rpc-whitelist-enabled": true, 
        "script-torrent-done-enabled": false, 
        "script-torrent-done-filename": "", 
        "speed-limit-down": 100, 
        "speed-limit-down-enabled": false, 
        "speed-limit-up": 100, 
        "speed-limit-up-enabled": false, 
        "start-added-torrents": true, 
        "trash-original-torrent-files": false, 
        "umask": 18, 
        "upload-slots-per-torrent": 14, 
        "utp-enabled": true
    }
    La spiegazione delle varie voci si trova in questa pagina della documentazione online. La parte per me più interessante, è la configurazione dell'interfaccia web (che mi servirà anche per configurare l'interfaccia remota).
    codice:
    "rpc-authentication-required": false, 
        "rpc-bind-address": "0.0.0.0", 
        "rpc-enabled": true, 
        "rpc-password": "{112c502b40dc4eb6ef8c5771f18666f2c30cb19e5abEdhD.", 
        "rpc-port": 9091, 
        "rpc-url": "/transmission/", 
        "rpc-username": "", 
        "rpc-whitelist": "127.0.0.1", 
        "rpc-whitelist-enabled": true,
    E' possibile attivare l'accesso autenticato con username e password all'interfaccia web, decidere su quale porta dovrà andare in ascolto l'interfaccia web, eventuali whitelist o range di IP autorizzati, sempre per evitare o consentire accessi non autorizzati dall'esterno. Sempre da questo file di configurazione, è possibile decidere quale porta utilizzare per bittorrent, che dovrà poi essere aperta sul firewall.
    Io ho usato il client installato sul mio desktop per creare una configurazione che potesse andare bene anche per il daemon sul server e ho copiato il file di configurazione dal mio desktop al server. Nella documentazione non c'è scritto che algoritmo è utilizzato per cifrare la password, quindi il fatto di averla inserita in chiaro dall'interfaccia grafica è sicuramente un comodità... Credo comunque che sia un md5.

    Infine, l'impostazione del parametro "umask" a "0" fà in modo che il trasmission salvi i file scaricati assegnando come permessi di default "666" e quindi concedendo a tutti gli utenti i permessi di lettura e scrittura sui files scaricati. L'interpretazione di questi valori non è molto intuitiva: Il file di configurazione utilizza il "json markup language" e questo formato prevede ed accetta solo numeri in base decimale: "18" è la conversione in base decimale del valore "022" ottale che corrisponde ai permessi di "-rw-r--r--". "0" è la conversione decimale del valore ottale "000" che applicato come mascheramento restituisce, appunto, "666" Per stabilire quindi il valore del parametro bisogna determinale in forma ottale i permessi che si vuole che i file possiedano, determinare il valore ottale della umask da applicare (usando 0666 come valore di partenza, similmente a quanto descritto qui per vsftpd) e convertire questo valore in un numero in base decimale, usando magari una calcolatrice scientifica...

    Questo è il file di configurazione che utilizzo sul mio server:
    codice:
    {
        "alt-speed-down": 50, 
        "alt-speed-enabled": false, 
        "alt-speed-time-begin": 540, 
        "alt-speed-time-day": 127, 
        "alt-speed-time-enabled": false, 
        "alt-speed-time-end": 1020, 
        "alt-speed-up": 50, 
        "bind-address-ipv4": "0.0.0.0", 
        "bind-address-ipv6": "::", 
        "blocklist-enabled": false, 
        "blocklist-updates-enabled": true, 
        "blocklist-url": "http://www.example.com/blocklist", 
        "cache-size-mb": 2, 
        "compact-view": false, 
        "dht-enabled": true, 
        "download-dir": "/download/transmission", 
        "encryption": 1, 
        "idle-seeding-limit": 30, 
        "idle-seeding-limit-enabled": false, 
        "incomplete-dir": "/download/transmission/incompleti", 
        "incomplete-dir-enabled": true, 
        "inhibit-desktop-hibernation": false, 
        "lazy-bitfield-enabled": true, 
        "lpd-enabled": false, 
        "main-window-height": 534, 
        "main-window-is-maximized": 0, 
        "main-window-width": 674, 
        "main-window-x": 1157, 
        "main-window-y": 425, 
        "message-level": 2, 
        "open-dialog-dir": "/download/transmission", 
        "open-file-limit": 32, 
        "peer-congestion-algorithm": "", 
        "peer-limit-global": 240, 
        "peer-limit-per-torrent": 60, 
        "peer-port": 51413, 
        "peer-port-random-high": 65535, 
        "peer-port-random-low": 49152, 
        "peer-port-random-on-start": false, 
        "peer-socket-tos": "default", 
        "pex-enabled": true, 
        "play-download-complete-sound": false, 
        "port-forwarding-enabled": true, 
        "preallocation": 1, 
        "prefetch-enabled": 1, 
        "prompt-before-exit": true, 
        "proxy": "", 
        "proxy-auth-enabled": false, 
        "proxy-auth-password": "", 
        "proxy-auth-username": "", 
        "proxy-enabled": false, 
        "proxy-port": 80, 
        "proxy-type": 0, 
        "ratio-limit": 2, 
        "ratio-limit-enabled": false, 
        "rename-partial-files": true, 
        "rpc-authentication-required": true, 
        "rpc-bind-address": "0.0.0.0", 
        "rpc-enabled": true, 
        "rpc-password": "hash-della-password", 
        "rpc-port": 9091, 
        "rpc-url": "/transmission/", 
        "rpc-username": "matteo", 
        "rpc-whitelist": "127.0.0.1,192.168.150.*", 
        "rpc-whitelist-enabled": true, 
        "script-torrent-done-enabled": false, 
        "script-torrent-done-filename": "/home/matteo", 
        "show-backup-trackers": false, 
        "show-desktop-notification": false, 
        "show-extra-peer-details": false, 
        "show-filterbar": true, 
        "show-notification-area-icon": false, 
        "show-options-window": false, 
        "show-statusbar": true, 
        "show-toolbar": true, 
        "show-tracker-scrapes": true, 
        "sort-mode": "sort-by-name", 
        "sort-reversed": false, 
        "speed-limit-down": 100, 
        "speed-limit-down-enabled": false, 
        "speed-limit-up": 10, 
        "speed-limit-up-enabled": true, 
        "start-added-torrents": true, 
        "statusbar-stats": "total-ratio", 
        "trash-original-torrent-files": false, 
        "umask": 0, 
        "upload-slots-per-torrent": 14, 
        "user-has-given-informed-consent": true, 
        "utp-enabled": true, 
        "watch-dir": "/download/transmission/pickup", 
        "watch-dir-enabled": true
    }
    Infine, devo poi ricordarmi di aprire nella catena INPUT di netfilter la porta configurata in transmission-daemon aggiungendo, allo script che configura il firewall al boot, la regola:
    codice:
    # Regola che apre la porta in uso da transmission-daemon
    $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 51413 -j ACCEPT

    Per impostare il sistema per avviare automaticamente transmission-daemon al boot, devo usare il comando:
    codice:
    update-rc.d transmission-daemon defaults
    codice:
    root@server:/home/matteo# update-rc.d transmission-daemon defaults
    update-rc.d: using dependency based boot sequencing
    update-rc.d: warning: transmission-daemon start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (2 3 5)
    L'output ci avvisa che il nostro script prevede di avviare il daemon anche al runlevel 4 invece che ai soli runlevel 2, 3 e 5 previsti dalla Linux Standard Base... Poco male, lo lascio così ma se volessi fare il pignolo potrei specificare a mano i runlevel da utilizzare per avvio ed arresto del daemon con il comando:
    codice:
    update-rc.d transmission-daemon start 20 2 3 5 . stop 80 0 1 6 .
    in cui "20" e "80" sono valori che indicano semplicemente una la priorità standard e i valori "2, 3, 5" i runlevel di avvio e 0, 1 e 6 i runlevel di arresto.

    Ora posso avviare il mio daemon riavviando il server, per essere sicuro che si riavvii al boot oppure usando il comando:
    codice:
    sudo /etc/init.d/transmission-daemon start
    Nota:
    Nel mio caso, uso la directory "\download" e alcune sue sottodirectory nella configurazione di transmission-daemon. Perchè il tutto funzioni è necessario, ovviamente, che l'utente "transmission" abbia i permessi di lettura e scrittura su quelle directory. Il daemon non crea ne modifica le directory in automatico quindi è necessario che tali directory esistano e siano configurate con i permessi corretti.
    Nel mio caso, essendo la directory /download di proprietà di root, ho usato il comando
    codice:
    sudo chmod -R o=rwx /download
    per far si la directory /download e tutte le sue sottodirectory fossero scrivibili da tutti gli utenti non appartenenti al gruppo di root, quindi anche dall'utente transmission. E' lo stesso comando usato per rendere la share accessibile tramite samba, quindi nel caso non è necessario ripeterlo.
    Ultima modifica di frakka : 23-06-2012 a 18:39

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Tags

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022