Como definir as futuras permissões de conteúdo na pasta

1

Digamos que eu sou o usuário Alice e eu tenho uma pasta acessível publicamente /samba/public

As permissões da pasta pública do Samba ( /samba/public/ ) são nobody: nogroup e 0777.

Quando Alice tenta copiar algo de sua pasta pessoal para a unidade pública compartilhada

(por exemplo, cp ~/Downloads/* /samba/public ),

Alice deseja que os arquivos recém-copiados sejam editáveis / deletados por todos os convidados que têm acesso ao compartilhamento público do Samba.

Eu quero que os arquivos copiados sejam de propriedade de nobody: nogroup e configurados como 0777.

Em vez disso, o que acontece é que os arquivos recém-copiados são de propriedade do alice: os usuários alice e guest na unidade pública não podem editar ou excluir os arquivos.

Como posso garantir que futuras operações de cópia / movimentação de conteúdo da pasta pessoal de Alice para a pasta compartilhada / pública do Samba sejam de propriedade de nobody: nogroup para que os usuários convidados não sejam impedidos de excluir / editar os arquivos?

    
por chivano 05.07.2018 / 22:23

3 respostas

-1

Em alguns sistemas, é possível definir os bits fixos UID (usuário) e / ou GID (grupo), 4 e 2 nos diretórios:

$ chmod +6000 dir

para criar novas entradas dentro desse diretório para herdar o usuário e / ou grupo do diretório. Então:

$ chown nobody:nogroup /samba/public/
$ chmod +6000 /samba/public/

fará qualquer nova entrada pertencente a nobody:nogroup .

Quanto aos bits de permissão (664) eu recomendo olhar a configuração create mask = 664 inside /etc/samba/smb.conf

    
por 06.07.2018 / 02:21
0

Eu pareço ter isso corrigido agora (touch madeira).

Eu tentei várias correções diferentes, por isso é difícil identificar o que exatamente fez tudo funcionar, mas essas são as etapas que acho que ajudaram:

  1. Eu tenho um aplicativo do Docker em execução que baixa o conteúdo para o meu diretório pessoal (isso parecia irrelevante em o tempo).
  1. Depois de seguir o conselho de @sourcejedi, meu umask foi alterado para 0002 .
  2. Seguindo o conselho dado por @Isaac, consegui criar / copiar / mover arquivos e diretórios do meu diretório pessoal para /samba/public/ e os usuários convidados do Samba puderam renomear / editar / apagar livremente.
  1. No entanto, quando tentei copiar / mover qualquer coisa em meu diretório inicial que foi baixado usando este aplicativo Docker, os usuários convidados do Samba não puderam renomear / editar / excluir livremente (porque o aplicativo Docker estava criando diretórios com um chmod val de 755).

  2. Em seguida, alterei o umask do aplicativo Docker para 0002. Os downloads e diretórios subsequentes gerados pelo aplicativo Docker eram de chmod val 775. Quando esses diretórios são copiados para /samba/public/ , os usuários convidados do Samba podem agora renomeie / edite / delete.

Notas de rodapé:

  • Alterar umask para um valor de sua escolha é tão simples quanto executar umask XXXX , em que XXXX é o valor que você deseja. Você pode verificar seu valor de umask simplesmente digitando umask no terminal.

  • A alteração do umask do aplicativo Docker que eu estava usando foi feita adicionando um novo parâmetro ENV chamado umask e definindo isso como 0002 . Ao iniciar um contêiner do Docker, você pode passar este parâmetro por meio da CLI ou, se usar o Portianer para gerenciar contêineres em execução, poderá transmitir esse parâmetro ENV com a interface da web.

  • Principais ressalvas: Como parte do trabalho, primeiro tentei seguir o conselho dado no Configurando permissões para o thread de pasta comum , bem como tentando usar um padrão User Private Groups (UPG) que o @sourcejedi recomendou antes de seguir o conselho do @ Isaac.

    Se alguém, no futuro, encontrar problemas semelhantes, isso pode ser relevante?

por 06.07.2018 / 13:00
0

Bem-vindo ao U & L! Você provavelmente não precisa de arquivos para se tornar ninguém: nogroup 0777. Eu sinto muito, mas o padrão que você deseja foi quebrado pelo Gnome / systemd (e udisks). Pelo menos, se Alice usar esses no mesmo computador que executa o servidor Samba .

Isso é discutido (não muito claramente) nas perguntas Árvore de diretórios de fotos compartilhada, de leitura / gravação, para usuários normais e Compartilhar pasta / arquivos entre vários usuários no disco ext4

Se Alice não estiver usando o Gnome (incluindo o gerenciador de arquivos Gnome), nem os udisks (para permitir que os usuários montem sistemas de arquivos removíveis) no mesmo computador que executa o servidor Samba, ser capaz de usar o padrão original Grupos particulares de usuários .

IIRC, os sistemas Redhat já definem a umask correta para UPG. Para sistemas baseados em Debian, você pode precisar ativar e configurar o pam_umask. Consulte o link

EDIT: se você tiver que alterar o umask , você também terá que alterar o modo de acesso de qualquer arquivo existente , que você pode querer compartilhar no futuro. Por exemplo. chmod -R g+w $HOME/* ou chmod -R g+w /home/*/* . Do não use chmod -R g+w $HOME . Ele mudará o modo de $HOME/.ssh e provavelmente impedirá que você faça login usando ssh .

Caso contrário, talvez alguém possa sugerir uma solução alternativa com base nessas informações.

Posso sugerir uma alternativa, baseada no thread Setting permissões para a pasta comum

Parece que você deseja que os usuários convidados possam excluir e editar esses arquivos ... isso sugere que eles podem não ser arquivos muito grandes.

A partir das informações que você fornece, parece que Alice pode atuar como convidada, usando o compartilhamento Samba para fazer o upload dos arquivos. ... você só tem que evitar dizer a Alice onde o diretório do Samba está no servidor. E se ela é inteligente o suficiente para encontrá-lo, ela é inteligente o suficiente para ser informada de que os computadores foram um erro e sua ideia perfeitamente lógica não funcionará porque Razões.

(Se você realmente precisasse, você poderia "esconder" o servidor Samba executando-o dentro de um container como o LXC.)

Caso Alice tenha uma conta no servidor Samba que não seja um convidado, também pode ser necessário usar chmod g+s no diretório e em smb.conf set

create mask = 0775
directory mask = 0775
    
por 05.07.2018 / 23:39