Muszę ustawić uprawnienia do odczytu i zapisu dla root
użytkownika do katalogu subfolderN
i wszystkich jego folderów nadrzędnych do root
.
Mogę to zrobić ręcznie:
$ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN
$ sudo chmod +rx /root/subfolder1/subfolder2
$ sudo chmod +rx /root/subfolder1
$ sudo chmod +rx /root
Ale jeśli N
jest duży, jestem zmęczony. Jak to zrobić automatycznie za pomocą jednego polecenia?
permissions
directory
Maksym Jefremow
źródło
źródło
/root
świata czytelnym.Odpowiedzi:
Można to łatwo zrobić w powłoce, zaczynając od podkatalogu i przechodząc w górę:
Zaczyna się to od dowolnego pliku / katalogu, który ustawisz również f, i działa na każdym katalogu nadrzędnym, aż napotka „/” (lub cokolwiek ustawisz ciąg w stanie pętli na). Nie chmod „/”.
źródło
f
jest ścieżką względną, i chcę zatrzymać się na tym, co jest względne zamiast/
?$f
takfoo/bar
, czy$f
kiedykolwiek zmieni się na.
? Takdirname
to robi. DziękiZ
csh
,tcsh
,ksh
,zsh
,bash
,fish
lubyash -o braceexpand
:Z
zsh
:Lub możesz zdefiniować funkcję kwalifikatora globu, taką jak:
Do użycia na przykład jako:
Zauważ, że
chmod +rx
ma na to wpływ umask. Jeśliumask
nie ma007
tego w/root
katalogu, katalog byłby czytelny i dostępny dla wszystkich, co jest złym pomysłem./root
jest zwykle przeznaczony do prywatnych rzeczy superużytkownika, złym pomysłem jest ujawnienie go.źródło
,
w{,/subfolder}
robi?/subfolder
; więc/root{,/subfolder}
produkuje/root
i/root/subfolder
sh
Cóż, możesz zrobić coś nieco bardziej złożonego, na przykład:
Aby zobaczyć, co to zrobi, zamień
chmod
połączenie na print:źródło
Nie wiem, co próbujesz zrobić, ale jest to lepsze niż lekceważenie rekurencji . To powiedziawszy, przeczytaj aktualną odpowiedź:
Umm ... dlaczego nie użyć rekurencyjnego.
Lub jeśli ci się nie podoba, możesz podać
chmod
kilka katalogów:źródło
chmod -R /root
zmienia wszystko pod/root
- w tym zwykłe pliki i wszystkie katalogi. Pytanie dotyczy zmiany tylko jednego łańcucha katalogów.