Chciałbym zmienić uprawnienia do folderu i wszystkich jego podfolderów i plików w jednym kroku (komendzie) w systemie Linux.
Próbowałem już poniższego polecenia, ale działa tylko dla wspomnianego folderu:
chmod 775 /opt/lampp/htdocs
Czy istnieje sposób, aby ustawić chmod 755
dla /opt/lampp/htdocs
i cała jej zawartość w tym podfolderów i plików?
Ponadto, jeśli w przyszłości utworzę nowy folder lub plik htdocs
, w jaki sposób można automatycznie ustawić uprawnienia w tym folderze 755
?
Spojrzałem też na ten link:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
linux
permissions
directory
chmod
Adam
źródło
źródło
chmod 75 /opt/lampp/htdocs
czy naprawdę tak powinno byćchmod 755 /opt/lampp/htdocs
?Odpowiedzi:
Inne odpowiedzi są poprawne, ponieważ
chmod -R 755
ustawią te uprawnienia do wszystkich plików i podfolderów w drzewie. Ale dlaczego, u licha, chcesz ? Może to mieć sens dla katalogów, ale po co ustawiać bit wykonania na wszystkich plikach?Podejrzewam, że tak naprawdę chcesz ustawić katalogi na 755 i albo zostawić pliki w spokoju, albo ustawić je na 644. W tym celu możesz użyć
find
polecenia. Na przykład:Aby zmienić wszystkie katalogi na 755 (
drwxr-xr-x
):Aby zmienić wszystkie pliki na 644 (
-rw-r--r--
):źródło
{} \;
na końcu linia?chmod 644 {} \;
określa polecenie, które zostanie wykonanefind
dla każdego pliku.{}
jest zastępowany ścieżką do pliku, a średnik oznacza koniec polecenia (znak ucieczki, w przeciwnym razie byłby interpretowany przez powłokę zamiastfind
).Zaznacz opcję -R
chmod -R <permissionsettings> <dirname>
W przyszłości możesz zaoszczędzić dużo czasu, najpierw sprawdzając stronę podręcznika:
Więc w tym przypadku:
źródło
man
jestman
. Znalezienie przykładów w dokumencie może być bardzo czasochłonne, szczególnie wgrep
przypadku, gdy jesteś nowyman
, jednak Google lub SO dostarczają przykłady w ciągu kilku sekund.Jeśli chcesz ustawić uprawnienia do wszystkich plików
a+r
i wszystkich katalogów doa+x
, i wykonaj to rekurencyjnie przez pełne drzewo podkatalogów, użyj:X
(To jest kapitałX
, a nie małyx
!) Jest ignorowany dla plików (chyba że są one już wykonywalny dla kogoś), ale służy do katalogów.źródło
chmod
dokumentów, w których zorientowałem się, że mogę skorzystaćchmod -R g+wX .
. Brawo!x
plików, jeśli już je mają.Możesz używać
-R
zchmod
do rekurencyjnego przechodzenia wszystkich plików i podfolderów.Możesz potrzebować sudo, ponieważ zależy to od zainstalowania LAMPY przez bieżącego użytkownika lub innego:
źródło
sudo chmod 755 -R /directory
nie działało, ale działałosudo chmod -R 755 /directory
. Dziwne. Nawiasem mówiąc, używam Mac OS X.sudo chmod 755 -R
działało na RHEL i działałoPrawidłowe polecenie rekurencyjne to:
-R
: zmień każdy podfolder, w tym bieżący folderźródło
Aby ustawić wszystkie podfoldery (rekurencyjnie) użyj -R
I użyj umask, aby ustawić domyślnie nowe foldery / pliki cd / folder umask 755źródło
umask
na 755! Nie będziesz w stanie wyświetlać, czytać ani używać tworzonych plików lub katalogów!λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w
chmod 755 -R /opt/lampp/htdocs
rekurencyjnie ustawi uprawnienia. Nie ma możliwości automatycznego ustawienia uprawnień do plików tylko w tym katalogu, który jest tworzony po ustawieniu uprawnień, ale można zmienić domyślne ustawienia uprawnień dla całego systemu za pomocą ustawieniaumask 022
.źródło
inherit
być rozwiązaniem wielu przypadków, czy będzie działać wyłącznie z NTFS-3G?myforlder
z innych miejsc (np. komputera) do tego katalogu docelowego (na serwerze), ponieważ spróbuje on utworzyć nowy folder w katalog docelowy o nazwie, domyfolder
której nie masz uprawnień. Jak mamroot
, po prostu używamchown -R username:usergroup /directory
.Możesz rozważyć tę odpowiedź udzieloną przez nik na superużytkowniku i użyć „one chmod” dla wszystkich plików / folderów takich jak to:
źródło
-exec
opcjifind
, aby pokonaćArgument list too long
błąd.Posługiwać się:
Uważaj jednak na to. To naprawdę może cię zranić, jeśli zmienisz uprawnienia niewłaściwych plików / folderów.
źródło
Oto inny sposób ustawienia katalogów na 775 i plików na 664.
To może wyglądać długo, ale jest całkiem fajne z trzech powodów:
man
stron (patrz poniżej).Zauważ, że nie potwierdziłem różnicy w wydajności (jeśli w ogóle) między tym rozwiązaniem a tym, że po prostu użyłem dwóch poleceń find (jak w rozwiązaniu Petera Mortensena). Jednak zobaczenie podobnego przykładu w instrukcji jest zachęcające.
Przykład ze
man find
strony:Twoje zdrowie
źródło
chmod -R 755 directory_name
działa, ale w jaki sposób chcesz zachować nowe pliki do 755? Uprawnienia do pliku stają się uprawnieniem domyślnym.źródło
W systemie Mac OS X 10.7 (Lion) jest to:
I tak, jak wszyscy inni mówią, bądź ostrożny, robiąc to.
źródło
Chcesz się upewnić, że odpowiednie pliki i katalogi są chmod-ed / uprawnienia dla nich są odpowiednie. Dla wszystkich katalogów, które chcesz
I dla wszystkich obrazów, JavaScript, CSS, HTML ... nie powinieneś ich wykonywać. Więc użyj
Ale dla całego kodu logicznego (na przykład kodu PHP) należy ustawić uprawnienia tak, aby użytkownik nie widział tego kodu:
źródło
Myślę, że Adam pytał, jak zmienić wartość umask dla wszystkich procesów, które wiążą się z operacją na
/opt/lampp/htdocs
katalogu.Maska trybu tworzenia pliku użytkownika (umask) służy do określania uprawnień do plików dla nowo tworzonych plików. Można go użyć do kontrolowania domyślnego uprawnienia do plików dla nowych plików.
więc jeśli będziesz używał jakiegoś programu ftp do przesyłania plików
/opt/lampp/htdocs
, musisz skonfigurować serwer ftp, aby używał umask, który chcesz.Jeśli pliki / katalogi są tworzone na przykład przez php, musisz zmodyfikować kod php
jeśli utworzysz nowe pliki / foldery z sesji bash, możesz ustawić wartość umask w swoim profilu powłoki ~ / .bashrc Lub możesz ustawić umask w
/etc/bashrc
lub/etc/profile
plik dla wszystkich użytkowników. dodaj do pliku: umask 022Aby zmienić uprawnienia do już utworzonych plików, możesz użyć find. Mam nadzieję że to pomoże.
źródło
Istnieją dwie odpowiedzi na znalezienie plików i zastosowanie się
chmod
do nich. Pierwszy tofind
plik i stosuje sięchmod
go, jak się znajduje (zgodnie z sugestią @WombleGoneBad).Drugim rozwiązaniem jest wygenerowanie listy wszystkich plików z
find
poleceniem i dostarczenie tej listy dochmod
polecenia (zgodnie z sugestią @lamgesh).Obie wersje działają dobrze, o ile liczba plików zwracanych przez
find
polecenie jest niewielka. Drugie rozwiązanie wygląda świetnie dla oka i jest bardziej czytelne niż pierwsze. W przypadku dużej liczby plików drugie rozwiązanie zwraca błąd:Argument list too long.
Więc moja sugestia jest taka
chmod -R 755 /opt/lampp/htdocs
jeśli chcesz zmienić uprawnienia wszystkich plików i katalogów jednocześnie.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
jeśli liczba używanych plików jest bardzo duża. Do-type x
wyszukiwania opcja dla określonego typu pliku tylko, gdzie d jest używany do znalezienia katalogu, F pliku i l dla łącza.chmod 755 $(find /path/to/base/dir -type d)
inaczejźródło
To jest bardzo proste.
W terminalu przejdź do menedżera plików. Przykład:
sudo nemo
. Idź/opt/
następnie kliknij Właściwości → Pozwolenie . a następnie Inne . Na koniec zmień na tworzenie i usuwanie oraz dostęp do plików do odczytu i zapisu, a następnie kliknij przycisk Zastosuj ... I działaj.źródło