ottscho
Goto Top

CHMOD Script - Ideen gesucht

Hallo,

wir haben einen SLES 10 Server, welche dummerweise 777 Berechtigungen auf verschieden Ordner zugewiesen bekommen hat.
Wie auch immer das passieren konnte, ich weiß es nicht!

Nun möchte ich natürlich die richtigen Default-Berechtigungen wieder herstellen.

Meine Idee, ich setze eine neuen TEST SLES 10 auf und mounte z.B. das sbin Verzeichnis vom TEST SLES auf den produktiven SLES als test_sbin.

Nun brauche ich ein Script, welches Datei für Datei im Ordner test_sbin die Berechtigung überprüft und diese im original Ordner sbin wieder herstellt.

Ist das irgendwie möglich? Leider bin ich kein Bash Profi und habe keinen Schimmer, wie ich das Programmieren könnte.

Für Ideen und Vorschläge wäre ich sehr dankbar.

Gruß
ottscho

Content-ID: 136778

Url: https://administrator.de/contentid/136778

Ausgedruckt am: 08.11.2024 um 21:11 Uhr

Raven42
Raven42 24.02.2010 um 18:22:46 Uhr
Goto Top
Wenn der chmod überhaupt noch funktioniert, dann ... :


Aus dem Bauch heraus (NICHT GETESTET!!!)

Der Befehl chmod hat eine Option '--reference=<DATEI>'
Damit können die Rechte einer Datei genauso wie die der Referenzdatei gesetzt werden.

#!/bin/sh

# Variablen fuer die Verzeichnisse + Log-Datei
test=/test_sbin
orig=/sbin
log=/tmp/chmod.log

cd $orig

# jede Datei anfassen und
# testen ob die Vergleichsdatei da ist
# Wenn nicht, Dateinamen in Log-datei
# Rechte setzen wie die Originaldatei
for i in *; do
  [ -e $test/$i ] && {
    chmod --reference=$test/$i $i
  } || {
    echo $i >> $log
  }
done

EDIT: Hab noch das Logging hinzu gefügt
EDIT2: Änderung wegen Verzeichniswechsel <25.2.10 10:03>
ottscho
ottscho 24.02.2010 um 19:08:09 Uhr
Goto Top
Vielen vielen dank. Ich werde es morgen auf der Arbeit testen und dann Rückmeldung geben. Schônen Abend
Gruß ottscho
ottscho
ottscho 25.02.2010 um 08:10:19 Uhr
Goto Top
Morgen,
so jetzt bin ich mal zum Testen gekommen.
Also der chmod Befehl an sich funktioniert bestens mit der Referenz.
Leider klappt es mit der for-Schleife nicht so ganz.

for i in $orig/*;

ergibt in i nicht nur den Dateiname, sondern den ganzen Pfad.
Dementsprechend ergibt dann $test/$i nicht /test_sbin/dateiname sondern /test_sbin/sbin/dateiname
Raven42
Raven42 25.02.2010 um 10:04:19 Uhr
Goto Top
Aha face-sad

Hab das Script oben korrigiert.
ottscho
ottscho 25.02.2010 um 10:10:19 Uhr
Goto Top
Hät ich auch selbst drauf kommen müssen... mensch...
Vielen Dank.

Funktioniert benstes.

Gruß
ottscho
ottscho
ottscho 25.02.2010 um 14:47:33 Uhr
Goto Top
Bei meinem Ubuntu Client hat es funktioniert.
Nun wollte ich es auch dem SLES versuchen, leider ohne Erfolg:

srvlx01:/ # cat chmod.sh
#!/bin/sh

# Variablen fuer die Verzeichnisse + Log-Datei
test=/test_sbin
orig=/sbin
log=/tmp/chmod.log

cd $orig

# jede Datei anfassen und
# testen ob die Vergleichsdatei da ist
# Wenn nicht, Dateinamen in Log-datei
# Rechte setzen wie die Originaldatei
for i in *; do
  [ -e $test/$i ] && {
    chmod --reference=$test/$i $i
  } || {
    echo $i >> $log
  }

# EOF
srvlx01:/ # ./chmod.sh
./chmod.sh: line 22: syntax error: unexpected end of file
srvlx01:/ #
Raven42
Raven42 25.02.2010 um 14:56:27 Uhr
Goto Top
da fehlt das abschließende 'done' !

Oben in meinem Script in Zeile 20
ottscho
ottscho 26.02.2010 um 07:59:28 Uhr
Goto Top
sorry, jetzt gehts face-smile

Danke
ottscho
ottscho 04.03.2010 um 11:39:42 Uhr
Goto Top
Hey,

dein Script funktioniert wunderbar.
Nun habe ich das Problem, dass einfach alle möglichen Dateien betroffen sind, an allen möglichen Orten.

Könnte man das Script so aufbauen, dass es von / aus jeden Ordner und Dateie neu berechtigt?
Raven42
Raven42 04.03.2010 um 11:49:28 Uhr
Goto Top
Aber nur dann, wenn auch Vergleichsdateien da sind.

Außerdem, wenn die Rechte an bestimmten Bibliotheken falsch sind, funktioniert der chmod nicht mehr.
Dann hast Du ein anderes (viele größeres) Problem ... face-sad


Wenn es wirklich sehr viele Dateien sind, würde ich über eine Neu-Installation nachdenken ...
ottscho
ottscho 04.03.2010 um 11:53:42 Uhr
Goto Top
mhhh, also der Echtbetrieb funtkioniert nun soweit.
SSH, CRON etc. laufen alle. Und mir ist bis jetzt nichts mehr aufgefallen.

Aber es sind trotzde, noch viele Berechtigungen falsch.

Da muss wohl früher oder später eine Neuinstallation her. *shit*