relação entre chmod e sudo em um arquivo executável

1

Qual é a relação entre chmod e sudo em um arquivo executável para um usuário?

Os casos em que "um usuário precisa do sudo para executar um executável" são os mesmos que os casos "o chmod não definiu o bit do modo de execução para o usuário"?

Os casos em que "um usuário não precisa de sudo para executar um executável" são os mesmos que os casos "chmod definiu o bit do modo de execução para o usuário"?

Mais especificamente,

  1. Para um arquivo executável, Se chmod não definir sua execução permissão para um usuário, esse usuário deve executar o executável com sudo ou su ?
  2. se chmod definir sua permissão de execução para um usuário, isso significa que o usuário pode executar o executável sem sudo ou su ?
  3. Como você faz um executável ser executado somente com sudo ou su por um determinado usuário?
  4. Por outro lado, se um usuário puder executar um executável somente com sudo ou su , isso significa que chmod não definiu permissão de execução do arquivo executável para o usuário?
por Tim 28.07.2014 / 20:46

2 respostas

2

Primeiro a terminologia. chmod é um programa (e uma chamada de sistema) que permite alterar os bits de permissão de um arquivo em um sistema de arquivos. sudo é um programa especial que permite executar outros programas com credenciais diferentes (geralmente com privilégios elevados, geralmente os do usuário root). su é semelhante, mas menos (leia-se "não") configurável do que sudo - o mais importante é que exige autenticação de usuários com base no conhecimento da senha raiz (que é bastante previsível em relação à segurança).

O bit executável diz se o conteúdo de um arquivo pode ser carregado na memória e executado (ele não diz nada sobre se faz sentido - você pode definir o bit executável de uma imagem JPEG e assisti-la falhar espetacularmente quando você tenta executá-lo).

Agora, para as perguntas:

  1. as permissões são avaliadas quando o executável está sendo carregado. No caso de su e sudo , isso acontece com os IDs efetivos (usuário e grupo - as credenciais usadas na avaliação de privilégios - consulte a página credentials(7) man) do usuário de destino. Portanto, se o usuário de destino tiver permissão para executar o arquivo, ele será executado.

  2. Como mencionado acima: quando o bit executável é definido para o UID ou GID efetivo, ele pode ser executado. Caso contrário, não.

  3. Geralmente, você não faz. Se desejar, você pode marcá-lo como executável somente para determinados IDs e, em seguida, preparar a configuração sudo para permitir que determinados usuários executem esse binário com as credenciais de um dos que têm direitos executáveis no arquivo.

  4. Não. Geralmente, não faz muito sentido impedir que os usuários executem programas que exigem privilégios especiais - os programas devem lidar com a falta deles (normalmente, se possível). Alguns programas têm apenas algumas funcionalidades que não exigem direitos especiais, mas oferecem mais quando executados com privilégios especiais - um exemplo é route : usuários sem privilégios podem usá-lo para exibir tabelas de roteamento do kernel, enquanto os administradores também podem alterá-los. p>

por 28.07.2014 / 22:02
1

Isso pode estar dividindo os cabelos, mas: para executar um arquivo, você deve ter permissão de execução para o arquivo e todos os diretórios que você navega para chegar ao arquivo . Então, se Tom tiver um programa ( do_interesting_stuff ) em seu diretório pessoal ( /home/tom ), e o diretório é protegido 700 (sem acesso para ninguém além de proprietário) mas o arquivo é protegido 755 (permissão de leitura e execução para todos), você ainda não poderá executar /home/tom/do_interesting_stuff "como você mesmo" - você precisará se tornar root (ou tornar-se tom) com sudo ou su para poder executar esse arquivo.

E é claro que a mesma coisa seria verdade Se você quiser ler um arquivo ( interesting_stuff.txt ) no diretório inicial do Tom, no sentido de que você precisaria de acesso de leitura ao arquivo e executam permissão no diretório.

    
por 29.07.2014 / 00:44