Criei uma nova instância do Samba e funciona, mas quando copio novos arquivos para o compartilhamento do Samba, eles são criados com a owner:group
extensão as root:myuser
. Todos os arquivos que eu crio no próprio Linux possuem a extensão myuser:myuser
. Por que o Samba é definido root
como proprietário? Estou ciente das opções force user
e force group
, mas prefiro não usá-las, pois parece que elas se aplicam globalmente a todos os compartilhamentos configurados do Samba; se eu tivesse 2 compartilhamentos configurados com 2 usuários diferentes, gostaria que os arquivos fossem criados com esses respectivos usuários como proprietário e grupo, e root
não deveriam ser proprietário ou grupo para nada.
O relevante smb.conf
é:
[global]
# Make Samba follow symlinks
follow symlinks = yes
wide links = yes
unix extensions = no
# Custom shares
[myuserhome]
path=/home/myuser
browseable=yes
writeable=yes
create mask = 0664
directory mask = 0755
valid users = myuser
admin users = myuser
A resposta à pergunta do título é: porque você disse para fazer exatamente isso.
De
man smb.conf
(ênfase minha):Se você definiu as permissões de diretório corretamente e não tem o hábito de mexer nas coisas em diretórios compartilhados como root, então você não precisa da
admin users
linha na configuração do Samba.Se você estiver configurando um diretório para acesso compartilhado, seja para Samba ou apenas no Linux, a maneira mais fácil de fazer isso é configurar um grupo para ele e, em seguida, definir o diretório compartilhado de nível superior com proprietário
root
, grupo como o grupo que está configurado para este compartilhamento e permissõesdrwxrws---
ou talvezdrwxrwsr-x
se necessário (chmod 2770
ouchmod 2775
respectivamente).Observe que o bit setgid (
chmod g+s
) agora está definido para o diretório: isso significa que a propriedade do grupo será herdada por qualquer novo arquivo ou subdiretório criado neste diretório, e o próprio bit setgid será automaticamente herdado por qualquer novo diretório. Em seguida, compartilhe o diretório com o Samba, se necessário.É importante que você crie apenas o nível superior como root – deixe que os usuários façam o resto .
Se você mesmo precisar manter o conteúdo do diretório compartilhado, adicione sua conta de usuário normal ao grupo que concede acesso de gravação a esse diretório e, em seguida, "faça o necessário" como sua conta de usuário normal . Caso contrário, mantenha suas mãos com root longe desse diretório, a menos que seja absolutamente necessário fazer alguma coisa. Você descobrirá que serão exceções muito raras.
Em um sistema Linux moderno que segue o princípio comum de "grupos de usuários" (ou seja, todos os usuários têm um grupo pessoal com UID=GID atribuído apenas a eles, e o umask não restringe o acesso de gravação do grupo), você não precisa fazer mais nada: tudo simplesmente funciona, e todos que precisam modificar as coisas poderão fazê-lo, com os poderes concedidos pela propriedade do grupo.
A menos que o diretório tenha o sticky bit (
chmod +t
) definido, qualquer pessoa com permissões de gravação em um diretório pode excluir tudo e qualquer coisa dentro dele , incluindo subdiretórios de propriedade do root.