Tentando configurar o samba para compartilhar minhas unidades (localmente para máquinas virtuais). Usando o Fedora.
Os compartilhamentos funcionam com sudo setenforce 0
, então é um problema do SELinux
Aqui estão minhas regras do SELinux.
sudo semanage fcontext -l | grep samba
/home/hanuman(/.*)? all files system_u:object_r:samba_share_t:s0
/run/media/hanuman(/.*)? all files system_u:object_r:samba_share_t:s0
Aqui está o registro
type=AVC msg=audit(1718035536.971:480): avc: denied { getattr } for pid=7754 comm="smbd[192.168.1." path=2F72756E2F6D656469612F68616E756D616E2F53746F726167652D6E7466732F4D6F73742042656175746966756C204368696E65736520536F6E6720596F752077696C6C20457665722048656172203230313020323031352E6D7033 dev="sda1" ino=228609 scontext=system_u:system_r:smbd_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file permissive=0
o que estou perdendo?
Estou notando smbd_t
vs samba_share_t
, qual é a diferença?
audit2allow -w -a
sugere setsebool -P samba_export_all_rw 1
que, embora funcione, não é a melhor solução.
Bate-papo GPT respondeu:
Isso realmente resolveu o problema; remarcando todas as unidades.
É a primeira vez que recebo uma resposta útil dessa coisa.
EDIT: Na verdade, isso destruiu meu sistema e não consegui mais fazer login. Restorecon parece ser necessário para compartilhamentos de arquivos, MAS fazer isso em toda a sua casa quebra diretamente o seu sistema!
Então essa não é a solução.
O log fala por si: você precisa de uma regra SELINUX permitindo as chamadas dos contextos smb_t para fusefs_t.
Como você pode descobrir que construir sua própria política SELinux do zero pode não ser simples, é melhor considerar o uso de um dos booleanos disponíveis
semanage boolean -l
. Mesmo que não seja “feito à medida”, tem o mérito de existir, e irá poupar-lhe muito tempo.Além disso, o SELINUX é apenas uma camada de segurança entre outras, então não entendo por que você considera que não é uma solução aceitável...
Conforme explicado neste artigo ( https://selinuxproject.org/page/SambaRecipes ), você pode encontrar vários booleanos relacionados a SMB. Basta escolher aquele que melhor se adapta à sua necessidade:
setsebool -P samba_export_all_ro=1
setsebool -P samba_export_all_rw=1
setsebool -P allow_smbd_anon_write=1
setsebool -P samba_enable_home_dirs=1
setsebool -P use_samba_home_dirs=1