Se você deseja solicitar a senha root, em oposição à senha do usuário, há opções que você pode inserir /etc/sudoers. rootpwem particular, fará com que solicite a senha de root. Existe runaspwe targetpwtambém; veja a página de manual do sudoers (5) para detalhes.
Fora isso, o sudo faz sua autenticação (como tudo o mais) através do PAM. O PAM suporta a configuração por aplicativo. A configuração do Sudo está (pelo menos no meu sistema Debian) /etc/pam.d/sudoe se parece com isto:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Em outras palavras, por padrão, ele se autentica como tudo no sistema. Você pode alterar essa @include common-authlinha e fazer com que o PAM (e, portanto, o sudo) use uma fonte de senha alternativa. As linhas não comentadas em common-auth se parecem com (por padrão, isso será diferente se você estiver usando, por exemplo, LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Você pode usar, por exemplo, em pam_userdb.sovez de pam_unix.so, e armazenar suas senhas alternativas em um banco de dados Berkeley DB.
exemplo
Eu criei o diretório /var/local/sudopass, proprietário / grupo root:shadow, modo 2750. Dentro dele, criei um arquivo de banco de dados de senhas usando db5.1_load(que é a versão do Berkeley DB em uso no Debian Wheezy):
# umask 0027
# db5.1_load -h /var/local/sudopass -t hash -T passwd.db
anthony
WMaEFvCFEFplI
^D
Esse hash foi gerado com mkpasswd -m des, usando a senha "password". Muito altamente seguro! (Infelizmente, o pam_userdb parece não suportar nada melhor que o crypt(3)hash antigo ).
Agora, edite /etc/pam.d/sudoe remova a @include common-authlinha e, em vez disso, coloque isso no lugar:
auth [success=1 default=ignore] pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth requisite pam_deny.so
auth required pam_permit.so
Observe que o pam_userdb adiciona uma .dbextensão ao banco de dados passado, portanto, você deve deixá- .dblo desativado.
De acordo com dannysauer em um comentário , talvez você precise fazer a mesma edição /etc/pam.d/sudo-itambém.
Agora, para sudo, devo usar em passwordvez da minha senha de login real:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit funcionou'
[sudo] senha para anthony: passwordRETURN
funcionou