permission e user / group de um programa executado por meio de um script

1

Estou curioso, no cenário a seguir, que tipo de permissão tem um script de shell ou programa Java (owner / group / other)?

Existe um script chamado run.sh e, por sua vez, chama um programa em Java a.java . O script e o java são de propriedade do usuário A e possuem -rwxrw-r-- permissions. Quando eles foram executados pelo usuário A, a qual grupo de permissão eles pertencem? Eles recebem a permissão do usuário A como proprietário?

E há outro usuário B, que está no mesmo grupo com o usuário A. Ele executa run.sh e, por sua vez, chama o programa Java. Agora a que grupo de permissão eles pertencem? Eles recebem a permissão do usuário B como um grupo?

Talvez o programa tente escrever em um diretório /common/abc que tenha permissão de drwxrw-r-- , se o programa tiver permissão de "outro", ele falhará.

Um ponto a notar, é que ambos usam a expressão sh run.sh para executar o script, para que não precisem da permissão de execução. Requer apenas a permissão de leitura?

    
por lamwaiman1988 28.12.2011 / 04:44

1 resposta

1

Todos os processos começam a ser executados como o mesmo usuário e grupo (s) que o processo que os chama, a menos que sejam chamados através de um setuid ou executável setgid, ou seja, um que tenha rws ou r-s ou -ws ou --s em suas permissões. Os bits de permissão diferentes do s bit são irrelevantes. O proprietário do executável só importa se o script é setuid (ou seja, tem o s bit definido na coluna user), e o grupo proprietário importa apenas se o script for setgid (ou seja, tem o s bit definido no grupo coluna.

Portanto, no cenário que você descreve, quando o usuário A executa o script, o script e o programa Java são executados como usuário A e como qualquer grupo ao qual A pertence. Quando eles são executados pelo usuário B, eles são executados como usuário B e como grupo (s) ao qual o usuário B pertence.

A execução de um executável nativo requer permissão de execução e nada mais. A execução de um script (um programa que começa com #! ) requer a permissão de execução (para iniciar a execução, antes de o mecanismo #! assumir) e a permissão de leitura (para o interpretador ler o script). Se você invocar o interpretador explicitamente, o script não precisa ser executável: no que diz respeito ao sistema, é apenas outro arquivo de dados.

    
por 29.12.2011 / 01:08