Backup uprawnień w folderach systemowych.

Kategoria: FAQ, etykiety: uprawnienia, system

Dodany: 2010-09-24 21:27 (zmodyfikowany: 2011-12-29 12:42)
Przez: Jacekalex

Wyświetleń: 11003

Witam

Pomyłki zdarzają się nawet najlepszym. Kilka razy widziałem na różnych forach posty, (a kiedyś sam też miałem taki problem), z uprawnieniami do plików systemowych w folderach /usr/*, czy np. /etc/*

U mnie skończyło się to kiedyś ponowną instalacją systemu.

Tymczasem można się łatwo zabezpieczyć, przed takimi problemami, tworząc skrypt - który będzie zawierał komendy odtwarzające, poprzedni stan uprawnień w folderach systemowych. Wystarczy wygenerować coś takiego na działającym, sprawnym systemie, a w przypadku awarii związanej z uprawnieniami do plików, po prostu odtworzyć zachowany (prawidłowy system uprawnień).

Cały skrypt wygląda tak:

#!/bin/sh

GDZIE=$PWD

#FOLDER /bin
touch /$GDZIE/bin.sh
echo '#!/bin/sh'>/$GDZIE/bin.sh
find /bin -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/bin.sh

#FOLDER /sbin
touch /$GDZIE/sbin.sh
echo '#!/bin/sh'>/$GDZIE/sbin.sh
find /sbin -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/sbin.sh

#FOLDER /lib
touch /$GDZIE/lib.sh
echo '#!/bin/sh'>/$GDZIE/lib.sh
find /lib -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/lib.sh

#FOLDER /usr
touch /$GDZIE/usr.sh
echo '#!/bin/sh'>/$GDZIE/usr.sh
find /usr -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/usr.sh

#FOLDER /etc 
touch /$GDZIE/etc.sh
echo '#!/bin/sh'>/$GDZIE/etc.sh
find /etc -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/etc.sh

#FOLDER /opt
touch /$GDZIE/opt.sh
echo '#!/bin/sh'>/$GDZIE/opt.sh
find /opt -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/opt.sh

#Folder /var
touch /$GDZIE/var.sh
echo '#!/bin/sh'>/$GDZIE/var.sh
find /var -printf "chown %u:%g %p && chmod  %m %p\n">>/$GDZIE/var.sh

chmod +x /$GDZIE/*.sh

Ta wersja generuje skrypty do odtwarzania uprawnień dla praktycznie wszystkich ważnych folderów systemowych.

Można go łatwo zmodyfikować - zmieniając ścieżkę i inne parametry polecenia find.

Czas wykonania dla wszystkich folderów systemowych (u mnie):

root ~ # time ./backperm 
real 3m51.333s 
user 0m13.695s 
sys 1m50.851s

4 minuty - można wytrzymać. W rezultacie mamy skrypty noszące nazwy kluczowych folderów systemowych Linuksa

Każda linia wynikowa w generowanych skryptach przyjmuje taką postać:

chown root:root /usr/bin/gcc && chmod  755 /usr/bin/gcc

W przypadku awarii systemu uprawnień polegający na zmianie właściciela, grupy lub uprawnień do plików w jednym z tych folderów, łatwo można odtworzyć poprawny, zachowany w czasie prawidłowego działania systemu stan folderu.

Należy go uruchamiać się poprzez sudo, lub przez użytkownika root. Na "drobną" literówkę przy ustawianiu uprawnień, może się bardzo przydać.

Podziękowania dla azhaga, za niezamierzony udział w powstaniu tego tekstu ;)

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks