Permissões para o diretório FTP: Herdar o proprietário do diretório

2

Estou fazendo várias pastas para usuários (userA /, userB /, etc.) onde qualquer um pode criar / ler um arquivo / pasta em qualquer diretório (userC pode fazer fileX dentro de userA /). No entanto, apenas o proprietário do diretório pode modificar ou excluir os arquivos dentro dessa pasta (o userC só pode modificar / excluir arquivos dentro do userC /).

Eu tentei alterar as permissões do diretório para o 7777, no entanto, o SUID não se aplica aos diretórios.

Como permito que os arquivos enviados herdem o proprietário do diretório?

Editar: UserZ possui o diretório dirZ /. UserZ pode criar (carregar), modificar, excluir e ler tudo dentro de dirZ /. Da mesma forma, UserY possui diretório dirY /. O usuário Y pode criar, modificar, excluir e ler tudo dentro de dirY /.

UserY pode acessar dirZ /. UserY pode criar ou ler qualquer coisa dentro de dirZ /. UserY não pode modificar ou excluir nada dentro de dirZ /.

Da mesma forma, UserZ pode acessar dirY /. UserZ pode criar ou ler qualquer coisa dentro de diry /. UserZ não pode modificar ou excluir nada dentro de dirY /.

    
por BLaZuRE 22.04.2013 / 21:09

2 respostas

2

A maioria das variantes unix não permite usuários para criar arquivos pertencentes a outro usuário, por um bom motivo.

É estranho que você precise disso. Se você quiser que o userC possa criar e excluir arquivos dentro de userA /, forneça permissão de gravação do userC ao diretório. Com sua configuração, a maneira mais fácil seria colocar todos esses usuários em um grupo comum mygroup e tornar todos os diretórios de usuários graváveis por esse grupo.

chgrp mygroup userA userB userC
chmod g+w userA userB userC

Use listas de controle de acesso (ACL) se precisar de mais flexibilidade (por exemplo, vários grupos com permissão para acessar esses diretórios). Veja Faça todos os novos arquivos em um diretório acessível a um grupo se precisar de ajuda para ativar as ACLs em seu sistema.

Se você quiser que os usuários possam modificar arquivos em um diretório diferente do deles, faça com que os arquivos sejam graváveis em grupo ou coloque uma ACL padrão no diretório.

setfacl -d -m group:mygroup:rwx userA userB userC

Se você realmente precisar alterar o proprietário do arquivo (mas por que isso importa, já que todos os arquivos estão acessíveis ao mesmo conjunto de usuários?), você pode fazê-lo por meio de um trabalho executado como raiz quando um arquivo é carregado . No Linux você pode usar uma ferramenta baseada em inotify se você realmente precisa, mas seria melhor mudar a ferramenta que realiza o upload (por um lado, com uma solução baseada em inotify, há uma pequena janela de tempo em que o arquivo tem o erro propriedade).

    
por 24.04.2013 / 03:03
0

Os sistemas de arquivos Unix não possuem controles de acesso semelhantes aos do Windows, o que permite fazer distinção entre criar e modificar um arquivo - uma vez que você concede ao usuário permissão para criar arquivos em um diretório (chmod + w) ele / ela vai ser capaz de modificá-los também. Portanto, você precisa do lado do servidor para fornecer essa funcionalidade extra.

Por exemplo, vsftpd can chown arquivos para conexões anônimas - eu esperaria que ele fosse (mais ou menos facilmente) extensível a outras contas de usuário e as chances são de que outros daemons FTP recurso já.

Se você não precisa necessariamente usar o FTP, o Samba parece ser capaz de fazer o que você precisa - ter um veja a opção (por ação) inherit owner .

    
por 25.04.2013 / 22:02