AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 767026
Accepted
Kamil Maciorowski
Kamil Maciorowski
Asked: 2024-01-16 17:39:05 +0800 CST2024-01-16 17:39:05 +0800 CST 2024-01-16 17:39:05 +0800 CST

Acesso negado para `systemd-inhibit --what=idle`

  • 772

Problema

No Debian 12 eu uso IdleAction=poweroffe IdleActionSec=…no logind.conf. Isso funciona conforme o esperado: a máquina desliga-se automaticamente quando fica ociosa por tempo suficiente.

Quero poder usar systemd-inhibit --what=idlecomo usuário normal. Encontrei afirmações de que deveria ser possível ( exemplo ). Na verdade, em um dos meus sistemas Debian 12 isso é possível, vamos chamar isso de Debian Successful ; mas existem outros sistemas Debian 12 onde eu recebo Access denied, vamos chamá-los de Failing . A máquina onde eu realmente preciso dessa funcionalidade está no grupo Failing .

Não é uma peculiaridade temporária (por causa da "necessidade de reiniciar" ou algo assim). Acabei de reiniciar a máquina Successful e uma Failing , o comportamento persiste.

Por que a diferença? O que posso fazer para que um sistema com falha se comporte como um sistema com sucesso ?

Não estou realmente interessado em soluções alternativas sudoou em algum wrapper personalizado. Eu gostaria systemd-inhibit --what=idlede "apenas trabalhar", como acontece no sistema Successful . Eu gostaria de ajustar seu comportamento tanto quanto possível "de acordo com o livro systemd/polkit".


Comportamento atual

É assim que funciona no sistema Successful . É isso que eu quero:

$ SYSTEMD_LOG_LEVEL=7 systemd-inhibit --what=idle true
Bus n/a: changing state UNSET → OPENING
sd-bus: starting bus by connecting to /run/dbus/system_bus_socket...
Bus n/a: changing state OPENING → AUTHENTICATING
Bus n/a: changing state AUTHENTICATING → HELLO
Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=Hello cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
Got message type=method_return sender=org.freedesktop.DBus destination=:1.75 path=n/a interface=n/a member=n/a cookie=1 reply_cookie=1 signature=s error-name=n/a error-message=n/a
Bus n/a: changing state HELLO → RUNNING
Sent message type=method_call sender=n/a destination=org.freedesktop.login1 path=/org/freedesktop/login1 interface=org.freedesktop.login1.Manager member=Inhibit cookie=2 reply_cookie=0 signature=ssss error-name=n/a error-message=n/a
Got message type=method_return sender=:1.7 destination=:1.75 path=n/a interface=n/a member=n/a cookie=149 reply_cookie=2 signature=h error-name=n/a error-message=n/a
Successfully forked off '(inhibit)' as PID 3384.
Skipping PR_SET_MM, as we don't have privileges.
true succeeded.
Bus n/a: changing state RUNNING → CLOSED
$ echo $?
0
$

É assim que falha nos sistemas com falha :

$ SYSTEMD_LOG_LEVEL=7 systemd-inhibit true
Bus n/a: changing state UNSET → OPENING
sd-bus: starting bus by connecting to /run/dbus/system_bus_socket...
Bus n/a: changing state OPENING → AUTHENTICATING
Bus n/a: changing state AUTHENTICATING → HELLO
Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=Hello cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
Got message type=method_return sender=org.freedesktop.DBus destination=:1.44 path=n/a interface=n/a member=n/a cookie=1 reply_cookie=1 signature=s error-name=n/a error-message=n/a
Bus n/a: changing state HELLO → RUNNING
Sent message type=method_call sender=n/a destination=org.freedesktop.login1 path=/org/freedesktop/login1 interface=org.freedesktop.login1.Manager member=Inhibit cookie=2 reply_cookie=0 signature=ssss error-name=n/a error-message=n/a
Got message type=error sender=:1.1 destination=:1.44 path=n/a interface=n/a member=n/a cookie=464 reply_cookie=2 signature=s error-name=org.freedesktop.DBus.Error.AccessDenied error-message=Permission denied
Failed to inhibit: Access denied
Bus n/a: changing state RUNNING → CLOSED
$ echo $?
1
$

trueé apenas um exemplo. Em última análise, quero invocar algum comando de longa duração para o qual a inibição faça todo o sentido.


Detalhes

  • Bem-sucedido e fracassado são o Debian 12.

  • O kernel em Successful e em cada Failing é 6.1.0-17-amd64.

  • A saída de id:

    @Successful $ id
    uid=1000(kamil) gid=1000(kamil) groups=1000(kamil),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),106(netdev),111(bluetooth),113(lpadmin),117(scanner),124(pcspkr)
    
    @Failing1 $ id
    uid=1000(kamil) gid=1000(kamil) groups=1000(kamil),4(adm),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev)
    
  • Em cada sistema /usr/bin/systemd-inhibitdá o mesmo md5sum, concluo que os arquivos são idênticos entre Successful e Failing ; eles não foram adulterados. ls -l /usr/bin/systemd-inhibitimpressões:

     -rwxr-xr-x 1 root root 22928 11-10 01:25 /usr/bin/systemd-inhibit
    
  • Em cada sistema /usr/share/dbus-1/system.d/org.freedesktop.login1.confdá o mesmo md5sum, concluo que os arquivos são idênticos entre Successful e Failing ; eles não foram adulterados. As partes relevantes (?):

    <busconfig>
    
          <policy user="root">
                  <allow own="org.freedesktop.login1"/>
                  <allow send_destination="org.freedesktop.login1"/>
                  <allow receive_sender="org.freedesktop.login1"/>
          </policy>
    
          <policy context="default">
                  <deny send_destination="org.freedesktop.login1"/>
    [...]
                  <allow send_destination="org.freedesktop.login1"
                         send_interface="org.freedesktop.login1.Manager"
                         send_member="Inhibit"/>
    [...]
                  <allow receive_sender="org.freedesktop.login1"/>
          </policy>
    
    </busconfig>
    
  • Em cada sistema /usr/share/polkit-1/actions/org.freedesktop.login1.policydá o mesmo md5sum, concluo que os arquivos são idênticos entre Successful e Failing ; eles não foram adulterados. As partes relevantes (?):

    <policyconfig>
    [...]
          <action id="org.freedesktop.login1.inhibit-block-idle">
                  <description gettext-domain="systemd">Allow applications to inhibit automatic system suspend</description>
                  <message gettext-domain="systemd">Authentication is required for an application to inhibit automatic system suspend.</message>
                  <defaults>
                          <allow_any>yes</allow_any>
                          <allow_inactive>yes</allow_inactive>
                          <allow_active>yes</allow_active>
                  </defaults>
          </action>
    [...]
    </policyconfig>
    

    Eu acho que isso <allow_any>yes</allow_any>é responsável pela alegada capacidade de um usuário comum usar arquivos systemd-inhibit --what=idle. Ainda em Sistemas com falha parece ser ignorado.

  • O Debian de sucesso usa seu hardware diretamente. Um Debian com falha está instalado no HP ProLiant DL380 G5; outros Debians com falha são máquinas virtuais no VMware ESXi 7.

  • Eu uso sshpara me conectar ao sistema de sucesso e a cada um que falha . O sistema Successful fornece uma GUI, mas é "apenas por precaução"; atualmente sddmsó fica lá e eu não faço login dessa maneira.

  • A saída de pstree -lu:

    @Successful $ pstree -lu
    systemd-+-ModemManager---2*[{ModemManager}]
            |-NetworkManager---2*[{NetworkManager}]
            |-accounts-daemon---2*[{accounts-daemon}]
            |-atop
            |-atopacctd
            |-avahi-daemon(avahi)---avahi-daemon
            |-blkmapd
            |-bluetoothd
            |-cron
            |-cups-browsed---2*[{cups-browsed}]
            |-cupsd
            |-dbus-daemon(messagebus)
            |-dhcpd
            |-exim4(Debian-exim)
            |-hostapd
            |-nfsdcld
            |-openvpn
            |-polkitd(polkitd)---2*[{polkitd}]
            |-rpc.idmapd
            |-rpc.mountd
            |-rpc.statd(statd)
            |-rpcbind(_rpc)
            |-rtkit-daemon(rtkit)---2*[{rtkit-daemon}]
            |-sddm-+-Xorg---10*[{Xorg}]
            |      |-sddm-helper---sddm-greeter(sddm)---11*[{sddm-greeter}]
            |      `-{sddm}
            |-smartd
            |-sshd-+-sshd---sshd(bisztynek)
            |      `-sshd---sshd(kamil)---bash---tmux: client
            |-systemd(sddm)-+-(sd-pam)
            |               |-dbus-daemon
            |               `-pulseaudio-+-gsettings-helpe---3*[{gsettings-helpe}]
            |                            `-2*[{pulseaudio}]
            |-systemd(kamil)-+-(sd-pam)
            |                |-dbus-daemon
            |                `-pulseaudio-+-gsettings-helpe---3*[{gsettings-helpe}]
            |                             `-{pulseaudio}
            |-systemd(bisztynek)-+-(sd-pam)
            |                    |-dbus-daemon
            |                    `-pulseaudio-+-gsettings-helpe---3*[{gsettings-helpe}]
            |                                 `-{pulseaudio}
            |-systemd-journal
            |-systemd-logind
            |-systemd-timesyn(systemd-timesync)---{systemd-timesyn}
            |-systemd-udevd
            |-tmux: server(kamil)---bash---pstree
            |-transmission-da(debian-transmission)---3*[{transmission-da}]
            |-udisksd---4*[{udisksd}]
            |-upowerd---2*[{upowerd}]
            `-wpa_supplicant
    
    @Failing1 $ pstree -lu
    systemd-+-VGAuthService
            |-agetty
            |-cron
            |-dbus-daemon(messagebus)
            |-dhclient
            |-nmbd
            |-rsyslogd---3*[{rsyslogd}]
            |-smbd-+-cleanupd
            |      |-smbd
            |      `-smbd-notifyd
            |-sshd---sshd---sshd(kamil)---bash---tmux: client
            |-systemd(kamil)---(sd-pam)
            |-systemd-journal
            |-systemd-logind
            |-systemd-timesyn(systemd-timesync)---{systemd-timesyn}
            |-systemd-udevd
            |-tmux: server(kamil)-+-2*[bash---nano]
            |                     `-bash---pstree
            `-vmtoolsd---2*[{vmtoolsd}]
    

    Outros sistemas do grupo Failing podem executar conjuntos de tarefas ligeiramente diferentes, embora sejam todos igualmente minimalistas.


Observação

Uma grande diferença entre o Debian bem-sucedido e cada um com falha é a GUI. Existem Xorge sddmprocessos relacionados em Success . Mas, como eu disse, não faço login na GUI. Não sei se tem alguma coisa a ver com o problema. Talvez seja apenas uma pista falsa.

debian
  • 1 1 respostas
  • 20 Views

1 respostas

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2024-01-16T17:39:05+08:002024-01-16T17:39:05+08:00

    Ao criar a pergunta, percebi que polkitdestava rodando no sistema com Sucesso , mas não em nenhum com Falha . Eu sabia que o problema tinha muito a ver com o polkit, então tentei em um Debian do grupo Failing :

    sudo apt-get install polkitd
    

    E sim, é isso, problema resolvido. Agora posso usar systemd-inhibit --what=idlecomo usuário normal.

    Acho que o Debian foi instalado com sucesso por causa de outros pacotes (por exemplo ) que dependem dele.polkitdnetwork-manager

    Originalmente, a pergunta não deveria ser respondida automaticamente, eu realmente precisava de ajuda. Um exemplo de depuração de pato de borracha , eu acho.

    • 1

relate perguntas

  • Configuração do GRUB para reconhecer diferentes ambientes de desktop (instalações) da mesma distribuição Linux

  • astyle não altera a formatação do arquivo de origem

  • Recebendo e-mail em um novo Debian fresco

  • Debian Stretch: gnome-software segfault em libgs_plugin_systemd-updates.so

  • Como digitar ü no Pinyin IME?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve