Você pode realizar isso por meio de nuances de permissões de proprietário e grupo. Pelo que entendi, o OSX é semelhante ao linux?
Se você não se importa se os usuários podem criar arquivos ou pastas, você pode chown
todos os arquivos para um usuário diferente deles, o que impede que eles possam fazer a permissão de execução. Se os arquivos forem 664 root:users
e o usuário estiver no grupo de usuários, eles poderão editar o arquivo à vontade.
Para evitar que o usuário crie um arquivo (e, portanto, possuindo o chmod
it 7xx), você pode chown
dos diretórios para um usuário diferente, digamos chown staff:users directory
. Para isso, você precisa de um usuário "staff". Você poderia chmod 555
(ou 551 ou 550) os diretórios e 664 os arquivos. Mas isso não é muito útil ... dirs precisam ser executáveis para cd
, legíveis para ls
e graváveis para criar ou excluir arquivos e subpastas. Esta política é um pouco draconiana.
Ou crie chmod
e chown
de modo que os usuários normais não possam executá-los para tornar seus próprios arquivos executáveis. Alguém no grupo "equipe" pode usá-lo, mas não usuários gerais, o que é um compromisso aceitável:
# From:
/bin$ ls -alh ch*
-rwxr-xr-x 1 root root 59K Jan 26 2013 chgrp
-rwxr-xr-x 1 root root 55K Jan 26 2013 chmod
-rwxr-xr-x 1 root root 63K Jan 26 2013 chown
# To:
/bin$ ls -alh ch*
-rwxrwx--- 1 root staff 59K Jan 26 2013 chgrp
-rwxrwx--- 1 root staff 55K Jan 26 2013 chmod
-rwxrwx--- 1 root staff 63K Jan 26 2013 chown
Pesquise usando umask
para ver se há uma maneira de impedir que os usuários criem um arquivo com permissões de execução definidas, que, quando combinadas com as permissões de arquivo acima, podem acabar com a propriedade de seus diretórios.
Preste atenção aos efeitos em cascata ao jogar com permissões e tente visualizar todas as formas em que algo pode dar errado ou ser derrotado. Hackeie-se para ver o que acontece.
A melhor flexibilidade é combinar alguns dos itens acima com o uso cuidadoso dos bits "pegajosos" do proprietário e do grupo. Eles podem ser configurados para que, quando os usuários criarem arquivos ou diretórios, "permaneçam" com a propriedade herdada. Eu faço isso com o RAID compartilhado em nosso servidor Samba para que meu pessoal do Windows tenha uma experiência adequada.
O comando find
é uma ferramenta poderosa para ajudar a fazer o acima:
Altere todos os subdiretórios de 500 para 770 permissões (para reparar um chmod -R
anterior):
find . -type d -perm 500 -print0 | xargs -0 chmod 770
Altere todos os arquivos abaixo (e subdiretados) com permissões de 644 a 664, o que dá permissão ao grupo para editar arquivos: impressionante para arquivos do servidor da Web editados do Windows em um compartilhamento do Samba:
find . -type f -perm 644 -print0 | xargs -0 chmod 664