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:
    04:57
    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 369
    Miejscowość:
    Nowy Sącz
    Local Time:
    04:57
    Oceny:
    +1 421 / 30 / -6
    Followers:
    23
    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:
    04:57
    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 369
    Miejscowość:
    Nowy Sącz
    Local Time:
    04:57
    Oceny:
    +1 421 / 30 / -6
    Followers:
    23
    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:
    04:57
    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 369
    Miejscowość:
    Nowy Sącz
    Local Time:
    04:57
    Oceny:
    +1 421 / 30 / -6
    Followers:
    23
    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:
    04:57
    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:
    04:57
    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 369
    Miejscowość:
    Nowy Sącz
    Local Time:
    04:57
    Oceny:
    +1 421 / 30 / -6
    Followers:
    23
    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:
    128
    Local Time:
    03:57
    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ę

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Odrzuć powiadomienie.