O Samba se recusa a começar com ro rootfs

0

Eu configurei o Raspbian Stretch para montar o rootfs no modo somente leitura. Basicamente eu fiz o seguinte:

apt-get -y remove --purge triggerhappy logrotate dphys-swapfile
apt-get -y install busybox-syslogd; dpkg --purge rsyslog
rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock
ln -s /tmp /var/lib/dhcp; ln -s /tmp /var/run; ln -s /tmp /var/spool; ln -s /tmp /var/lock

e coloque isso em etc/fstab :

proc            /proc           proc    defaults                0       0
/dev/mmcblk0p1  /boot           vfat    defaults,ro             0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime,ro     0       1
/dev/mmcblk0p3  /home           ext4    defaults,noatime        0       2
tmpfs           /tmp            tmpfs   nosuid,nodev            0       0
tmpfs           /var/log        tmpfs   nosuid,nodev            0       0
tmpfs           /var/tmp        tmpfs   nosuid,nodev            0       0

tudo funciona bem, espere que o samba não inicie se o rootfs estiver montado no modo ro. Para ter certeza, eu temporário mounter / como rw e começou como esperado.

Aqui a parte relevante da saída de depuração do smbd:

...
Paths:
SBINDIR: /usr/sbin
BINDIR: /usr/bin
CONFIGFILE: /etc/samba/smb.conf
LOGFILEBASE: /var/log/samba
LMHOSTSFILE: /etc/samba/lmhosts
LIBDIR: /usr/lib/arm-linux-gnueabihf
MODULESDIR: /usr/lib/arm-linux-gnueabihf/samba
SHLIBEXT: so
LOCKDIR: /var/run/samba
STATEDIR: /var/lib/samba
CACHEDIR: /var/cache/samba
PIDDIR: /var/run/samba
SMB_PASSWD_FILE: /etc/samba/smbpasswd
PRIVATE_DIR: /var/lib/samba/private
...
Processing section "[global]"
doing parameter workgroup = WORKGROUP
doing parameter netbios name = MYSAMBA
doing parameter security = user
doing parameter map to guest = Bad User
doing parameter guest account = pi
doing parameter wins support = yes
pm_process() returned Yes
lp_servicenumber: couldn't find homes
get_current_groups: user is in 1 groups: 0
unix_msg_init failed: Read-only file system
messaging_dgm_ref: messaging_dgm_init returned Read-only file system
messaging_dgm_init failed: Read-only file system
messaging_dgm_ref failed: Read-only file system

É bem claro que ele não gosta do sistema de arquivos somente leitura, mas eu não entendo o que impede que ele seja iniciado. E, portanto, como consertar isso!

Se eu não fornecer todas as informações para entender o cenário, por favor, pergunte-me nos comentários!

UPDATE

Depois de adicionar o link simbólico para var/lib e var/cache , também criei um link simbólico de /etc/samba para a partição gravável (não gosto disso, mas não sei como linkar apenas /etc/samba/dhcp.conf.new quando criado).

Agora, a saída é um pouco diferente:

...
lp_servicenumber: couldn't find homes
get_current_groups: user is in 16 groups: 4, 7, 20, 24, 27, 29, 44, 46, 60, 100, 101, 108, 997, 998, 999, 1000
directory_create_or_exist_strict: invalid ownership on directory /var/run/samba/msg.lock
messaging_init: Could not create lock directory: No such file or directory

mas:

$ls -l /var/run/samba
drwxr-xr-x 2 root root 40 Sep 4 13:28 msg.lock
    
por Mark 04.09.2017 / 10:48

1 resposta

0

Estas linhas

LOCKDIR: /var/run/samba
STATEDIR: /var/lib/samba
CACHEDIR: /var/cache/samba
PIDDIR: /var/run/samba

apontam para locais somente leitura, mas o servidor precisa escrever lá, eu acho. Leia a página de manual do smb.conf . As configurações respectivas são lock directory , state directory , cache directory e pid directory . Pelo menos esses quatro devem apontar para locais graváveis.

    
por 04.09.2017 / 12:40