Globalna zmiana praw plików za pomocą find

Dyskusja w 'Udostępnianie plików, folderów i drukarek' rozpoczęta przez użytkownika Erewhon, 1 Październik 2008.

Ładowanie...
  1. Erewhon
    Offline

    Erewhon Nowy użytkownik Noobie

    Dołączył:
    1 Październik 2008
    Wiadomości:
    4
    Miejscowość:
    Tarnowskie Góry
    Local Time:
    22:32
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    QNAP TS-509 Pro:
    • utworzony udział sieciowy
    • utworzona grupa z pełnym dostępem do tego udziału
    • kilkunastu użytkowników przyporządkowanych do tej grupy

    Skopiowałem do nowego udziału sieciowego dokumenty z innego serwera plików (działającego na win 2000).

    Po skopiowaniu użytkownicy zaczęli mi zgłaszać, że nie potrafią w niektórych kartotekach tworzyć nowych dokumentów, ani zapisywać zmian w plikach znajdujących się w tych kartotekach.

    Zalogowałem się poprzez SSH na QNAP-a i wylistowałem zbiory, okazało się, że niektóre katalogi i pliki mają prawa tylko do odczytu. To postanowiłem globalnie ustawić prawa 777 dla kartotek i 666 dla zbiorów.

    uruchamiam find-a:
    Kod (Text):
    1.  
    2. [/share/MD0_DATA/dane] # find ./ -type d
    widzę, że wylistowało mi wszystkie katalogi, to uruchamiam teraz z parametrem -perm jak podpowiada help do find-a:
    Kod (Text):
    1.  
    2. [/share/MD0_DATA/dane] # find ./ -type d -perm 777
    niestety nie zmienia to wszystkich katalogów (zwłaszcza zagnieżdżanych).

    Jakaś podpowiedź, jak sobie poradzić z globalną zmianą praw dostępu do plików/katalogów ?
     
  2. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 032
    Miejscowość:
    Nowy Sącz
    Local Time:
    22:32
    Oceny:
    +1 339 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    ?

    -perm 777 bedzie oznaczac zeby wyszukac wszystkie katalogi o prawach 777

    moze predzej cos takiego:
    Kod (Text):
    1. find ./ -type d -print -exec chmod 755 {} \;
     
  3. Erewhon
    Offline

    Erewhon Nowy użytkownik Noobie

    Dołączył:
    1 Październik 2008
    Wiadomości:
    4
    Miejscowość:
    Tarnowskie Góry
    Local Time:
    22:32
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Od tej komendy rozpocząłem próbę zmiany praw, ale niestety find na QNAPie nie przyjmuje parametru --exec


    A co do parametru -param to przyznaję się, to fakt on wyszukuje zbiory o ustawionych prawach - tutaj mój bład, który mogę wytłumaczyć tylko porannym roztargnieniem :)


    czy w związku z tym jakiś inny pomysł na zmianę globalną praw ?
     
  4. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 032
    Miejscowość:
    Nowy Sącz
    Local Time:
    22:32
    Oceny:
    +1 339 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    nie wiem... ale jak znajdziesz daj znac...

    przypomnialo mi sie ze tez potrzebuje napisac jakis skrypt - niestety nie mam czasu googlowac :-(
     
  5. Erewhon
    Offline

    Erewhon Nowy użytkownik Noobie

    Dołączył:
    1 Październik 2008
    Wiadomości:
    4
    Miejscowość:
    Tarnowskie Góry
    Local Time:
    22:32
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Można użyć takiego skryptu, tylko ma on jeden problem, nie akceptuje zbiorów/katalogów ze spacjami:

    Kod (Text):
    1.  
    2. #!/bin/bash                                                                                                                  
    3. for DIR_FROM_FIND in `find ./ -type d`                                                                                      
    4.  do                                                                                                                      
    5.     chmod 777 $DIR_FROM_FIND                                                                                      
    6.  done
    próba podpięcia do wyników find-a, awk:

    Kod (Text):
    1. find ./ -type d | awk ' {gsub( / / , "\ "); print $0}'
    nie poprawia na qnapie spacji na "\ ", wszystko wskazuje na to, że ten awk nie akceptuje gsub :-(
     
  6. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 032
    Miejscowość:
    Nowy Sącz
    Local Time:
    22:32
    Oceny:
    +1 339 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    a zmien...
    chmod 777 $DIR_FROM_FIND

    na:
    chmod 777 "$DIR_FROM_FIND"

    jesli nie zadziala to zrob:
    chmod 777 "`echo $DIR_FROM_FIND`"
     
  7. Erewhon
    Offline

    Erewhon Nowy użytkownik Noobie

    Dołączył:
    1 Październik 2008
    Wiadomości:
    4
    Miejscowość:
    Tarnowskie Góry
    Local Time:
    22:32
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Niestety ale to nie pomogło :-(

    ale obszedłem ten problem trochę na około:
    • udostępniłem zasób sieciowy po NFS-ie z pełnym dostępem.
    • na innym komputerze z linuxem podmontowałem ten zasób:
      Kod (Text):
      1. mount -t nfs IP_QNAPA:/UDOSTEPNIONY_ZASOB /mnt/QNAP
    • a następnie:
      Kod (Text):
      1. cd /mnt/QNAP;
      2. find ./ -type d -exec chmod 777 {} \;
      3. find ./ -type f -exec chmod 666 {} \;
      4.  

    Zauważyłem dodatkowo, że jeżeli zbiór ma prawa 777 to użytkownicy nie widzą tego pliku, czyli gdy wszystkie pliki w kartotece mają ustawione 777 to dla użytkownika ta kartoteka jest pusta.

    QNAP TS-509 Pro
    2.0.0 Build 0725T
     
  8. Nicodem
    Offline

    Nicodem Staff Contributor

    Dołączył:
    15 Sierpień 2008
    Wiadomości:
    132
    Miejscowość:
    Warszawa
    Local Time:
    22:32
    Oceny:
    +3 / 0 / -0
    Followers:
    1
    Nie wiem jak ma się to do modelu 509 ale u mnie na 209 rozwiązaniem była instalacja z ipkg nowszego busybox.
    Po prostu nowszy busybox ma find z opcja --exec i po kłopocie.
    Mam teraz 2 busy boxy. Jeden normalny, drugi w /opt/bin

    odpalasz /opt/bin/busybox find składnia_find i po sprawie.
     
  9. Silas Mariusz
    Offline

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 032
    Miejscowość:
    Nowy Sącz
    Local Time:
    22:32
    Oceny:
    +1 339 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    tak samo sie to ma do ts 509 :)
     
  10. Gregor
    Offline

    Gregor System Engineer Q Specialist

    Dołączył:
    28 Listopad 2008
    Wiadomości:
    116
    Local Time:
    21:32
    Oceny:
    +9 / 0 / -0
    Followers:
    0
    QNAP:
    TS-239 Pro II
    Ethernet:
    1 GbE
    TS-239 Pro II 1 GbE
    Zmierzyłem się dziś ze spacjami w nazwach i wymodziłem takie coś

    find $DIR -type d | while read nazwa
    do
    chmod 555 "$nazwa"
    done

    i nawet działa :)
     

Poleć tę stronę