Ik wil graag de SNMP daemon een script laten draaien waarin middels lsof het aantal openstaande bestanden gerapporteerd wordt via SNMP. Het script wordt uitgevoerd door een servicegebruiker genaamd snmp met beperkte rechten.
Echter moet lsof uitgevoerd worden als root omdat anders alleen het aantal open bestanden van de nmp-gebruiker geretourneerd wordt. Vanuit een interactieve shell geen probleem, maar als de SNMP-daemon het script uitvoert wil het niet lukken.
Zelf al geprobeerd:
1. Gebruiker "snmp" aan de /etc/sudoers toegevoegd en rechten gegeven om lsof zonder wachtwoord te mogen gebruiken. In het script heb ik sudo lsof gebruikt. Dit werkt in een interactieve shell maar werkt niet als de SNMP daemon het script aanroept. Ik zie dan de volgende melding: sudo: sorry, you must have a tty to run sudo. Kennelijk moet je een terminal hebben om te sudo te gebruiken.
2. Het script setuid root maken middels chmod 4755 script.sh. Vreemd genoeg werkt dit ook niet in een interactieve shell. Google leert mij dat setuid niet (meer) mag voor scripts, maar wel voor binaries. Is dit configureerbaar ergens?
Heeft iemand een idee hoe je een beperkte gebruiker (zoals snmp) een script met root rechten kan draaien zonder TTY? Overigens zie ik het setuid root maken van de lsof binary niet als goede oplossing.
Echter moet lsof uitgevoerd worden als root omdat anders alleen het aantal open bestanden van de nmp-gebruiker geretourneerd wordt. Vanuit een interactieve shell geen probleem, maar als de SNMP-daemon het script uitvoert wil het niet lukken.
Zelf al geprobeerd:
1. Gebruiker "snmp" aan de /etc/sudoers toegevoegd en rechten gegeven om lsof zonder wachtwoord te mogen gebruiken. In het script heb ik sudo lsof gebruikt. Dit werkt in een interactieve shell maar werkt niet als de SNMP daemon het script aanroept. Ik zie dan de volgende melding: sudo: sorry, you must have a tty to run sudo. Kennelijk moet je een terminal hebben om te sudo te gebruiken.
2. Het script setuid root maken middels chmod 4755 script.sh. Vreemd genoeg werkt dit ook niet in een interactieve shell. Google leert mij dat setuid niet (meer) mag voor scripts, maar wel voor binaries. Is dit configureerbaar ergens?
Heeft iemand een idee hoe je een beperkte gebruiker (zoals snmp) een script met root rechten kan draaien zonder TTY? Overigens zie ik het setuid root maken van de lsof binary niet als goede oplossing.
"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand