Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

CHMOD Script - Ideen gesucht

Frage Entwicklung Batch & Shell

Mitglied: ottscho

ottscho (Level 2) - Jetzt verbinden

24.02.2010, aktualisiert 04.03.2010, 3866 Aufrufe, 11 Kommentare

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
Mitglied: Raven42
24.02.2010 um 18:22 Uhr
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.

01.
#!/bin/sh 
02.
 
03.
# Variablen fuer die Verzeichnisse + Log-Datei 
04.
test=/test_sbin 
05.
orig=/sbin 
06.
log=/tmp/chmod.log 
07.
 
08.
cd $orig 
09.
 
10.
# jede Datei anfassen und 
11.
# testen ob die Vergleichsdatei da ist 
12.
# Wenn nicht, Dateinamen in Log-datei 
13.
# Rechte setzen wie die Originaldatei 
14.
for i in *; do 
15.
  [ -e $test/$i ] && { 
16.
    chmod --reference=$test/$i $i 
17.
  } || { 
18.
    echo $i >> $log 
19.
20.
done
EDIT: Hab noch das Logging hinzu gefügt
EDIT2: Änderung wegen Verzeichniswechsel <25.2.10 10:03>
Bitte warten ..
Mitglied: ottscho
24.02.2010 um 19:08 Uhr
Vielen vielen dank. Ich werde es morgen auf der Arbeit testen und dann Rückmeldung geben. Schônen Abend
Gruß ottscho
Bitte warten ..
Mitglied: ottscho
25.02.2010 um 08:10 Uhr
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
Bitte warten ..
Mitglied: Raven42
25.02.2010 um 10:04 Uhr
Aha

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

Funktioniert benstes.

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

01.
srvlx01:/ # cat chmod.sh 
02.
#!/bin/sh 
03.
 
04.
# Variablen fuer die Verzeichnisse + Log-Datei 
05.
test=/test_sbin 
06.
orig=/sbin 
07.
log=/tmp/chmod.log 
08.
 
09.
cd $orig 
10.
 
11.
# jede Datei anfassen und 
12.
# testen ob die Vergleichsdatei da ist 
13.
# Wenn nicht, Dateinamen in Log-datei 
14.
# Rechte setzen wie die Originaldatei 
15.
for i in *; do 
16.
  [ -e $test/$i ] && { 
17.
    chmod --reference=$test/$i $i 
18.
  } || { 
19.
    echo $i >> $log 
20.
21.
 
22.
# EOF 
23.
srvlx01:/ # ./chmod.sh 
24.
./chmod.sh: line 22: syntax error: unexpected end of file 
25.
srvlx01:/ #
Bitte warten ..
Mitglied: Raven42
25.02.2010 um 14:56 Uhr
da fehlt das abschließende 'done' !

Oben in meinem Script in Zeile 20
Bitte warten ..
Mitglied: ottscho
26.02.2010 um 07:59 Uhr
sorry, jetzt gehts

Danke
Bitte warten ..
Mitglied: ottscho
04.03.2010 um 11:39 Uhr
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?
Bitte warten ..
Mitglied: Raven42
04.03.2010 um 11:49 Uhr
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 ...


Wenn es wirklich sehr viele Dateien sind, würde ich über eine Neu-Installation nachdenken ...
Bitte warten ..
Mitglied: ottscho
04.03.2010 um 11:53 Uhr
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*
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Sonstige Systeme
gelöst Kostenfreies Ticketsystem gesucht (4)

Frage von Stefan007 zum Thema Sonstige Systeme ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...