[Linux/SNMP] Run script als root zonder interactieve shell

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ari3
  • Registratie: Augustus 2002
  • Niet online
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.

"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


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

man sudoers -> requiretty

requiretty
If set, sudo will only run when the user is logged in to a real tty. When this flag is set, sudo can only be run from a login session and not via other means such as cron(8) or cgi-bin scripts. This flag is off by default.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • ari3
  • Registratie: Augustus 2002
  • Niet online
De requiretty optie staat niet in /etc/sudoers. Toch zie ik de melding sudo: sorry, you must have a tty to run sudo wanneer het script buiten een interactieve shell gedraaid wordt.

Wanneer ik Defaults !requiretty zet in /etc/sudoers dan krijg ik de melding sudo: no tty present and no askpass program specified.

[ Voor 31% gewijzigd door ari3 op 12-07-2011 11:33 ]

"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


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Zou het kunnen dat je het password van de gebruiker waaronder snmp draait leeg moet maken? Anders moet je bij sudo natuurlijk je password opgeven.

Acties:
  • 0 Henk 'm!

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Het bleek toch een configuratiefout te zijn. De regel in /etc/sudoers die het uitvoeren van lsof zonder wachtwoord mogelijk maakt werd overruled door een latere regel die sudo zonder wachtwoord mogelijk maakt voor alle gebruikers in de sudo-groep.

Ik heb de snmp-gebruiker toegevoegd aan de sudo-groep en nu werkt het!

"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