Samba 4.8 no Ubuntu 16.04

2

Eu compilei da fonte samba 4.8 no Ubuntu xenial, mas não consigo iniciá-lo.

Seguindo as instruções do samba.org, cheguei ao ponto em que em /usr/local/samba/sbin e /usr/local/samba/bin tenho os executáveis, e antes de desinstalar a versão antiga do 4.3 no meu pc salvei o arquivo /etc/init.d/smbd em ordem para fazê-lo funcionar. Mas, mesmo depois de alterar a localização dos binários no arquivo init.d, ele ainda não funciona.

se eu executar o /etc/init.d/smbd start, é isso que obtenho

[....] Starting smbd (via systemctl): smbd.serviceJob for smbd.service failed because the control process exited with error code. See "systemctl status smbd.service" and "journalctl -xe" for details.
failed!

Esta é a saída para journalctl -xe

-- i servizi attivati sono in fase di completamento.
-- 
-- L'avvio del kernel ha richiesto KERNEL_USEC microsecondi.
-- 
-- L'avvio del disco RAM ha richiesto INITRD_USEC microsecondi.
-- 
-- L'avvio dello userspace ha richiesto 24776 microsecondi.
mar 26 23:18:12 apollo systemd[1]: Started User Manager for UID 1001.
-- Subject: L'unità [email protected] termina la fase di avvio
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unità [email protected] ha terminato la fase di avvio.
-- 
-- La fase di avvio è done.
mar 26 23:18:30 apollo sudo[11809]: pam_unix(sudo:session): session closed for user root
mar 26 23:18:46 apollo sudo[11913]: francesco : TTY=pts/1 ; PWD=/home/francesco ; USER=root ; COMMAND=/bin/nano /lib/systemd/system/smbd.service
mar 26 23:18:46 apollo sudo[11913]: pam_unix(sudo:session): session opened for user root by francesco(uid=0)
mar 26 23:19:03 apollo sudo[11913]: pam_unix(sudo:session): session closed for user root
mar 26 23:19:06 apollo sudo[11929]: francesco : TTY=pts/1 ; PWD=/home/francesco ; USER=root ; COMMAND=/etc/init.d/smbd start
mar 26 23:19:06 apollo sudo[11929]: pam_unix(sudo:session): session opened for user root by francesco(uid=0)
mar 26 23:19:06 apollo systemd[1]: Starting Samba SMB/CIFS server...
-- Subject: L'unità smbd.service inizia la fase di avvio
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unità smbd.service ha iniziato la fase di avvio.
mar 26 23:19:06 apollo systemd[1]: smbd.service: Control process exited, code=exited status=1
mar 26 23:19:06 apollo systemd[1]: Failed to start Samba SMB/CIFS server.
-- Subject: L'unità smbd.service è fallita
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unità smbd.service è fallita.
-- 
-- Il risultato è failed.
mar 26 23:19:06 apollo systemd[1]: smbd.service: Unit entered failed state.
mar 26 23:19:06 apollo systemd[1]: smbd.service: Failed with result 'exit-code'.
mar 26 23:19:06 apollo sudo[11929]: pam_unix(sudo:session): session closed for user root

Desculpe por mensagens em italiano, mas as mais importantes são em inglês.

Este é o script init.d

#!/bin/sh

### BEGIN INIT INFO
# Provides:          smbd
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      slapd cups
# Should-Stop:       slapd cups
# Short-Description: start Samba SMB/CIFS daemon (smbd)
### END INIT INFO


PIDDIR=/var/run/samba
SMBDPID=$PIDDIR/smbd.pid

# clear conflicting settings from the environment
unset TMPDIR

# See if the daemons are there
test -x /usr/local/samba/sbin/smbd || exit 0

. /lib/lsb/init-functions

case $1 in
    start)
        if init_is_upstart; then
            exit 1
        fi
        SERVER_ROLE='samba-tool testparm --parameter-name="server role"  2>/dev/null | tail -1'
        if [ "$SERVER_ROLE" = "active directory domain controller" ]; then
            exit 0
        fi

        log_daemon_msg "Starting SMB/CIFS daemon" smbd
        # Make sure we have our PIDDIR, even if it's on a tmpfs
        install -o root -g root -m 755 -d $PIDDIR

        if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/smbd -- -D; then
            log_end_msg 1
            exit 1
        fi

        log_end_msg 0
        ;;
    stop)
        if init_is_upstart; then
            exit 0
        fi

        log_daemon_msg "Stopping SMB/CIFS daemon" smbd

        start-stop-daemon --stop --quiet --pidfile $SMBDPID
        # Wait a little and remove stale PID file
        sleep 1
        if [ -f $SMBDPID ] && ! ps h 'cat $SMBDPID' > /dev/null
        then
            # Stale PID file, remove it (should be removed by
            # smbd itself IMHO).
            rm -f $SMBDPID
        fi

        log_end_msg 0

        ;;
    reload)
        log_daemon_msg "Reloading /etc/samba/smb.conf" smbd

        start-stop-daemon --stop --quiet --signal HUP --pidfile $SMBDPID

        log_end_msg 0
        ;;
    restart|force-reload)
        if init_is_upstart; then
            exit 1
        fi
        $0 stop
        sleep 1
        $0 start
        ;;
        status)
        status_of_proc -p $SMBDPID /usr/local/samba/sbin/smbd smbd
        exit $?
        ;;
    *)
        echo "Usage: /etc/init.d/smbd {start|stop|reload|restart|force-reload|status}"
        exit 1
        ;;
esac

exit 0

E este é o smbd.service

[Unit]
Description=Samba SMB/CIFS server
After=network.target nmbd.service winbindd.service

[Service]
Type=forking
ExecStart=/usr/local/samba/sbin/smbd -D
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

O PIDDIR e o SMBPID são importantes?

Mesmo se eu executar sudo /usr/local/samba/sbin/smbd -D , ainda não receberei nada, nenhum erro e nenhum smb aparecendo em ps aux | grep smb

    
por Francesco Zaffaroni 26.03.2018 / 23:25

1 resposta

2

Após alguns testes, principalmente executando sudo smbd -FS para mostrar a saída como stdout, descobri que o executável localizado em /usr/local/samba/sbin não está carregando o arquivo /etc/samba/smb.conf , mas /usr/local/samba/etc/smb.conf . Depois de copiar o padrão na localização esperada, tudo começou a funcionar corretamente.

Foi provavelmente um sinalizador de configuração que perdi. Espero que ajude alguém com o mesmo problema.

Além disso, como a instalação do processo de origem não o faz, precisei adicionar a pasta smb.service in /etc/avahi/services/ para ser anunciada corretamente.

Eu ainda estou trabalhando em como fazer com que apareça na rede no Windows, mas se conectar com o \ ip.add.re.ss funciona, e no Mac isso é mostrado corretamente.

    
por Francesco Zaffaroni 30.03.2018 / 13:37