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").