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

Pagina 4 di 5
prima
1 2 3 4 5 ultimo
Visualizzazione dei risultati da 31 a 40 su 44
  1. #31
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito 8.2_ Configurazione del server.

    codice:
    # Some options that are often worth tuning have been included as
    # commented-out examples in this file.
    #  - When such options are commented with ";", the proposed setting
    #    differs from the default Samba behaviour
    #  - When commented with "#", the proposed setting is the default
    #    behaviour of Samba but the option is considered important
    #    enough to be mentioned here
    Ok.

    codice:
    # NOTE: Whenever you modify this file you should run the command
    # "testparm" to check that you have not made any basic syntactic 
    # errors. 
    # A well-established practice is to name the original file
    # "smb.conf.master" and create the "real" config file with
    # testparm -s smb.conf.master >smb.conf
    # This minimizes the size of the really used smb.conf file
    # which, according to the Samba Team, impacts performance
    # However, use this with caution if your smb.conf file contains nested
    # "include" statements. See Debian bug #483187 for a case
    # where using a master file is not a good idea.
    Rinomino quindi il file smb.conf in smb.conf.master e farò le modifiche su questo, generando poi il file smb.conf con il comando proposto. Nella directory non c'è già un file smb.conf.master quindi debian di default usa il smb.conf completo ma non è un problema.
    codice:
    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.master
    codice:
    #======================= Global Settings =======================
    
    [global]
    
    ## Browsing/Identification ###
    
    # Change this to the workgroup/NT-domain name your Samba server will part of
       workgroup = fracassetti.lan
    
    # server string is the equivalent of the NT Description field
       server string = %h server
    
    # Windows Internet Name Serving Support Section:
    # WINS Support - Tells the NMBD component of Samba to enable its WINS Server
    #   wins support = no
    
    # WINS Server - Tells the NMBD components of Samba to be a WINS Client
    # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
    ;   wins server = w.x.y.z
    
    # This will prevent nmbd to search for NetBIOS names through DNS.
       dns proxy = no
    
    # What naming service and in what order should we use to resolve host names
    # to IP addresses
    ;   name resolve order = lmhosts host wins bcast
    La configurazione di base fatta dal setup. E' già impostato il gruppo di lavoro in fracassetti.lan

    codice:
    #### Networking ####
    
    # The specific set of interfaces / networks to bind to
    # This can be either the interface name or an IP address/netmask;
    # interface names are normally preferred
    ;   interfaces = 127.0.0.0/8 eth0
        interfaces = eth1
    
    # Only bind to the named interfaces and/or networks; you must use the
    # 'interfaces' option above to use this.
    # It is recommended that you enable this feature if your Samba machine is
    # not protected by a firewall or is a firewall itself.  However, this
    # option cannot handle dynamic or non-broadcast interfaces correctly.
    ;   bind interfaces only = yes
       bind interfaces only = yes
    Sarò fissato ma il protocollo SMB non è considerato molto sicuro, sicuramente non per l'uso al di fuori di una rete locale e gli stessi commenti suggeriscono di procedere in questo modo. Per quanto mi riguarda, mi serve solo che sia in ascolto sulla rete locale e l'interfaccia eth1. Visto che ho solo una rete associata all'interfaccia eth1 posso anche specificare solo quella, come indicato nei commenti.

    codice:
    #### Debugging/Accounting ####
    
    # This tells Samba to use a separate log file for each machine
    # that connects
       log file = /var/log/samba/log.%m
    
    # Cap the size of the individual log files (in KiB).
       max log size = 1000
    
    # If you want Samba to only log through syslog then set the following
    # parameter to 'yes'.
    #   syslog only = no
       syslog only = yes
    
    # We want Samba to log a minimum amount of information to syslog. Everything
    # should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
    # through syslog you should set the following parameter to something higher.
     #   syslog = 0
       syslog = 1
    
    # Do something sensible when Samba crashes: mail the admin a backtrace
       panic action = /usr/share/samba/panic-action %d
    Imposto il logging di samba direttamente nel syslog, non mi serve diversamente.

    codice:
    ####### Authentication #######
    # "security = user" is always a good idea. This will require a Unix account
    # in this server for every user accessing the server. See
    # /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
    # in the samba-doc package for details.
    #   security = user
       security = share
    
    # You may wish to use password encryption.  See the section on
    # 'encrypt passwords' in the smb.conf(5) manpage before enabling.
       encrypt passwords = true
    
    # If you are using encrypted passwords, Samba will need to know what
    # password database type you are using.  
       passdb backend = tdbsam
    
       obey pam restrictions = yes
       guest account = guest
       invalid users = root
    
    # This boolean parameter controls whether Samba attempts to sync the Unix
    # password with the SMB password when the encrypted SMB password in the
    # passdb is changed.
       unix password sync = yes
    
    # For Unix password sync to work on a Debian GNU/Linux system, the following
    # parameters must be set (thanks to Ian Kahan < for
    # sending the correct chat script for the passwd program in Debian Sarge).
       passwd program = /usr/bin/passwd %u
       passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    
    # This boolean controls whether PAM will be used for password changes
    # when requested by an SMB client instead of the program listed in
    # 'passwd program'. The default is 'no'.
       pam password change = yes
    Aggiungo le configurazioni per indentificare l'utente che ho creato come il "guest", cioè un identificativo per un utente non autenticato che può accedere alle risorse condivise.

    codice:
    ########## Domains ###########
    
    # Is this machine able to authenticate users. Both PDC and BDC
    # must have this setting enabled. If you are the BDC you must
    # change the 'domain master' setting to no
    #
    ;   domain logons = yes
    #
    # The following setting only takes effect if 'domain logons' is set
    # It specifies the location of the user's profile directory
    # from the client point of view)
    # The following required a [profiles] share to be setup on the
    # samba server (see below)
    ;   logon path = \\%N\profiles\%U
    # Another common choice is storing the profile in the user's home directory
    # (this is Samba's default)
    #   logon path = \\%N\%U\profile
    
    # The following setting only takes effect if 'domain logons' is set
    # It specifies the location of a user's home directory (from the client
    # point of view)
    ;   logon drive = H:
    #   logon home = \\%N\%U
    
    # The following setting only takes effect if 'domain logons' is set
    # It specifies the script to run during logon. The script must be stored
    # in the [netlogon] share
    # NOTE: Must be store in 'DOS' file format convention
    ;   logon script = logon.cmd
    
    # This allows Unix users to be created on the domain controller via the SAMR
    # RPC pipe.  The example command creates a user account with a disabled Unix
    # password; please adapt to your needs
    ; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
    
    # This allows machine accounts to be created on the domain controller via the 
    # SAMR RPC pipe.  
    # The following assumes a "machines" group exists on the system
    ; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
    
    # This allows Unix groups to be created on the domain controller via the SAMR
    # RPC pipe.  
    ; add group script = /usr/sbin/addgroup --force-badname %g
    Questa sezione serve per creare un controller di dominio. Non è il mio caso e non mi serve quindi lascio tutto commentato.

    codice:
    ########## Printing ##########
    
    # If you want to automatically load your printer list rather
    # than setting them up individually then you'll need this
    #   load printers = yes
    
    # lpr(ng) printing. You may wish to override the location of the
    # printcap file
    ;   printing = bsd
    ;   printcap name = /etc/printcap
    
    # CUPS printing.  See also the cupsaddsmb(8) manpage in the
    # cupsys-client package.
    ;   printing = cups
    ;   printcap name = cups
    Non ho neppure stampanti connesse al server quindi anche qui lascio tutto commentato.

    codice:
    ############ Misc ############
    
    # Using the following line enables you to customise your configuration
    # on a per machine basis. The %m gets replaced with the netbios name
    # of the machine that is connecting
    ;   include = /home/samba/etc/smb.conf.%m
    
    # Most people will find that this option gives better performance.
    # See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/speed.html
    # for details
    # You may want to add the following on a Linux system:
    #         SO_RCVBUF=8192 SO_SNDBUF=8192
    #   socket options = TCP_NODELAY
    
    # The following parameter is useful only if you have the linpopup package
    # installed. The samba maintainer and the linpopup maintainer are
    # working to ease installation and configuration of linpopup and samba.
    ;   message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
    
    # Domain Master specifies Samba to be the Domain Master Browser. If this
    # machine will be configured as a BDC (a secondary logon server), you
    # must set this to 'no'; otherwise, the default behavior is recommended.
    #   domain master = auto
    
    # Some defaults for winbind (make sure you're not using the ranges
    # for something else.)
    ;   idmap uid = 10000-20000
    ;   idmap gid = 10000-20000
    ;   template shell = /bin/bash
    
    # The following was the default behaviour in sarge,
    # but samba upstream reverted the default because it might induce
    # performance issues in large organizations.
    # See Debian bug #368251 for some of the consequences of *not*
    # having this setting and smb.conf(5) for details.
    ;   winbind enum groups = yes
    ;   winbind enum users = yes
    
    # Setup usershare options to enable non-root users to share folders
    # with the net usershare command.
    
    # Maximum number of usershare. 0 (default) means that usershare is disabled.
    ;   usershare max shares = 100
    Riguarda sempre le funzionalità di domain controller, non mi interessano.

    codice:
    #======================= Share Definitions =======================
    #[homes]
    #   comment = Home Directories
    #   browseable = no
    
    # By default, the home directories are exported read-only. Change the
    # next parameter to 'no' if you want to be able to write to them.
    #   read only = yes
    Per adesso mi interessa avere a disposizione solo la share /download, poi magari vedremo se ho bisogno di rendere disponibili le home directory di altri utenti... Per ora, commento tutto.

    codice:
    # File creation mask is set to 0700 for security reasons. If you want to
    # create files with group=rw permissions, set next parameter to 0775.
       create mask = 0700
    
    # Directory creation mask is set to 0700 for security reasons. If you want to
    # create dirs. with group=rw permissions, set next parameter to 0775.
       directory mask = 0700
    
    # By default, \\server\username shares can be connected to by anyone
    # with access to the samba server.
    # The following parameter makes sure that only "username" can connect
    # to \\server\username
    # This might need tweaking when using external authentication schemes
    #   valid users = %S
    Tutti gli utenti devono potersi connettere alla share. Quindi commento.
    Un discorso a parte meritano i permessi da indicare su files e directory contenuti nella share: Stò realizzando un serverino che starà in casa mia, non in un ufficio o un'azienda e non ci saranno più utenti a condividere la share. Mi serve che tutti coloro che accedono alle condivisioni possano spostare o eliminare i files contenuti all'interno della condivisione.

    Il discorso da fare sulla forma ottale del permessi Unix non è complicato ma neppure così immediato.
    Una "mask" è il set di permessi che sono attribuiti ad un files o ad una directory. e' indicata solitamente in gruppi da 3 o 4 cifre, di cui ora mi interessano solo le ultime 3. Nell'esempio evidenziato in rosso, il file indica come "File creation mask" il valore "0700" che, considerando solo le ultime 3 cifre, non si legge "settecento" ma "sette-zero-zero".
    Questi cifre indicano i permessi assegnati (in questo caso) ai nuovi file creati nella share. Nell'ordine in cui si leggono di solito, "il proprietario" (user) di questi nuovi files ha "7" come livello di permessi, il "gruppo utente" (group) cui appartiene il proprietario ha "0" e "tutti gli altri" (other) hanno "0".
    Questi livelli si ottengono con delle semplici somme ma, riassumendo velocemente e rimandando a una delle tante spiegazioni reperibili online per gli approfondimenti:
    "0": Nessun permesso
    "1": Esecuzione. Il file può essere eseguito ma non letto o scritto
    "2": Scrittura. Il file può essere scritto ma non aperto per lettura o lanciato
    "3": Il file può essere scritto ed eseguito ma non aperto per lettura
    "4": Il file può essere aperto in lettura ma non scritto ne eseguito
    "5": Il file può essere letto ed eseguito ma non scritto.
    "6": Il file può essere letto e scritto ma non eseguito
    "7": Tutti i permessi. Il file può essere letto, scritto ed eseguito.

    Creare una share con "File creation mask" 0700 significa che l'utente proprietario del file godrà di tutti i permessi su di esso ma nessun'altro utente (a parte root) sarà in grado di lavorare su quel file. Se voglio che l'utente e tutti gli appartenenti al suo gruppo godano di tutti i permessi sul file dovrò usare la mask 770, se invece voglio che tutti possano fare tutto su quel file userò la mask 777.
    Inutile dilungarsi, l'unico modo per capirci qualcosa è leggere le guide e provare...

    codice:
    # Un-comment the following and create the netlogon directory for Domain Logons
    # (you need to configure Samba to act as a domain controller too.)
    ;[netlogon]
    ;   comment = Network Logon Service
    ;   path = /home/samba/netlogon
    ;   guest ok = yes
    ;   read only = yes
    
    # Un-comment the following and create the profiles directory to store
    # users profiles (see the "logon path" option above)
    # (you need to configure Samba to act as a domain controller too.)
    # The path below should be writable by all users so that their
    # profile directory may be created the first time they log on
    ;[profiles]
    ;   comment = Users profiles
    ;   path = /home/samba/profiles
    ;   guest ok = no
    ;   browseable = no
    ;   create mask = 0600
    ;   directory mask = 0700
    Sempre per domain controller, non mi interessa.

    codice:
    #[printers]
    #   comment = All Printers
    #   browseable = no
    #   path = /var/spool/samba
    #   printable = yes
    #   guest ok = no
    #   read only = yes
    #   create mask = 0700
    
    # Windows clients look for this share name as a source of downloadable
    # printer drivers
    #[print$]
    #   comment = Printer Drivers
    #   path = /var/lib/samba/printers
    #   browseable = yes
    #   read only = yes
    #   guest ok = no
    # Uncomment to allow remote administration of Windows print drivers.
    # You may need to replace 'lpadmin' with the name of the group your
    # admin users are members of.
    # Please note that you also need to set appropriate Unix permissions
    # to the drivers directory for these users to have write rights in it
    ;   write list = root, @lpadmin
    Niente stampanti quindi commento tutto.

    codice:
    # A sample share for sharing your CD-ROM with others.
    ;[cdrom]
    ;   comment = Samba server's CD-ROM
    ;   read only = yes
    ;   locking = no
    ;   path = /cdrom
    ;   guest ok = yes
    
    # The next two parameters show how to auto-mount a CD-ROM when the
    #	cdrom share is accesed. For this to work /etc/fstab must contain
    #	an entry like this:
    #
    #       /dev/scd0   /cdrom  iso9660 defaults,noauto,ro,user   0 0
    #
    # The CD-ROM gets unmounted automatically after the connection to the
    #
    # If you don't want to use auto-mounting/unmounting make sure the CD
    #	is mounted on /cdrom
    #
    ;   preexec = /bin/mount /cdrom
    ;   postexec = /bin/umount /cdrom
    Anche qui nessun cdrom da condividere

    Provo quindi a generare il file di configurazione e riavviare samba, con i comandi
    codice:
    sudo testparm -s smb.conf.master >smb.conf
    sudo /etc/init.d/samba restart
    Questo è ora il contenuto del file smb.conf, con solo le istruzioni applicate e ripulito dai commenti:
    codice:
    [global]
    	workgroup = FRACASSETTI.LAN
    	server string = %h server
    	interfaces = eth1
    	bind interfaces only = Yes
    	security = SHARE
    	obey pam restrictions = Yes
    	guest account = guest
    	pam password change = Yes
    	passwd program = /usr/bin/passwd %u
    	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    	unix password sync = Yes
    	syslog only = Yes
    	log file = /var/log/samba/log.%m
    	max log size = 1000
    	dns proxy = No
    	panic action = /usr/share/samba/panic-action %d
    	invalid users = root

    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.

  2. #32
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito 8.3_ Impostazione di una share pubblica.

    Dalla guida citata in precedenza prendo la sezione da aggiungere in fondo al file per creare la mia share di rete:
    codice:
    [Download]
    comment = Risorsa pubblica condivisa
    path = /download
    read only = no
    guest ok = yes
    guest only = yes
    create mask = 0666
    directory mask = 0777
    Il serverino rimane in casa mia, accessibile solo dalla LAN per impostazione data a Samba, non ho altri utenti e mi serve la libertà di muovere, modificare e cancellare liberamente files all'interno della share, esigenza di comodità che ne prevarica la riservatezza.

    Con la configurazione data in precedenza, è l'utente "guest" con cui lavora samba che si presenta al sistema per scrivere i files nella share. A livello di filesystem, quindi, l'utente "owner" dei files e delle directory sarà guest. Anche operando via rete gli spostamenti di files tra una directory e l'altra all'interno della share saranno eseguiti sul server dall'utente guest quindi potrei utilizzare una mask più restrittiva per "create" e "directory".

    Prendiamo però ora il caso in cui io abbia necessità di collegarmi al mio server via ssh con il mio utente "matteo" e avessi bisogno di maneggiare i files presenti nella share configurata usando la mask 0700 per le directory e 0600 per i files, come indicato nella guida.
    Per il sistema, l'owner con diritti "7" o "6" sarà "guest" mentre "matteo" che appartiene agli "others" il permesso attribuito è "0" e quindi non potrò toccare files e directory senza modificarne prima gli attributi o senza usare "sudo" o diventare root.

    Se volessi usare una mask più ristretta ma idonea alle mie esigenze potrei forse usare le mask 0606 e 0707che permetterebbero a "guest" ed a tutti gli altri utenti l'accesso in lettura e scrittura sui files e tutti i permessi sulle directory create nelle share. E' una situazione un pò atipica, in quanto esclude dall'accesso si dati solo gli utenti del server diversi da "guest" ma appartenenti al suo gruppo...
    Una soluzione più standard sarebbe sicuramente rendere "matteo" membro del gruppo "guest" e usare una più standard mask "0660" e "0770".

    Di solito, salvo esigenze particolari, per una soluzione casereccia come la mia si usano con sufficiente tranquillità le mask "0666" e "0777"...

    Provo quindi a rigenerare il file di configurazione e riavviare samba, con i comandi
    codice:
    sudo testparm -s smb.conf.master >smb.conf
    sudo /etc/init.d/samba restart
    Questo è ora il contenuto del file smb.conf:
    codice:
    [global]
    	workgroup = FRACASSETTI.LAN
    	server string = %h server
    	interfaces = eth1
    	bind interfaces only = Yes
    	security = SHARE
    	obey pam restrictions = Yes
    	guest account = guest
    	pam password change = Yes
    	passwd program = /usr/bin/passwd %u
    	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    	unix password sync = Yes
    	syslog only = Yes
    	log file = /var/log/samba/log.%m
    	max log size = 1000
    	dns proxy = No
    	panic action = /usr/share/samba/panic-action %d
    	invalid users = root
    
    [Download]
    	comment = Risorsa pubblica condivisa
    	path = /download
    	read only = No
    	create mask = 0666
    	directory mask = 0777
    	guest only = Yes
    	guest ok = Yes
    La directory, attualmente, è di proprietà di root e presenta i seguenti permessi:
    codice:
    drwxr-xr-x   2 root root     6 Aug 18 17:26 download
    Io ho bisogno che sia anche scrivibile da tutti, altrimenti non sarà possibile creare o modificare file all'interno della directory da parte di utenti non root. Con il comando
    codice:
    sudo chmod -R o=rwx /download
    si assegnano i permessi di lettura, scrittura ed esecuzione a tutti gli utenti non "root" e non appartenenti al gruppo "root" ("u" stà per user, "g" stà per "group" ed "o" stà per "others")
    Ora i permessi sulla directory sono:
    codice:
    drwxr-xrwx   3 root root    17 Aug 18 17:37 download
    Impostare "browseable = no" mi darebbe comunque la possibilità raggiungere la share scrivendone il percorso completo ma non potrei vederla nell'elenco delle risorse disponibili del server: Avrei, insomma, una share "nascosta". Per ora però non mi interessa.



    Fatto, share configurata e scrivibile da Windows e Linux!

    [EDIT: 24 Febbraio 2012]
    Oggi mi sono accorto di diversi errori nel log del server, dovuti ad un problema con il daemon "winbind". Questo daemon è utilizzato per la comunicazione con domini Windows e, dato che la mia rete locale non ha un dominio ma solo un workgroup, di per se il servizio è inutile. E' stato probabilmente installato come dipendenza di samba, dato che generalmente lavorano insieme.
    Eseguire come root o tramite sudo i comandi:
    codice:
    /etc/init.d/winbind stop
    update-rc.d winbind remove
    arresta il servizio e lo rimuove dall'avvio automatico al boot. La funzionalità si samba, in assenza di un dominio windows, non ne viene influenzata.

    [EDIT2: 24 Febbraio 2012]
    Già che ci sono, ho notato che samba tenta continuamente di connettersi al daemon cupsd, per la gestione delle stampanti. Ovviamente, dato non ho stampanti sul server ed il servizio non è installato, anche per questo viene registrato un errore. Qui ho trovato qualche indicazione che per il momento sembra funzionare.
    Ho aggiunto queste istruzioni alla sezione [global] del mio file di configurazione anche se il parse con testparm ha rimosso l'opzione "printing = none" che è quindi probabilmente evitabile:
    codice:
            load printers = No
            printing = none
            printcap name = /dev/null
    e, ovviamente riavviato il daemon.
    Ultima modifica di frakka : 24-02-2012 a 00:35

    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.

  3. #33
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    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.

  4. #34
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito 9.2_ Transmission Remote gui.

    Ora che il daemon è installato e si avvia al boot, è necessario poterlo gestire da remoto.
    Per farlo posso, come detto, utilizzare l'interfaccia web integrata oppure una GUI remota disponibile per windows, linux o mac.

    L'interfaccia web, con le opzioni standard, è raggiungibile all'url http://ip-o-nome-host-del-server:9091.
    E' piuttosto semplice ma funzionale. Se volessi raggiungerla anche da internet dovrei ovviamente ricordarmi di aprire anche la porta 9091 nella catena di input del firewall...

    E', per ovvi motivi, un pò limitata ma ovviamente è pensata principalmente per aggiungere e gestire i download da remoto (cosa che fà egregiamente) ma per sostituire in toto un client installato localmente ci vuole altro.

    Quella che mi serve è una GUI remota:
    Su Windows è disponibile dal sito dell'autore un comodo installer per tutte le piattaforme. E' sufficiente scaricarlo, avviare il setup e inserire nella configurazione i parametri di connessione (Ip, porta e credenziali) per ritrovarci il nostro client perfettamente funzionate.


    Per linux, è possibile installare il pacchetto specifico per la propria distribuzione oppure scaricare i pacchetti .zip precompilati per architettura a 32 o 64 bit forniti dall'autore e lanciare l'eseguibile contenuto, come da istruzione nel file readme. Il file binario si integra con il sistema di notifica di Gnome, quindi quando il server termina un download se c'è la remote-gui aperta mi arriva anche la notifica sul desktop.


    Per vedere i files scaricati cliccando sul file col mouse e selezionando "Apri cartella di destinazione" devo però configurare i client con opzioni specifiche per il sistema in uso. Di seguito, la configurazione che ho utilizzato per Windows e Linux.


    Entrambi gli installer permettono la configurazione dei parametri del daemon che però è necessario ricordarsi di riavviare prima di fare modifiche da linea di comando, per evitare di perdere parte delle impostazioni.
    Allo stato attuale, non sono ancora riuscito a far funzionare la "pickup directory" ma, almeno per ora, non mi serve, magari ci guarderò più avanti.


    That's all folks!!!

    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.

  5. #35
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito 10_ Server FTP con vsftpd.

    In realtà è un thread a parte... Ma sempre basato su questa configurazione.

    Diciamo che mi faccio un pò di cross-posting!!

    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.

  6. #36
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito 9.1b_ Aggiornamento di Transmission daemon.

    Dato che ho scelto di installare una versione del daemon che non sarà inclusa nel repository stabile per molto tempo ancora, rimane mia responsabilità provvedere agli eventuali aggiornamenti.

    E' possibile rimuovere la versione precedente, lanciando il comando con i permessi di root o come sudo:
    codice:
    sudo dpkg -r transmission
    La procedura è identica a quella di installazione, ci sono solo da adattare i percorsi per la versione che si vuole installare:
    codice:
    cd $HOME/transmission_build
    wget http://download-origin.transmissionbt.com/files/transmission-2.42.tar.bz2
    tar xjvf transmission-2.42.tar.bz2
    cd transmission-2.42
    export PKG_CONFIG_PATH="$HOME/transmission_build/libevent/lib/pkgconfig"
    ./configure
    make
    A questo punto, se la compilazione non riporta errori o librerie mancanti, posso scegliere se creare un pacchetto .deb esportabile oppure se installare direttamente la nuova versione del daemon.

    Per installarla direttamente basta eseguire come root o tramite sudo, il comando:
    codice:
    make install
    make clean
    che, in assenza di errori, installa la versione aggiornata del daemon. Il comando "make clean" rimuove i file temporanei usati per la compilazione.
    codice:
    root@server:/root/transmission_build$ transmission-daemon --help
    Transmission 2.42 (13013)  http://www.transmissionbt.com/
    A fast and easy BitTorrent client
    [...]
    In alternativa, dopo il completamento della compilazione, lanciare il seguente comando crea il pacchetto "transmission_2.42-1_amd64.deb" e lo installa direttamente:
    codice:
    sudo checkinstall --pakdir "$HOME/transmission_build" --backup=no --deldoc=yes --fstrans=no --deldesc=yes --delspec=yes --default --pkgversion "2.42"
    make clean
    Anche qui "make clean" rimuove i file temporanei derivati dalla compilazione. Onestamente preferisco questo metodo, altrimenti non è possibile utilizzare "dpkg" per disinstallare il daemon.




    [EDIT del 29 Gennaio 2012]
    Ora sembra funzionare anche la pick-up directory...

    [EDIT del 06 Ottobre 2012]
    La procedura funziona senza problemi fino alla versione 2.71 (ultima versione che ho testato).

    [EDIT del 10 Novembre 2012]
    Anche la versione 2.73 funziona, però la procedura con la generazione del pacchetto riporta parecchi warning, che francamente, non mi pare ci fossero con le versioni precedenti.

    [EDIT del 26 Gennaio 2013]
    Stò aggiornando dalla 2.73 alla versione 2.76. Il pacchetto dei sorgenti sul sito è stato pubblicato nel formato ".tar.xz" che, diversamente dai precedenti, è compresso con l'agoritmo LZMA2 (sostanzialmente quello di 7-Zip). Il comando per decomprimere l'archivio è quindi diverso.
    Nel caso la libreria corretta non sia già installata è necessario installarla con il comando:
    codice:
    sudo apt-get install liblzma2
    Poi si può decomprimere il pacchetto con il comando:
    codice:
    tar Jxf transmission-2.76.tar.xz
    Ultima modifica di frakka : 26-01-2013 a 14:20

    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.

  7. #37
    la mucca di Sunnyvale L'avatar di Daniele
    Registrato
    Sep 2000
    Località
    Alessandria
    Età
    47
    Messaggi
    8,359
    configurazione

    Predefinito

    forse non sembra ma io ti seguo nell'evoluzione della cosa, ma mi domando:

    - per completare l'opera e rendere ancora più sicuro il tutto non ci starebbe anche un server proxy? Settando uin proxy ci potrebbe essere un controllo antivirus di tutto ciò che transita?
    - quando verrà settato il mail server (e soprattutto l'eventuale proxy) non c'è rischio di usurare troppo rapidamente l'ssd? Ovvio credo che si tratta di sole mail per uno o due utenti non dovrebbe essere un problema.

  8. #38
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito

    Originariamente inviato da Daniele
    forse non sembra ma io ti seguo nell'evoluzione della cosa,
    Grazie!!

    Originariamente inviato da Daniele
    ma mi domando:

    - per completare l'opera e rendere ancora più sicuro il tutto non ci starebbe anche un server proxy? Settando un proxy ci potrebbe essere un controllo antivirus di tutto ciò che transita?
    A me non interessa il controllo del traffico, è il gateway/firewall di casa e non ho questa esigenza. Però hai ragione, potrebbe starci. Anche il controllo del traffico in transito tramite sistemi antivirus come ClamAV è parimenti possibile, la ClearOS lo prevede nell'installazione come gateway.
    Il problema non è tanto installare e configurare, ad esempio, squid per operare come proxy e integrare ClamAV, ci sono sicuramente parecchie guide disponibili: E' il lavoro di finitura che ci stà dietro il problema. Ora non ho molto tempo da dedicare all'eventuale risoluzione dei problemi, quindi per ora il beneficio non vale il tempo dedicato.
    In futuro quando avrò tempo di riprendere in mano l'installazione del mailserver (spero presto!) il pacchetto iRedMail installa già anche ClamAV per il controllo della posta e magari, avendo già parte del lavoro fatta...

    Originariamente inviato da Daniele
    - quando verrà settato il mail server (e soprattutto l'eventuale proxy) non c'è rischio di usurare troppo rapidamente l'ssd? Ovvio credo che si tratta di sole mail per uno o due utenti non dovrebbe essere un problema.
    Spero proprio che il traffico generato dal mio server di posta sia gestibile dalla SSD, non credo sia così tanto. Ok che la SSD è un modello economico ma non credo di metterla in crisi per così poco...
    Comunque l'incertezza sulla durata della SSD è stato uno dei motivi che mi ha spinto ha provare la via del RAID ibrido, in mirroring con un disco meccanico...

    Si potrebbe montare direttamente la /var/log in una partizione sul disco meccanico, in modo che il log non siano scritti sulla SSD. Sicuramente è un accorgimento che contribuisce ad allungare la vita del disco.
    Inoltre non è indispensabile configurare il caching sul proxy. Anzi, oggi come oggi se si parla di poche decine di utenti forse sono più i problemi che i benefici...
    Ultima modifica di frakka : 11-03-2012 a 00:50

    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.

  9. #39
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,379
    configurazione

    Predefinito 3.5.5_ Gestione di reti multiple.

    Nello script che ho usato finora ogni volta che ho dovuto abilitare un servizio ho usato il valore "-s 0/0" che significa che l'azione relativa a quella particolare regola/istruzione deve essere applicata a tutto il traffico di rete di provenienza, senza discriminare. Questa scelta non è molto elegante: Sbattersi a configurare tutti i servizi per ascoltare solo sulla rete locale e poi autorizzare dogs&pigs nel firewall anche se dal punto di vista pratico non porta a particolari problemi è quantomeno poco coerente.

    Per migliorare questa situazione, ci sono diverse possibilità.
    Una consiste, ad esempio, nel restringere le connessioni in ingresso autorizzate alla sola interfaccia di rete locale, usando l'opzione "-i $LOCAL_IFACE" in luogo di "-s 0/0" per quei servizi che devono essere accessibili solo dall'interfaccia "inside". Dato che ho due interfacce di rete posso usarle per discriminare le connessioni in ingresso:
    codice:
    $IPT -A tcp_inbound -p TCP -i $LOCAL_IFACE --destination-port 22 -j ACCEPT

    Nel caso però, di un sistema che non operi come gateway o che sia comunque dotato di una sola scheda di rete, questa discriminazione non è più possibile. E' possibile però sostituire il parametro "-s 0/0" indicando le specifiche reti o indirizzi IP da cui si vuole autorizzare (o impedire, perchè no...) il traffico in ingresso o comunque in transito.
    Una pecca o limitazione o comunque particolarità di iptables è l'impossibilità di impostare per il parametro "-s" più destinazioni con un solo comando. Se avessi quindi voluto applicare regole specifiche ad esempio, per autorizzare solo una determinata rete o singoli indirizzi IP, avrei dovuto ripetere l'istruzione per ogni eccezione da gestire.
    Esempio:
    Mettiamo che io mi trovi a dover gestire con questo firewall/router una piccola rete locale che fornisce anche un accesso wireless "ospiti" a cui devo impedire di accedere all'interfaccia di webmin oppure di volere restringere l'accesso al server via webmin ad un solo specifico indirizzo IP.
    Attualmente la regola che ho impostato nello script è questa:
    codice:
    $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 15000 -j ACCEPT
    che autorizza tutte le sorgenti ad accedere alla porta 15000 su cui ho messo in ascolto webmin. Dalla configurazione del tool l'ho configurato per rimanere in ascolto solo sulla rete locale ma con questa istruzione la porta nel firewall è assolutamente aperta anche lato "outside" e chiunque abbia accesso alla rete "inside" può accedere al pannello di webmin.

    Se volessi restringere l'accesso a webmin (ma, più in generale, ad un qualunque servizio di rete) a specifici indirizzi IP o a specifiche reti (ad esempio, per permettere l'amministrazione di webmin da uno specifico IP statico lato internet), dovrei ripetere l'istruzione per ogni eccezione:
    codice:
    $IPT -A tcp_inbound -p TCP -s 192.168.100.0/0 --destination-port 15000 -j ACCEPT
    $IPT -A tcp_inbound -p TCP -s 192.168.10.1 --destination-port 15000 -j ACCEPT
    $IPT -A tcp_inbound -p TCP -s 2.228.5.3 --destination-port 15000 -j ACCEPT
    Finché le reti sono poche o non sono molte le eccezioni poco male ma quando la situazione si inizia a complicare può diventare scomodo.

    Ho quindi apportato una modifica allo script del firewall. Nella sezione "Local settings" all'inizio dello script ho aggiunto una sezione che contiene delle variabili corrispondenti alle reti che devo gestire o alle eccezioni che voglio definire (così agendo solo nella parte iniziale posso aggiornare le impostazioni di tutto lo script, senza dovermi andare a cercare ogni eccezione registrata).
    Ho anche definito la variabile "TRUSTED_SRC" che ho usato per comprendere tutte le reti "trusted"
    codice:
    # Local Settings
    [...]
    # Trusted Networks and source IP
    CASALECCHIO="192.168.10.0/24"
    PODERINA="192.168.7.0/24"
    TRUSTED_SRC="$LOCAL_NET $CASALECCHIO $PODERINA 10.10.10.0/24 77.89.33.26"
    Se voglio quindi autorizzare l'accesso a webmin solo dalla rete 192.168.10.0/24 che ho registrato nella variabile "CASALECCHIO" posso usare il comando
    codice:
    # User specified allowed TCP protocol
    #$IPT -A tcp_inbound -p TCP -s $CASALECCHIO --destination-port 15000 -j ACCEPT
    se invece volgio definire più eccezioni ma non tutte devo necessariamente ripetere le righe:
    codice:
    # User specified allowed TCP protocol
    #$IPT -A tcp_inbound -p TCP -s $CASALECCHIO --destination-port 15000 -j ACCEPT
    #$IPT -A tcp_inbound -p TCP -s 77.89.33.26 --destination-port 15000 -j ACCEPT
    Per ripetere con un solo comando tutte le reti che ho inserito nella variabile "TRUSTED_SRC", non potendo indicare più sorgenti per ogni comando devo modificare l'istruzione in questo modo:
    codice:
    # User specified allowed TCP protocol
    for X in $TRUSTED_SRC
    do
    $IPT -A tcp_inbound -p TCP -s $X --destination-port 15000 -j ACCEPT
    done
    E questo è il risultato, una volta rilanciato lo script:
    codice:
    [...]
    ACCEPT     tcp  --  192.168.100.0/0     anywhere            tcp dpt:15000 
    ACCEPT     tcp  --  192.168.10.0/24      anywhere            tcp dpt:15000 
    ACCEPT     tcp  --  192.168.7.0/24       anywhere            tcp dpt:15000 
    ACCEPT     tcp  --  10.10.10.0/24        anywhere            tcp dpt:15000
    ACCEPT     tcp  --  77.89.33.26        anywhere            tcp dpt:15000
    [...]
    Ultima modifica di frakka : 22-04-2012 a 11:04

    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.

  10. #40
    la mucca di Sunnyvale L'avatar di Daniele
    Registrato
    Sep 2000
    Località
    Alessandria
    Età
    47
    Messaggi
    8,359
    configurazione

    Predefinito

    Noto con piacere che hai aggiunto alcune note al worklog. Come funziona il tuo serverino? Tutto ok? Il mio prosegue bene ed e' da svarite settimane che non ho nemmeno tempo di dare una occhiata ai log....... ma tutto funziona a dovere :-D

    Inviato dal mio Optimus 2X con Tapatalk 2

Pagina 4 di 5
prima
1 2 3 4 5 ultimo

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