# /etc/sudoers.d/nut-shutdown # # upssched (NOTIFYCMD din upsmon.conf) rulează ca user `nut`, nu ca root: # upsmon face fork în două procese, iar cel care execută NOTIFYCMD e cel # neprivilegiat. Userul `nut` are shell nologin, home /var/lib/nut și NICIO # cheie SSH. # # Fără regulile de aici, shutdown-ul orchestrat NU poate face nimic: # - `pct` / `qm` / `ha-manager` -> permission denied # - `ssh root@pve1 ...` -> nut nu are chei # - `shutdown` / `systemctl poweroff` -> permission denied # Singurul lucru care funcționa era trimiterea emailurilor, pentru care exista # deja regula `nut ALL=(root) NOPASSWD: /usr/bin/perl` din /etc/sudoers.d/nut. # De asta /var/log/ups-shutdown.log nu conținea nicio oprire reușită. # # Instalare: # cp sudoers.d-nut-shutdown /etc/sudoers.d/nut-shutdown # chmod 440 /etc/sudoers.d/nut-shutdown # visudo -c # verificare sintaxă, obligatorie # # Un path fără argumente în sudoers permite orice argumente pentru acel # executabil — deci `--dry-run` și `--force` funcționează cu aceeași regulă. nut ALL=(root) NOPASSWD: /usr/local/bin/ups-shutdown-cluster.sh nut ALL=(root) NOPASSWD: /usr/local/bin/ups-shutdown-test.sh