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 / ubuntu / Perguntas / 1533200
Accepted
CattyandCo
CattyandCo
Asked: 2024-11-18 04:29:52 +0800 CST2024-11-18 04:29:52 +0800 CST 2024-11-18 04:29:52 +0800 CST

Permissões no serviço systemd para xsecurelock

  • 772

Tenho um serviço de timer systemd que executa um script a cada 5 minutos para verificar se o monitor foi desligado. Se estiver desligado, ele bloqueia a tela.

Mas estou tendo alguns problemas com os usuários e permissões. Parece que o script deve ser executado como sudo para consultar o estado de energia do monitor, mas isso faz com que o xsecurelock exija a senha root para desbloquear a tela. Como posso consertar isso?

Eu deveria dizer: Quero manter essa abordagem e o uso do xsecurelock, já que isso está funcionando em meus outros PCs. Precisar do sudo para consultar o estado de energia parece peculiar a este PC.

  1. Serviço Systemd
Description=Check if Monitor is switched off and run xsecurelock
After=network.target

[Service]
User=dave
Environment=XAUTHORITY=/home/dave/.Xauthority
Environment=DISPLAY=:0
Type=simple
ExecStart=/home/dave/monitor_check.sh --debug
StandardOutput=journal
StandardError=journal
Restart=no
[Install]
WantedBy=multi-user.target
  1. Roteiro

XSECURELOCK_SAVER=saver_xscreensaver
export XSECURELOCK_SAVER
echo "The value of XSECURELOCK_SAVER is: $XSECURELOCK_SAVER"

    state=$(ddcutil getvcp D6 2>&1)
        echo "$state"
    sleep 2

    if [[ "$state" == *"Display not found"* ]]; then
        echo "Monitor is off, executing command..."
        exec xsecurelock
        break
    else
    echo "Display is found, nothing to do."
    fi

sudo
  • 1 1 respostas
  • 25 Views

1 respostas

  • Voted
  1. Best Answer
    CattyandCo
    2024-11-20T20:09:37+08:002024-11-20T20:09:37+08:00

    Isso era contraintuitivo. Para consertar as permissões de um serviço systemd executando um script, não eram necessárias alterações no serviço systemd ou no script, mas a criação de uma regra udev:-

    /etc/udev/rules.d/60-ddcutil-i2c.rules

    SUBSISTEMA=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{class}=="0x030000", TAG+="uaccess"

    SUBSISTEMA=="dri", KERNEL=="cartão[0-9]*", TAG+="uaccess"

    Porque as permissões do comando ddcutil são permissões i2c.

    https://www.ddcutil.com/i2c_permissions/

    Espero que essa descoberta seja útil para alguém, ou mesmo para pessoas que criam interfaces de usuário de proteção de tela.

    O script provavelmente é bastante portátil para diferentes hardwares de monitor. Onde diz D6 , essa não é a listagem do monitor em xrandr -query, mas o Recurso listado para o estado de energia pelo comando:-

    capacidades ddcutil

    xrandr -query embora seja usado para obter a variável de ambiente DISPLAY=:0 para systemd. Em xrandr é a TELA, mas em systemd é o DISPLAY

    Suponho que um motivo para isso não estar nas interfaces gráficas de usuário (GUIs) de proteção de tela pode ser que as saídas do ddcutil para os recursos e, então (se aplicável), o estado de energia variam muito entre os diferentes fabricantes.

    • 0

relate perguntas

  • Como adiciono um usuário ao grupo "sudo"?

Sidebar

Stats

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

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

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