Strona 3 z 3

: 06 grudnia 2010, 08:16
autor: cooleq
Przepraszam, że tak późno ale znowu nie miałem czasu na testowanie.
Jednak te prawa dostępu nie działają, -R służy do kaskadowego zmieniania uprawnień w podkatalogach o wszystkich nazwach, a nie do wyszukiwania katalogów.

: 06 grudnia 2010, 23:27
autor: Bastian
Nie wiem co ci nie działa. U mnie działa.

: 07 grudnia 2010, 09:11
autor: cooleq
Ja dostaje komunikat, że nie ma takiego katalogu. Może odrobinę uściślę.
Tak w uproszczeniu wygląda struktura katalogów:

Projekty:[INDENT] Warszawa
[/INDENT][INDENT][INDENT] Mapy
Gis
Raport
[/INDENT][/INDENT][INDENT] Kraków
[/INDENT][INDENT][INDENT] Mapy
Gis
Raport
[/INDENT][/INDENT][INDENT] Wrocław
[/INDENT][INDENT][INDENT] Mapy
Gis
Raport
[/INDENT][/INDENT]Itd.
Oczywiście to jest w dużym uproszczeniu bo tu można by zrobić to ręcznie. W każdym razie za uzupełnianie każdego katalogu jest odpowiedzialna inna osoba. Dlatego po utworzeniu struktury katalogu nowego projektu trzeba by wykonać skrypt, który ustawi uprawnienia i właścicieli. To jest do napisania i nie będzie z tym problemu, niestety trzeba zrobić to jeszcze dla istniejących już projektów, których jest dużo.
No i teraz to nasze polecenie. W katalogu /home wykonuję:

Kod: Zaznacz cały

chmod -R 0440 Projekty
następnie w katalogu projekty:

Kod: Zaznacz cały

chmod -R 0750 Gis*
chown robert *Gis*
i raczej nic to nie daje. Komunikat jak wyżej.

Edycja:
Już wiem

Kod: Zaznacz cały

chmod/own [parametry] /home/Projekty/*/*Gis*
chmod/own [parametry] /home/Projekty/*/*/*Gis*
Tak dopiero działa dla wszystkich odpowiednich katalogów.
Teraz mam jeszcze pytanie, ponieważ chcę napisać skrypt do tworzenia odpowiedniej struktury katalogów podczas dodawania nowego projektu.

Kod: Zaznacz cały

#! /bin/bash
#pierwszy parametr = nazwa projektu
mkdir /home/Projekty/$1
chmod 0744/home/Projekty/$1
mkdir /home/Projekty/$1/Mapy
mkdir /home/Projekty/$1/Gis
mkdir /home/Projekty/$1/Raport
Problem w tym, że nazwa projektu czasem zawiera spację, i wtedy tworzy się katalog z tylko pierwszym członem. Da się jakoś rozwiązać ten problem? Czy może lepiej żeby skrypt odpytywał o takie rzeczy?

: 08 grudnia 2010, 08:04
autor: Bastian
W bashu znak spacji markowany jest przez \

Kod: Zaznacz cały

nazwa\ projektu
Jednak polecalbym wprowadzic dobry nawyk zastepowania w nazwach spacje podkresleniem

Kod: Zaznacz cały

nazwa_prjektu
Co do zmiany właściciela. Tak myślałem, że ze złego miejsca wykonujesz:-)

: 08 grudnia 2010, 09:25
autor: cooleq
No właśnie, wiem jak jest ze spacją, dlatego próbowałem ujmować parametr w cudzysłów ale wtedy to już bardzo dziwne rzeczy się działy. Nazwy katalogów są używane głównie w Windowsie dlatego postanowiłem używać normalnych spacji w celu większej czytelności dla innych użytkowników i zachowania oryginalnych nazw z umów. Jednak skoro się nie da to chyba pozmieniam nazwy bo bez skryptów w przyszłości będzie ciężko.

Co do praw dostępu i zmiany właściciela, miałem nadzieję na zbudowanie funkcji, która przeszuka mi wszystkie katalogi i zmieni właściwości niezależnie od lokalizacji (głębokości) bo w tym przypadku sprawdza się to tylko, jeśli struktura jest bardzo schematyczna ale na moje potrzeby na razie wystarczy.

: 08 grudnia 2010, 18:47
autor: mariaczi
Jeśli chcesz mieć spacje w nazwach katalogów to skrypt wywołuj następująco:

Kod: Zaznacz cały

nazwa_skryptu "nazwa katalogu projektu"
Zawartosc "nazwa_skryptu":

Kod: Zaznacz cały

#! /bin/bash
#pierwszy parametr = nazwa projektu

mkdir "$1"
chmod 0744 "$1"
mkdir "$1"/Mapy
mkdir "$1"/Gis
mkdir "$1"/Raport