Acesso somente de gravação que pode ver os arquivos presentes?

5

Em nossas escolas, temos compartilhamentos de rede para diferentes classes contendo pastas "Entregue, Entregue". Os alunos põem o seu trabalho na pasta Hand In e os professores colocam tarefas na pasta Hand Out.

A pasta Hand In é aquela em que os alunos têm acesso somente para gravação. [O Mac OS X chama essa pasta de "Caixa de depósito", já que você pode arrastar e soltar arquivos nela, mas não ver o que está dentro dela.]

Eu examinei e concluí que a resposta era não, mas qualquer combinação de permissões e listas de controle de acesso permite que uma pessoa tenha uma pasta com acesso somente para gravação, na qual é possível ver os nomes dos arquivos que residem nela (mas na verdade não abre os arquivos)? Em um evento em que um aluno não sabia se havia entregado um trabalho, isso permitiria que ele verificasse se tinha ou não.

Um passo melhor seria se os alunos pudessem ver os nomes dos arquivos que eles entregaram, mas não os de qualquer outra pessoa.

Atualização: Mais uma nuance real é que os alunos podem precisar entregar pastas inteiras, e não apenas arquivos únicos. O Mac OS X usa pacotes configuráveis - coisas que parecem arquivos para um usuário, mas na verdade são diretórios. (As aplicações são o melhor exemplo, mas Pages, Keynote, e até o TextEdit (quando você adiciona um gráfico ao seu documento), salva pacotes.) Foi necessário algum trabalho extra para que eles pudessem entregar pastas (como você pode veja abaixo).

Aqui faz parte do meu script existente. Note que isso faz o que eu quero, exceto para produzir qualquer tipo de listagem dos arquivos dentro:

$ ADMIN é um usuário administrador do sistema. $ STAFF é um grupo de professores. $ GRADE é um grupo represtando uma nota de alunos. O comando chmod funky é o que se faz para definir as ACLs no OS X.

# Create the hand-in folder
mkdir "Hand In"
chown "$ADMIN:$GRADE" "Hand In"
chmod 4730 "Hand In"
chmod +a "$ADMIN allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "Hand In"
chmod +a "$STAFF allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "Hand In"
chmod +a "$GRADE allow add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,file_inherit,directory_inherit" "Hand In"

O que isso faz é fornecer ao usuário administrador e ao grupo de funcionários acesso total aos arquivos na pasta Hand In (para que possam excluí-los, movê-los etc.) e permitir que os alunos entreguem arquivos ou pastas (mas não vê-los de todo!).

    
por Clinton Blackmore 15.06.2009 / 17:07

5 respostas

4

Dar permissões de leitura no diretório (mas não nos arquivos) deve permitir que os usuários vejam os nomes dos arquivos, mas não leiam os arquivos individuais. Assim, suas permissões no diretório seriam 666, mas nos arquivos seria 600 (supondo que você queira que os alunos possam ler seus próprios arquivos, caso contrário, seriam 200). Eu não sei como fazer isso no OSX para que eles possam ver apenas os arquivos que enviaram. A coisa que você tem que ter cuidado (e eu sou um administrador Unix, não um administrador OSX, então eu não sei como fazê-lo no OSX), é que você precisa ter certeza de que as permissões de diretório não se tornam o permissões padrão para o arquivo no diretório.

    
por 15.06.2009 / 17:33
1

Você pode usar as ACLs principalmente para isso:

Entregar

Estou assumindo que um grupo está sendo usado aqui:

Para o grupo student , você deseja ativar os seguintes flags:

"group:student allow list,add_file,add_subdirectory,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit"

E os seguintes sinalizadores explicitamente desativados:

"group:student deny list,search,file_inherit,limit_inherit,only_inherit"

Os alunos não conseguem ler nenhum dos arquivos nem excluir nenhum. Mas infelizmente eles podem listar todos os arquivos.

Você pode defini-los por meio da linha de comando usando chmod ou usar uma GUI como Sandbox .

Exemplo de uso:

chmod -a "students allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity" /PATH/TO/HAND/IN/FOLDER
chmod -a "students deny list,search,file_inherit,limit_inherit,only_inherit" /PATH/TO/HAND/IN/FOLDER
    
por 15.06.2009 / 19:59
0

Estou assumindo que isso é o windows, certo?

Tivemos muitos problemas fazendo algo assim, onde os usuários trabalhariam com o word / excel doc na pasta "drop off" e eles tinham acesso de gravação (mas não exclusão). Os arquivos temporários se acumulam no Word e no Excel e causam muita dor de cabeça. Isso acontecerá sempre que um usuário clicar duas vezes em um de seus arquivos para visualizá-lo (como o mencionado anteriormente, verificando se ele o transformou) e também sempre que não o nomear corretamente e quiser renomear.

Eventualmente, fornecemos aos usuários acesso padrão de "leitura / gravação / edição / exclusão" e fizemos com que as pessoas que monitoravam as pastas removessem os arquivos quando os recebiam. Os usuários perderam a capacidade de ver o que eles já haviam entregado, mas, ei, nenhum plano é perfeito.

    
por 15.06.2009 / 17:25
0

Segunda vez eu me deparei com essa pergunta, e não vi o que eu supus poderia ser uma boa resposta para você, então deixe isso de lado:

Que tal um site ftp, (benefício de ser independente do sistema operacional, pode ser interno, etc.) Então você poderia bloquear as pastas / arquivos de cada aluno exatamente nesse método?

EDITAR:

Se você considerar essa solução, veja dois links que podem ajudá-lo:

FTP mini-how-to - Como limitar o acesso a um site FTP no Windows Server 2003

SEGUNDO EDIT, (acho que isso pode ser o que você está procurando)

Como configurar um site ftp 'blind-drop'

    
por 15.06.2009 / 19:23
0

O IMO FTP é a maneira mais fácil de realizar o que você procura, mas tenho algumas outras ideias. Tenha em mente que isso é do ponto de vista do nix, então não tenho certeza de como isso se aplicará ao OSX.

Se o compartilhamento OSX permite que você defina o umask para seus usuários, basta dar acesso de leitura / gravação na pasta e configurar os usuários umask para que os novos arquivos que eles criaram tenham apenas permissões de leitura (0770 para que as permissões de usuário e grupo no arquivo sejam definidas como 0).

Uma maneira de fazer isso para um cliente é usar o incron para mover imediatamente todos os locais de arquivos da pasta "Hand In" para outra pasta onde o "professor" possa fazer o que quiser com ele.

Espero que ajude

    
por 15.06.2009 / 19:34