Permitir um usuário específico ou acesso root do grupo sem senha para / bin / date

7

Como o título sugere, gostaria de conceder ao usuário ou grupo acesso root completo ao comando / bin / date, incluindo qualquer forma de argumento, conforme definido nas páginas man.

Entendo que /etc/sudoers espera definições explícitas de comando, por isso atualmente tenho o seguinte:

%some_group ALL=(root) NOPASSWD: /bin/date

por exemplo. Eu quero que qualquer usuário em algum_grupo seja capaz de executar:

sudo /bin/date +%T "12:34:56"

Mais inúmeras outras combinações de argumentos.

Eu acho que a minha pergunta é, existe uma maneira de usar curingas regex ou seguro (ênfase em segurança!) para obter a granularidade mais fina?

UPDATE

Consegui alcançar algo semelhante com o Cmnd_Alias. Por que isso não funciona sem é um mistério além de ter tempo para ler mais sobre o funcionamento interno de sudo e sudoers.

Sua sintaxe não foi bem aceita, mas consegui o que eu precisava com o seguinte:

Cmnd_Alias DATE=/bin/date
%some_group ALL=(root) NOPASSWD: DATE

Isso fez exatamente o que eu precisava como membro do grupo definido.

    
por peterRepeater 05.06.2013 / 14:05

2 respostas

6

Você pode usar o comando sudo para fazer isso. Se você adicionar a seguinte regra ao seu arquivo / etc / sudoers da seguinte forma:

Como root ou usando o sudo da sua conta de usuário normal:

$ sudo visudo

Isso abrirá o arquivo /etc/sudoers no vi / vim. Depois de aberto, adicione estas linhas:

Cmnd_Alias NAMEOFTHIS=/bin/date
ALL ALL=NOPASSWD: NAMEOFTHIS

Onde "usuários" é um grupo unix do qual todos os usuários são membros. Você pode determinar em qual grupo os usuários estão com o comando groups <username> ou procurar nos arquivos /etc/groups e /etc/passwd .

Se você tem uma seção como essa, eu adicionaria as regras acima aqui assim:

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

# my extra rules
Cmnd_Alias NAMEOFTHIS=/bin/date
ALL ALL=NOPASSWD: NAMEOFTHIS
    
por 05.06.2013 / 14:19
10

Se você está no GNU / Linux e sente algo "novo" (sic) pam_cap.so pode dar a usuários específicos CAP_SYS_TIME o que deve permitir que usuários regulares alterem a hora do sistema sem sudo ou su . Você basicamente apenas o configura como um módulo de sessão, no entanto, eles estão autenticando ( ssh ou login ou qualquer outro), adicione o usuário / recursos que você deseja /etc/security/capabilities.conf , em seguida, setcap CAP_SYS_TIME+ei /bin/date e você é bom vai. pam_cap ainda não pode fazer grupos, então você teria que copiar / colar para cada usuário que quiser fazer.

Se você quiser que todos os usuários do sistema consigam mudar a hora do sistema, você pode esquecer todo o material pam_cap, e apenas um setcap CAP_SYS_TIME+ep /bin/date que é essencialmente o análogo do Capabilities para adicionar o bit setuid a um binário não pode fazê-lo em scripts e se você gravar nos flags de capacidade do arquivo executável e os bits setuid / setgid forem limpos pelo kernel).

date é bastante seguro rodar através do sudo (não há muitas maneiras de tentar explorar um utilitário tão simples, exceto por meio de uma substituição direta, mas o atacante teria que encontrar uma maneira de gravar em diretórios. permissões para) de modo que é possível, mas os recursos fazem com que a concessão de privilégios aos usuários finais pareça mais perfeita (eles não precisam pensar "ah, eu tenho que sujar nisso", eles simplesmente fazem o que estão tentando fazer) e funciona) e restrito (você é ony dado a eles um conjunto específico de privilégios elevados). sudo é um mecanismo apenas setuid (pelo menos por enquanto) e só pode pensar em termos deste ou daquele executável, e qualquer que seja o arquivo (seja binário ou script que você escreveu), ele pode fazer isso com privilégios de root completos mesmo privilégios que não têm nada a ver com o porquê você deu ao usuário acesso ao executável.

setuid é um mecanismo antigo e antigo que basicamente se encontra na maioria das implementações GNU / Linux e Unix. Dar acesso root completo é para os pássaros, por que dar CAP_SYS_ADMIN ou CAP_NET_ADMIN se você está apenas tentando deixar os usuários mudarem a hora do sistema? Claro que não consigo pensar em uma maneira de explorar /bin/date para fazer algo maligno, mas a maioria das explorações não é intuitiva até que sejam descobertas e demonstradas (espero que o software não contenha exploits óbvios, quero dizer).

Se você está no * BSD ou Solaris, eles têm o mesmo conceito que são chamados de "Privilégios" em vez de "recursos", já que "capacidades" já era o nome de um mecanismo relacionado à segurança nessas plataformas. análogo a LxC e / ou SELinux, fwiw). Os detalhes da implementação diferem entre os privilégios e as capacidades do Linux, mas o conceito base é o mesmo (é também como o Solaris 11 implementa o modelo de segurança "root as role").

    
por 05.06.2013 / 14:55