Robiłem masową rekurencyjną zmianę uprawnień niektórych plików, które migrowałem do systemu unix. Zmieniłem je na ug + rw, ale potem okazało się, że nie mogę przejść do podkatalogów. Przejrzałem stronę podręcznika użytkownika chmod
i nie znalazłem żadnego wyjaśnienia dla wykluczania katalogów, więc poszukałem trochę google i zauważyłem, że ludzie zwykli find
rekurencyjnie zmieniać uprawnienia do katalogów, aby „wykonywać” dla użytkownika i grupy. Zrobiłem to, a potem mogłem je zobaczyć.
Wydawało mi się jednak, że powinienem być w stanie to znaleźć chmod
- rekurencyjnie zmieniać pliki do odczytu / zapisu, ale nie uniemożliwiać dostępu do katalogów. Czy zrobiłem to „we właściwy sposób”, czy jest to prostszy sposób?
źródło
find
ustawienia wszystkich uprawnień do plików na 600, a wszystkich uprawnień do katalogu na 700. (Przybyłem tutaj przez moje googlowania na ten temat.) Jeśli można to zrobić za pomocą jednegochmod -R
polecenia, możesz mnie poprawić.chmod -R u=rwX,go= /path
robi prawie to, co chcesz: ustawia wszystkie katalogi na 700, a wszystkie pliki na 600 lub 700, w zależności od tego, czy bit wykonawczy jest już ustawiony, czy nie, i myślę, że jest to właściwe .find
komendzie napisałeś był bardzo pomocny jako szablon. :)Korzystanie z funkcji wyszukiwania jest „właściwą” i jedyną metodą programową, chociaż istnieją odmiany:
lub
lub najwolniejszy:
Każdy z nich wybiera plik (nie katalog, nie dowiązanie symboliczne) i stosuje na nim
chmod
polecenie. Pierwsze dwa zmniejszają liczbę wywołańchmod
, dodając plik na końcu wewnętrznego wiersza poleceń za każdym razem, aż zostanie osiągnięte maksimum (często 10), a następnie wywołuje polecenie i rozpoczyna odbudowę nowego polecenia. Ostatnia instrukcja odradza nowy proces dla każdego pliku, więc jest mniej wydajna.źródło