/etc/rc.local Problem

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
LaLeLu
Beiträge: 33
Registriert: 05.07.2010 19:49:37

/etc/rc.local Problem

Beitrag von LaLeLu » 17.01.2012 00:54:21

Hey,
ich habe ein Script unter /var/script und möchte dieses beim Booten ausgeführt haben. (/etc/rc.local)
Allerdings führt er das Script nicht aus, wenn ich folgendes in /etc/rc.local einfüge:
./var/script/script.sh
Muss man sh /var/script/script.sh schreiben? Welche Dateiberechtigung/Gruppe brauch /rc.local & das script?

Mit freundlichen Grüßem
lalelu

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: /etc/rc.local Problem

Beitrag von Six » 17.01.2012 05:21:11

Mach den Punkt am Anfang weg. Der Punkt bedeutet so viel "hier" bzw. "this" und "hier" ist für die rc.local halt /etc. Entsprechend sucht die Shell in /etc/var/script. Das Script muss natürlich ausführbar sein.

Code: Alles auswählen

chmod +x <script>
Achtung, so kann jeder Hanswurst das Script ausführen.
Be seeing you!

JimHawkins
Beiträge: 105
Registriert: 14.01.2012 06:46:09

Re: /etc/rc.local Problem

Beitrag von JimHawkins » 17.01.2012 09:57:33

Six hat geschrieben:Achtung, so kann jeder Hanswurst das Script ausführen.
Nicht, wenn es root gehört und er

Code: Alles auswählen

chmod u+x /var/script/script.sh
ausführt. ;-)

Edit@LaLeLu: Da root die Befehle in /etc/rc.local ausführt, braucht root Lese- und Ausführrechte. Gruppe und Andere brauchen keine Rechte - und sollten am besten auch zumindest keine Schreibrechte haben!

LaLeLu
Beiträge: 33
Registriert: 05.07.2010 19:49:37

Re: /etc/rc.local Problem

Beitrag von LaLeLu » 17.01.2012 22:18:09

Hallo,
vielen Dank für Eure Nachrichten.

Wie ist die Zahl für den chmod bei u+x? Also welchen Zahlencode hat der chmod dann? Damit ich das auch überprüfen kann, falls ich was falsch eingestellt hatte.

Rechte:
-rwxr-xr-x richtig?

Funktioniert immer noch nicht. Wie sollte die Rechte für /etc/rc.local sein? (In -rw...) Wie bei /var/script/script.sh.

Wie muss man die Zeile in /etc/rc.local schreiben?
Einfach: /var/script/script.sh oder sh /var/script/script.sh?

LG

JimHawkins
Beiträge: 105
Registriert: 14.01.2012 06:46:09

Re: /etc/rc.local Problem

Beitrag von JimHawkins » 17.01.2012 23:53:30

Poste mal bitte:

Code: Alles auswählen

ls -dl /etc/rc.local
ls -dl /var/script/script.sh
cat /etc/rc.local
damit wir sehen, wo du überhaupt noch nachbessern musst.

-rwxr-xr-x ist zwar prinzipiell ok, schützt aber nicht vor besagtem Hanswurst. Aber vielleicht soll es auch ja für jeden ausführbar sein. Das hängt davon ab, was es eigentlich macht und ob du willst, dass es jeder benutzen kann.

rc.local hat standardmäßig -rwxr-xr-x, also 755.
Das Script braucht entweder 7xx oder zumindest 5xx, um ausführbar zu sein (also -rwx... oder -r-x...; r wie Lesen und x wie Ausführen).

Lies mal in

Code: Alles auswählen

man chmod
die Beschreibung. Da ist genau erklärt, wie du welche Rechte setzt.

Alle Rechte für root und sonst keine, geht mit den Buchstaben z.B. so:

Code: Alles auswählen

chmod u+rwx /var/script/script.sh
chmod go-rwx /var/script/script.sh
Oder mit Zahlen:

Code: Alles auswählen

chmod 700 /var/script/script.sh
Vorausgesetzt, das Script gehört root. Falls nicht:

Code: Alles auswählen

chown root: /var/script/script.sh
In rc.local muss am Ende immer

Code: Alles auswählen

exit 0
stehen. Dein Befehl muss also darüber.

LaLeLu
Beiträge: 33
Registriert: 05.07.2010 19:49:37

Re: /etc/rc.local Problem

Beitrag von LaLeLu » 18.01.2012 00:11:52

Hallo,
zuerst:
-rwxr-xr-x 1 root root 342 17. Jan 22:24 /etc/rc.local
-rwxr-xr-x 1 root root 298 16. Jan 23:52 /var/script/script.sh
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

rm /etc/motd
/var/script/script.sh
exit 0
Sollte prinzipiell doch funktionieren oder nicht?

Danke schonmal ;)

JimHawkins
Beiträge: 105
Registriert: 14.01.2012 06:46:09

Re: /etc/rc.local Problem

Beitrag von JimHawkins » 18.01.2012 00:24:49

Ähm, ja...

Funktioniert dein Script denn generell? Tut es, was es soll, wenn du es mal manuell ausführst? Falls Meldungen kommen, bitte mal posten.

Edit: Wird der andere Befehl denn eigentlich ausgeführt?

Edit2: Falls nicht, zeig mal:

Code: Alles auswählen

ls -dl /etc/rc*/*rc*

LaLeLu
Beiträge: 33
Registriert: 05.07.2010 19:49:37

Re: /etc/rc.local Problem

Beitrag von LaLeLu » 18.01.2012 00:43:43

Funktioniert natürlich ;) Das Script "spricht" die iptables an. Vllt ist das aussagekräftig?

JimHawkins
Beiträge: 105
Registriert: 14.01.2012 06:46:09

Re: /etc/rc.local Problem

Beitrag von JimHawkins » 18.01.2012 00:45:44

Vielleicht ein Problem mit der Startreihenfolge...

Guck mal meine Edits.

LaLeLu
Beiträge: 33
Registriert: 05.07.2010 19:49:37

Re: /etc/rc.local Problem

Beitrag von LaLeLu » 18.01.2012 00:59:04

lrwxrwxrwx 1 root root 18 13. Okt 12:04 /etc/rc2.d/S22rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 18 13. Okt 12:04 /etc/rc3.d/S22rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 18 13. Okt 12:04 /etc/rc4.d/S22rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 18 13. Okt 12:04 /etc/rc5.d/S22rc.local -> ../init.d/rc.local

JimHawkins
Beiträge: 105
Registriert: 14.01.2012 06:46:09

Re: /etc/rc.local Problem

Beitrag von JimHawkins » 18.01.2012 01:09:57

Wird der rm-Befehl ausgeführt?

Und:

Code: Alles auswählen

ls /etc/rc[2-5].d
ls -dl /etc/init.d/rc.local

LaLeLu
Beiträge: 33
Registriert: 05.07.2010 19:49:37

Re: /etc/rc.local Problem

Beitrag von LaLeLu » 18.01.2012 01:18:00

/etc/rc2.d:
README S17sudo S19cron S19mysql S19webmin S22rmnologin
S14portmap S18openvpn S19danted S19ntp S20exim4 S22stop-bootlogd
S15nfs-common S19acpid S19fail2ban S19rsync S21bootlogs
S17rsyslog S19atd S19lighttpd S19ssh S22rc.local

/etc/rc3.d:
README S17sudo S19cron S19mysql S19webmin S22rmnologin
S14portmap S18openvpn S19danted S19ntp S20exim4 S22stop-bootlogd
S15nfs-common S19acpid S19fail2ban S19rsync S21bootlogs
S17rsyslog S19atd S19lighttpd S19ssh S22rc.local

/etc/rc4.d:
README S18openvpn S19fail2ban S19ssh S22stop-bootlogd
S14portmap S19acpid S19lighttpd S20exim4
S15nfs-common S19atd S19mysql S21bootlogs
S17rsyslog S19cron S19ntp S22rc.local
S17sudo S19danted S19rsync S22rmnologin

/etc/rc5.d:
README S17sudo S19cron S19mysql S19webmin S22rmnologin
S14portmap S18openvpn S19danted S19ntp S20exim4 S22stop-bootlogd
S15nfs-common S19acpid S19fail2ban S19rsync S21bootlogs
S17rsyslog S19atd S19lighttpd S19ssh S22rc.local
-rwxr-xr-x 1 root root 801 1. Jan 2011 /etc/init.d/rc.local
Habe nun den Befehl mal darunter gesetzt.

EDIT:
Geht lag an dem Befehl darüber. Danke dir ;)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: /etc/rc.local Problem

Beitrag von Cae » 18.01.2012 08:58:16

Btw., wenn dich die MotD nervt, schau in der Manpage motd(5) nach, warum es sich so verhält.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: /etc/rc.local Problem

Beitrag von nudgegoonies » 26.02.2014 09:30:10

Da ich auch vorgestern über etwas ähnliches gestolpert bin hier noch mal ein Nachtrag. Es liegt an dem -e im Shebang, dass nach dem ersten Befehl, der nicht 0 zurückliefert, rc.local abgebrochen wird. Hier war das wohl beim rrm Befehl so. Ich habe das beim Paketieren auch schon mal gehabt, dass so ein rm Befehl, war es idempotent?, ausgeführt werden muss. Also dass er löscht wenn das Verzeichnis vorhanden ist. Und wenn es nicht vorhanden ist braucht halt nichts gelöscht werden, denn dann ist ja schon der gewünschts Zustand da. Wenn dann aber rm nicht mit 0 beendet wird, weil das Verzeichnis zum löschen nicht gefunden wurde, dann brach mir das Script ab.
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

pferdefreund
Beiträge: 3800
Registriert: 26.02.2009 14:35:56

Re: /etc/rc.local Problem

Beitrag von pferdefreund » 26.02.2014 19:31:36

Für sowas verwende ich rm irgendwas | true
d. h Löschen, und wenns net klappt, halt trotzdem ok.
Aber Achtung - es geht bei jedem Fehler weiter, nicht nur bei "nicht vorhanden"

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: /etc/rc.local Problem

Beitrag von Cae » 26.02.2014 21:23:59

pferdefreund hat geschrieben:rm irgendwas | true
Tippfehler? 'Ne Pipe tut's zwar in dem speziellen Fall auch, aber eigentlich sollte das wohl

Code: Alles auswählen

rm /non/existing || true
# bzw.
rm /non/existing || :
sein... aber rm hat ein passendes Flag, da braucht man gar nicht dahingehend rumzufrickeln:
man 1 rm hat geschrieben:

Code: Alles auswählen

       -f, --force
              ignore nonexistent files, never prompt
Also verwendet man

Code: Alles auswählen

rm -f /non/existing
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

pferdefreund
Beiträge: 3800
Registriert: 26.02.2009 14:35:56

Re: /etc/rc.local Problem

Beitrag von pferdefreund » 27.02.2014 10:11:04

Stimmt, sollte eigentlich || sein. Das mit dem true ist so ne Angewohnheit - verwende ich generell bei Befehlen, die
wenn nicht gelaufen, nicht schaden. Spart das Suchen von Parametern wie das -f von rm und macht die Sache schön einheitlich.

Antworten