Debian [67], snmpd из родной репы. Есть надобность читать /etc/shadow скриптом, запускаемым snmpd (на самом деле, считать его sha256sum, но в рамках вопроса это не важно). Демон snmpd работает от пользователя snmp, пользователь snmp добавлен в группу shadow. Ядро «родное», SELinux/AppArmor не используются.
~# ls -l /etc/shadow
-rw-r----- 1 root shadow 2958 Июн 23 11:48 /etc/shadow
~# getent group shadow
shadow:x:42:snmp
~# tail -1 /etc/snmp/snmpd.conf
extend readshadow /usr/local/bin/read.sh
~# head -3 /usr/local/bin/read.sh
#!/bin/bash
id > /tmp/id.out 2>&1
cat /etc/shadow >> /tmp/id.out 2>&1
На деле имеем:
~# cat /tmp/id.out
uid=108(snmp) gid=111(snmp) группы=111(snmp)
cat: /etc/shadow: Отказано в доступе
Если назначить пользователю snmp реальный шелл и сделать sudo -i -u snmp
, то /etc/shadow нормально читается. Демон же не хочет ни в какую.
С /etc/sudoers точно так же.
Шозанах?