Disable Execução de todos os arquivos no diretório OS X

2

É possível no OS X (Assumir 10.7+) desabilitar a execução de qualquer arquivo (mesmo arquivos em subdiretórios) de uma pasta especificada?

Não quero dizer com chmod , mas com algum tipo de estrutura de segurança. Idealmente, haveria alguma maneira de aplicar uma política a uma pasta que afetaria todas as crianças.

Imagine:

/path/to/folder/: <- policy applied here
    file_a
    subfolder_a/:
        file_b
        subfolder_b/:
            file_c

Nenhuma das file_a , file_b ou file_c seria capaz de ser executada.

Por algum motivo, estou tentando impedir que os usuários executem qualquer programa em seu diretório pessoal.

    
por korylprince 09.01.2014 / 22:33

2 respostas

2

Você pode querer usar uma Lista de Controle de Acesso porque eles fornecem herança e um controle mais refinado ...

O folowing NÃO foi testado em produção. ymmw

Evite que o usuário volte a se dar o direito:

chmod +a "user:jane deny write-security directory-inherit" /path/to/folder

Negar a execução correta para todos os arquivos contidos em / path / to / folder

chmod -R +a "user:jane deny execute" /path/to/folder/

Negar a execução correta para todos os arquivos ainda não contidos em / path / to / folder

chmod +a "user:jane deny execute file-inherit" /path/to/folder/

Detalhes aqui: página do manual da Apple para chmod

    
por 16.01.2014 / 00:43
0

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
    
por 09.01.2014 / 23:29