Problemas com permissão de pastas no samba

Iniciado por moizheys, 20 de Janeiro de 2011, 14:49

tópico anterior - próximo tópico

moizheys

Olá pessoal, estou montando um servidor de arquivos e estou tendo problemas para controlar as permissões das pastas.
A situação no momento é a seguinte: O samba está instalado e funcionando.Eu compartilhei uma pasta principal " /servlab " dentro da qual criarei várias outras subpastas,às quais darei permissão total  ao dono e permissão de leitura e gravação aos demais usuários  do grupo. Pra testar criei dois usuários " zeys" e " aluno " , os dois já fazem parte dos mesmos grupos. Criei uma subpasta e dei as permissões de acordo com o código abaixo:

mkdir /servlab/teste
chown -R zeys /servlab/teste
chmod 766 /servlab/teste

Bom meu problema é o seguinte.Com o usuário dono (zeys) , tudo ok , através de uma máquina cliente, consigo acessar e manipular as pastas sem problemas. Mas com o usuário " aluno " que deveria ter acesso de leitura e gravação não funciona legal, no inicio nem acessava as subpastas, dava erro de permissão , aí criei uma nova e restartei o samba aí acessei e consegui ler um conteúdo que se encontrava na subpasta mas não consegui gravar um novo conteúdo.
Se alguém souber onde pode estar o problema , fico no aguardo.

zekkerj

Pasta sem permissão de execução? Ih... com a permissão de leitura, vc pode ver o conteúdo dela, mas sem permissão de execução, vc não pode pesquisar nela --- fica praticamente inútil.

Se é pra ter acesso público, use permissão "777".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

moizheys

Então, só que neste caso o usuário 'aluno' vai poder fazer o que quiser dentro da pasta inclusive excluir os arquivos.
A idéia é a seguinte: imagine uma pasta pra uma instituiçaõ de ensino ,pra salvar trabalhos e provas. O usuário 'aluno' (serão vários usuários , vários alunos) vai fazer seus trabalhos e provas e salvar nesta pasta, quando ele quiser editar um trabalho ele vai la copia pro seu computador edita e depois salva novamente , no entanto não pode ter permissão pra apagar arquivos porque senão algum sacaneador pode ir la e apagar arquivos dos colegas. Já usuário professor pode ter acesso total, para corrigir os trabalhos e provas assim como apagar quando for necessário fazer uma limpeza no diretório.

zekkerj

CitarEntão, só que neste caso o usuário 'aluno' vai poder fazer o que quiser dentro da pasta inclusive excluir os arquivos.
Só se ele tiver permissão de escrita na pasta.

CitarO usuário 'aluno' (serão vários usuários , vários alunos) vai fazer seus trabalhos e provas e salvar nesta pasta
Infelizmente a permissão pra criar arquivos implica na permissão pra apagá-los. O que dá pra fazer, pra diminuir o estrago, é ativar o "sticky bit" na pasta, assim o usuário só pode apagar os próprios arquivos.

Citarno entanto não pode ter permissão pra apagar arquivos porque senão algum sacaneador pode ir la e apagar arquivos dos colegas.
Como eu disse, o "sticky bit" resolve isso.

chmod +t /caminho/da/pasta

Outra coisa que ajuda nesse caso é tirar a permissão de leitura; o usuário vai poder gravar dentro da pasta, vai poder pegar arquivos lá dentro (desde que saiba o nome deles), mas não vai poder ver o conteúdo dela.

chmod ug=rwx,o=wx,+t /caminho/da/pasta

ou

chmod 1773 /caminho/da/pasta

Faça a pasta pertencer ao grupo dos professores:

chgrp professores /caminho/da/pasta

na hora de compartilhar, vc vai usá-la assim:

[Trabalhos]
    comment = Pasta para entrega de trabalhos
    path = /caminho/da/pasta
    valid users = aluno, +alunos, +professores

Vc pode também criar sub-pastas em "/caminho/da/pasta", para cada disciplina. Nesse caso, a pasta "top-level" ficaria R/O, e as tais permissões especiais ficariam nessas sub-pastas:

mkdir /caminho/da/pasta/Portugues-101
mkdir /caminho/da/pasta/Portugues-201
mkdir /caminho/da/pasta/Matematica-102

chmod 755 /caminho/da/pasta
chmod 1773 /caminho/da/pasta/Portugues-101
chmod 1773 /caminho/da/pasta/Portugues-102
chmod 1773 /caminho/da/pasta/Matematica-201

E assim por diante.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

moizheys

Então, ZekKerj , fiz o teste em uma pasta que eu ja estava usando para testes anteriores e a principio funcionou, exatamente como eu queria , o aluno esta acessando a pasta, inclusive lendo os arquivos , gravando dentro da pasta e não está conseguindo excluir. Como implementei todas as sugestões que você me passou não sei ainda qual resolveu, mas vou analisar com calma porque preciso estar bem de apar destas tarefas, porque vai ser uma coisa rotineiro no servidor de arquivos.
A respeito das subpastas , é exatamente isto que eu preciso, vou criar várias subpastas, não por disciplina mas uma pra cada professor.
A respeito do comando "sticky bit" , até achei interessante , pretendo usar em outras situações mas nesta não resolve meu problema, porque como disse , várias pessoas ( todos os alunos) vão usar o mesmo login, então uma pessoa pode criar um documento e outra pode excluir como se fosse ela que tivesse criado, pois obviamente as duas usaram o mesmo login.
Só aproveitando a sua boa vontade pra tirar mais uma dúvida.
Não terei problema em várias estações estarem acessando ao mesmo tempo com o mesmo login né?
Ao final de alguns testes que pretendo fazer postarei mais alguma observação ou resultado.
Por enquanto , muito obrigado

zekkerj

CitarComo implementei todas as sugestões que você me passou não sei ainda qual resolveu
Foram todas, elas se completam.

CitarA respeito do comando "sticky bit" , até achei interessante , pretendo usar em outras situações mas nesta não resolve meu problema, porque como disse , várias pessoas ( todos os alunos) vão usar o mesmo login, então uma pessoa pode criar um documento e outra pode excluir como se fosse ela que tivesse criado, pois obviamente as duas usaram o mesmo login.
Só posso te sugerir pra não fazer isso. Ao invés, crie uma conta pra cada aluno.

Até pq aluno é o pior tipo de usuário que existe. Mexem, fuçam, alteram, fazem derma a torto e a direito. Se vc tiver só uma conta pra todos, não tem como rastrear quem fizer caca no seu servidor.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

moizheys

Pois é , criar um usuário pra cada aluno seria inviável, são aprox. 3000 alunos que usam o Servlab.
Mas não tem um jeito mesmo de separar as opções de gravação e exclusão?
Preciso separar isto para que eu consiga usar o Linux como servidor de arquivos, gostaria muito de testa-lo principalmente por questões de segurança.

zekkerj

CitarMas não tem um jeito mesmo de separar as opções de gravação e exclusão?
Não que eu saiba. Quem pode criar, pode apagar.

Na melhor das hipóteses, pelo fato do usuário não poder ver a listagem do diretório, vai impedir que ele saiba quais são os arquivos dos outros pra apagar intencionalmente, mas não vai impedir que eles apaguem ou sobrescrevam por acidente.

Pq vc não implementa isso via aplicativo web?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

moizheys


zekkerj

#9
Citação de: moizheys online 01 de Fevereiro de 2011, 18:47
Citação de: zekkerj online 28 de Janeiro de 2011, 15:56
Pq vc não implementa isso via aplicativo web?
Como assim?
De um exemplo por favor!
Ué, uma página web [formulário] onde o aluno informa seu nome (ou matrícula), possivelmente uma senha de acesso, o curso, e o arquivo que vai entregar.

A página carrega o arquivo e o salva em um diretório predefinido. Pronto! Sem necessidade de usar o Samba, com todos os problemas que ele pode ter (dificuldade de localização do servidor, necessidade de cadastrar os usuários um a um, possibilidade de um aluno apagar o próprio trabalho ou o de outros).

Como seria muito simples, isso pode ser feito bem rápido, com PHP, ou qualquer outra linguagem RAD.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D