[Problem] Asterisk führt kein System() aus, wenn es normal startet.

Tippfehler

IPPF-Promi
Mitglied seit
14 Sep 2004
Beiträge
3,313
Punkte für Reaktionen
37
Punkte
48
Hallo,
leider stehe ich im Moment völlig auf dem Schlauch und komme nicht mehr weiter.

Ich habe seit Jahren Asterisk auf einer Buffalo Linkstation Live laufen.
Weil ich inzwischen auch noch eine LS Pro übrig habe, die doppelt so viel RAM hat, habe ich auch auf dieser Asterisk installiert.
Wenn ich von der Shell aus (als root) Asterisk starte, läuft alles, wie es soll.
Wenn ich Asterisk mit rcS starten lasse, werden manche System() -Befehle nicht ausgeführt.
z. B.
exten => _12345!,n,System(/opt/etc/asterisk/relay1.sh &)

Relay1.sh sieht ungefähr so aus:
Code:
echo SETPORT 1.1 | nc 192.168.178.234 50290
sleep 3
echo SETPORT 1.0 | nc 192.168.178.234 50290
Das Gleiche passiert auch, wenn ich Asterisk über daemonwatch starten lasse.

Bei der LS-Live hatte ich damals eine kleine Änderung gemacht, damit die Systembefehle mit Rootrechten laufen. Leider komme ich nicht mehr drauf.
Ich habe auch schon fast alle Dateien der beiden Linkstations verglichen.

Leider muss ich das Problem bald beheben, denn ohne diese Relays funktionieren bei mir weder Türöffner, noch die Markise usw., wenn sich Asterisk mal neu startet.

Kann mir jemand den Trick verraten?
 
In der asterisk.conf kann man mit runuser und rungroup festlegen, als welcher Benutzer Asterisk laufen soll.

Aber wäre es nicht einfacher, den Skripten entsprechende Rechte zu setzen?

funktionieren bei mir weder Türöffner, noch die Markise usw., wenn sich Asterisk mal neu startet

Das nenne ich doch mal Hardcore :rock:
 
Hallo,
danke für die Antwort.
Das ist alles auskommentiert, läuft also auf Standard.
Code:
;runuser = asterisk 
;rungroup = asterisk 
...
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = asterisk.ctl
Ich habe alle .conf von der anderen Linkstation genommen, Asterisk ist identisch. Es läuft soweit auch alles. Das Problem muss irgendwo in Linux zu lösen sein.
Die Asterisk.conf hatte ich mir schon erfolglos vorgenommen.
Mails usw. werden normal verschickt, obwohl es auch System()-Zeilen sind.
Mit den Rechten für die Scripe habe ich auch experimentiert. Ich bin der Meinung, dass inzwischen Jeder alle Rechte hat.
---
Ich mag keine Schlüssel, die machen bei mir immer Löcher in die Hosentasche und anschließend sind sie weg. Für Schulkinder ist es auch praktisch, wenn sie keinen Schlüssel brauchen.
Für die Markise fehlt mir jetzt noch ein kleines Programm, das die Wetterdaten abfragt und sie bei Wind oder Regen wieder automatisch einfährt, bzw. erst gar nicht rauslässt. Auf einen Windsensor alleine will ich mich nicht verlassen.
Eine Idee dafür habe ich schon lange, aber leider noch zu viele andere Baustellen. Solange das Internet funktioniert, kann ich sie ja schlimmstenfalls von unterwegs einfahren lassen.
Das Restrisiko ist überschaubar.
 
Zuletzt bearbeitet:
Läuft da zufällig SELinux (AppArmor) auf dem Ding?

Mit runuser=root und rungroup=root oder spätestens wenn die Skripte 0777 haben, sollte das sonst funktionieren. Ist das, was in den Skripten aufgerufen wird, noch irgendwie anderweitig geschützt?

Mir hat noch nie ein Schlüssel ein Loch in die Handtasche gemacht, da letztere meist selbst ein großes schwarzes Loch darstellen :-Ö
 
SELinux sagt mir nichts, das habe ich nicht entdecken können.
Mir wird diese Version angezeigt:
Code:
Linux version 2.6.16.16-arm1 ([email protected]) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #37 Tue May 20 10:01:57 JST 2008
CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)
Machine: MV-88fxx81
Mir sind jetzt doch noch mehr Probleme aufgefallen. Ich werde wohl noch mal von vorne anfangen müssen.
Jetzt bleiben die Scripte, auch wenn ich sie direkt ausführe hinter dem ersten Befehl hängen und machen nach sleep nicht mehr weiter.
Soweit ich mich erinnern kann, hatte ich das Problem bei der LS-Live aber anfangs auch mal.
 
Hallo,
hast Du schon eine Lösung gefunden, bzw. ist Dir die "Dokumentation von damals" wieder in die Hände gefallen?
Stehe seit zwei Tagen vor dem selben Problem und die Ideen gehen mir so langsam aus......sollte mir eine Lösung über den Weg laufen, so werde ich sie hier gleich Posten...
Verstehe nur nicht, warum nicht mehr User dieses Problem haben?
 
Leider nicht, ich hatte noch keine Zeit.
Die alte Linkstation, bei der es das Problem nicht gibt, tut noch ihren Dienst.
Ich bin mal gespannt, wer das Problem als Erster gelöst hat.
 
Zuletzt bearbeitet:
...so, hab jetzt einen gangbaren Weg gefunden, wobei ich leider nicht so der Linux-Geek bin.
Es machte für mich Sinn den sudo-Befehl zu nutzen, da man dem Benutzer Asterisk nur für diesen einen Zugriff Rootrechte erteilen kann,ohne das Passw. für Root hinterlegen zu müssen.
Entsprechend habe ich in der /etc/sudoers den Zugriff für Asterisk auf das entsprechende Ziel eingerichtet und in der extensions.conf den Shellbefehl im Kommando System() mit sudo ausgeführt, also System(sudo Shellbefehl).
Das funktioniert bei mir ganz prima und die Sicherheit ist überschaubar geschmälert....

Vielleicht gibt es ja noch einen anderen Weg, wäre nett wenn dies hier gepostet wird ;-)

Grüße Frank (Goom)
 
Danach hatte ich auch schon gesucht.
Leider gibt es auf meiner Linkstation weder sudo noch sudoers.
P.S.
Gerade habe ich gesehen, dass man sudo per ipkg nachinstallieren kann.
 
Zuletzt bearbeitet:
Sudo hatte leider nicht direkt weitergeholfen.
Nachdem ich aber "sudo daemonwatch -a /etc/daemonwatch.list" ausgeführt hatte, wurde Asterisk wieder so gestartet, dass System() ausgeführt wurde.
Leider schafffe ich es noch nicht, daemonwatch über rcS oder /etc/init.d/daemonwatch.sh mit sudo zu starten.
 
hmmmm....das wundert mich eigentlich, da der Befehl mit vollen Rootrechten ausgeführt werden sollte, vorausgesetzt der Eintrag in /etc/sudoers passt.....
Für einen Test kannst Du ja mal in der sudoers dem User Asterisk in jeder Beziehung volle Rootrechte einräumen....
Also:
asterisk ALL=(ALL) NOPASSWD: ALL

....wenn es funktioniert, dann kann man die Rechte ja sukzessive einschränken, bis nur das nötigste freigegeben ist ;-)
 
Vielleicht mache ich auch etwas ganz falsch. Leider kommt keine Fehlermeldung.
Bei mir sieht es so aus:
exten => _12345678!,n,System(sudo /relay/relay1.sh &)

sudoers:
asterisk ALL=(ALL) NOPASSWD: ALL
%asterisk ALL=(ALL) NOPASSWD: ALL

Ich befürchte, dass mein Asterisk mit einem anderen User läuft, bzw. die Programme von rcS mit einem anderen User gestartet werden.
Wie kann man den Usernamen rausfinden, den Asterisk benutzt?
Bei ps wird root neben asterisk angezeigt.
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,872
Beiträge
2,303,452
Mitglieder
378,532
Neuestes Mitglied
Nik320