Como evito que o PolicyKit solicite uma senha?

24

Durante anos, tive o seguinte no meu sudoersarquivo:

scott   ALL=NOPASSWD: ALL

Para quem não sabe, isso impede que sudoamigos ( gksudoetc.) solicitem uma senha. No entanto, ao longo dos anos, mais e mais coisas que uma vez usadas sudoforam trocadas para o uso do PolicyKit.

Estou procurando uma configuração equivalente para o PolicyKit, de forma que nunca me peça minha senha.

Para quem não gosta do meu pedido, deixe-me dizer o seguinte: eu entendo os motivos da configuração padrão e eles são sólidos. Eu também entendo os riscos inerentes à configuração que quero fazer. No entanto, é dessa maneira que desejo configurar meu sistema. Aqueles que não entendem completamente o exposto acima não devem tentar o que estou tentando.

Scott Severance
fonte

Respostas:

15

Você pode enganar o PolicyKit e suprimir TODAS as solicitações de senha substituindo a ação por um curinga.

AVISO LEGAL: O seguinte irá suprimir TODAS as solicitações de senha globalmente para todos os que pertencem ao grupo de administradores, com exceção da tela de login. É EXTREMAMENTE perigoso e NUNCA deve ser implementado, porque é provável que você acabe quebrando seu sistema!

Não diga que você não foi avisado!

NOTA: Se você estiver executando o 12.04 ou posterior, substitua "admin" por "sudo"!

Substitua "nome de usuário" pelo seu nome de usuário real:

usermod -aG admin username

Mudar para raiz:

sudo -i

Crie uma nova política:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla

Adicione o seguinte:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes

Salvar e sair. Em seguida, tente algo que geralmente exija uma senha. :)

NOTA: Não importa o que você usa como nome de arquivo .pkla. Você pode nomear o que quiser.

E por último, esta é a ÚNICA política que você precisará quando se trata de suprimir solicitações de senha, porque, novamente, o faz globalmente.

user55572
fonte
Isso também funciona no Fedora quando você substitui o admingrupo por wheel. Obrigado!
precisa saber é o seguinte
3
Alguém poderia descrever como exatamente isso "quebrará" o sistema?
Mehrdad
3
Sim por favor. Como isso vai quebrar o sistema? Isso não! Algo estúpido que você faz depois disso irá quebrar o sistema, mas não isso! Isso permitirá que você faça qualquer coisa no host sem senha. Se você fizer algo estúpido, quebrará o sistema. Se você precisar digitar a senha e fizer algo estúpido, interromperá o sistema. Isso, por si só, facilita um pouco a idiotice.
dangonfast
1
@ jeckyll2hide Leia a NOTA - explica por que o OP escolheu [Install package file]. Você não concorda com isso e a NOTA requer uma edição semelhante ou sua edição é inválida e deve ser revertida.
BCBC
1
@prusswan você pode usar Identity=unix-user:scottpara permitir apenas que o usuário "scott" faça a ação. Além disso, se você deseja permitir apenas determinadas ações, você pode grep /var/log/auth.log e o polkitd exibirá o nome completo do polkit que você estava tentando quando a senha foi solicitada. cat /var/log/auth.log | grep polkitdvai lhe dar uma lista bastante rápido deles
Scott
8

Você pode criar um .pkla, um em um ou dois com base em grupos de ação, realmente não importa.

Para consulta de referência em / usr / share / polkit-1 / actions, abra os interessados ​​em um editor de texto para obter os IDs de ação.

Quanto a um .pkla ou 2, acho que o melhor lugar para colocá-los aqui, ele estará protegido contra atualizações

/var/lib/polkit-1/localauthority/50-local.d

Então, por exemplo, aqui está o meu principal, chamado package-manager.pkla, que se estende um pouco mais do que apenas as políticas de gerenciamento de pacotes

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes

Note que a partir de 12.04, o grupo usado para o usuário "admin" deve ser alterado para sudo, ie.

Identity=unix-group:sudo

Observe também que as ações podem ser agrupadas por seção, sem espaços, use a; entre id's

doug
fonte
Parece que você está fazendo configurações para cada programa individualmente. Isso parece bastante entediante, especialmente se eu instalar mais algum outro programa que queira usar o PolicyKit. Estou procurando uma maneira de fazer uma alteração na configuração global que afeta tudo.
Scott Severance
1
Nunca vi nenhuma maneira de afetar 'globalmente', não acredite que é assim que o kit de políticas funciona, há um conjunto de políticas por ID de ação
doug
0

Uma opção, se você souber o que está fazendo, é desativar completamente o kit de políticas.

sudo apt-get remove libpolkit-agent-1-0

viksit
fonte
1
Ele remove muitos pacotes essenciais, como network-manager, gnome-control-centere muitos mais. Existe alguma maneira mais refinada?
Suncatcher 6/18