Jak ustawić chmod dla folderu i wszystkich jego podfolderów i plików? [zamknięte]

Czy istnieje sposób na ustawienie chmod 755 dla /opt/lampp/htdocs i całej jego Zawartości, w tym podfolderów i plików?

Również, w przyszłości, jeśli utworzę nowy folder lub plik w htdocs, w jaki sposób uprawnienia do tego mogą być automatycznie ustawione na 755?

To działa, ale tylko dla tego folderu:

chmod 775 /opt/lampp/htdocs
Author: jww, 2010-09-18

16 answers

Pozostałe odpowiedzi są poprawne, ponieważ chmod -R 755 ustawia te uprawnienia dla wszystkich plików i podfolderów w drzewie. ale dlaczego, u licha, miałbyś tego chcieć ? Może to mieć sens dla katalogów, ale po co ustawiać bit execute na wszystkich plikach?

Podejrzewam, że naprawdę chcesz ustawić katalogi na 755 i albo zostawić pliki w spokoju, albo ustawić je na 644. W tym celu możesz użyć polecenia find. Na przykład:

Aby zmienić wszystkie katalogi na 755 (drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Aby zmienić wszystkie pliki na 644 (-rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
 2327
Author: WombleGoneBad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-26 10:48:25

Zaznacz opcję-R

chmod -R <permissionsettings> <dirname>

W przyszłości możesz zaoszczędzić dużo czasu, sprawdzając najpierw stronę podręcznika:

man <command name>

Więc w tym przypadku:

man chmod
 658
Author: Steve Robillard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 02:47:26

Jeśli chcesz ustawić uprawnienia dla wszystkich plików na a+r, A dla wszystkich katalogów na a+x i zrobić to rekurencyjnie przez pełne drzewo podkatalogów, użyj:

chmod -R a+rX *

X (to jest Duże X, a nie Małe x!) jest ignorowany dla plików (chyba że są już wykonywalne dla kogoś), ale jest używany dla katalogów.

 298
Author: Pete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-11 20:57:02

Możesz użyć -R z chmod do rekurencyjnego przechodzenia wszystkich plików i podfolderów.

Możesz potrzebować sudo, ponieważ zależy to od tego, czy lampa jest zainstalowana przez bieżącego użytkownika lub innego użytkownika:

sudo chmod 755 -R /opt/lampp/htdocs
 109
Author: ravi ranjan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-05 13:24:06

Aby ustawić wszystkie podfoldery (rekurencyjnie) użyj -R

chmod 755 /folder -R

i użyj opcji umask, aby ustawić domyślne nowe foldery/pliki CD / folder umask 755

 67
Author: Topera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-18 02:43:19

chmod 755 -R /opt/lampp/htdocs ustawia rekurencyjnie uprawnienia. Nie ma możliwości automatycznego ustawiania uprawnień do plików tylko w tym katalogu, który został utworzony Po ustawieniu uprawnień, ale możesz zmienić domyślne uprawnienia do plików w całym systemie, ustawiając umask 022.

 47
Author: sleepynate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-18 02:38:42

Poprawne polecenie rekurencyjne to:

sudo chmod 755 -R /opt/lampp/htdocs

-R: Zmień każdy podfolder, w tym bieżący folder

 44
Author: Pramendra Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-11 09:34:03

Możesz rozważyć tę odpowiedź udzieloną przez nik na superuserze i użyć "one chmod" dla wszystkich plików/folderów takich jak:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
 22
Author: Iam Zesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 10:18:14

Użycie:

sudo chmod 755 -R /whatever/your/directory/is
Jednak uważaj z tym. Może to naprawdę zaszkodzić, jeśli zmienisz uprawnienia niewłaściwych plików / folderów.
 20
Author: Nate Starner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 02:49:26

Oto inny sposób na ustawienie katalogów na 775, A plików na 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

Może i wygląda na długi, ale jest całkiem fajny z trzech powodów:

  1. skanuje system plików tylko raz, a nie dwa razy.
  2. zapewnia lepszą kontrolę nad tym, jak obsługiwane są pliki , a nie jak obsługiwane są katalogi . Jest to przydatne podczas pracy z trybami specjalnymi , takimi jak sticky bit, które prawdopodobnie chcesz zastosować do katalogów, ale nie pliki.
  3. używa techniki prosto ze stron man (patrz niżej).

Zauważ, że nie potwierdziłem różnicy wydajności (jeśli w ogóle) między tym rozwiązaniem a tym, że po prostu użyłem dwóch komend find (jak w rozwiązaniu Petera Mortensena). Jednak zobaczenie podobnego przykładu w podręczniku jest zachęcające.

Przykład ze strony man find:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

Cheers

 19
Author: chrisfargen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-17 07:04:26

chmod -R 755 directory_name działa, ale jak zachować nowe pliki do 755 również? Uprawnienia pliku stają się domyślnymi uprawnieniami.

 11
Author: Sanchit Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 12:03:34

Chcesz się upewnić, że odpowiednie pliki i katalogi są chmod-ed / permissions for these are appropriate. Dla wszystkich katalogów, które chcesz

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

I dla wszystkich obrazów, JavaScript, CSS, HTML...nie powinieneś ich zabijać. Więc użyj

chmod 644 img/* js/* html/*

Ale dla całego kodu logicznego (na przykład kodu PHP), powinieneś ustawić uprawnienia tak, aby użytkownik nie mógł zobaczyć tego kodu:

chmod 600 file
 9
Author: NikolaiDante,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-22 22:07:22

Dla Mac OS X 10.7 (Lion) jest to:

chmod -R 755 /directory

I tak, jak wszyscy inni mówią, Bądź ostrożny, gdy to robisz.

 7
Author: wmartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 02:56:19

Myślę, że Adam pytał jak zmienić wartość umask dla wszystkich procesów, które mają działać w katalogu /opt/lampp/htdocs.

Maska trybu tworzenia plików użytkownika (umask) służy do określania uprawnień do plików dla nowo utworzonych plików. Może być używany do kontrolowania domyślnych uprawnień do plików dla nowych plików.

Więc jeśli używasz jakiegoś programu ftp do przesyłania plików do /opt/lampp/htdocs, musisz skonfigurować serwer ftp tak, aby używał opcji umask.

Jeśli pliki / katalogi zostaną utworzone dla przykład za pomocą php, musisz zmodyfikować kod php

<?php
umask(0022);
// other code
?>

Jeśli utworzysz nowe pliki / foldery z sesji bash, możesz ustawić wartość umask w profilu powłoki~/.bashrc Można też ustawić umask w pliku /etc/bashrc lub /etc/profile dla wszystkich użytkowników. Dodaj następujący plik: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

Oraz do zmiany uprawnień dla już utworzonych plików można użyć funkcji find. Mam nadzieję, że to pomoże.

 5
Author: Viktor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-21 09:03:06

Istnieją dwie odpowiedzi na znalezienie plików i zastosowanie chmod do nich. Pierwszym z nich jest find plik i Zastosuj chmod Jak znajdzie (zgodnie z sugestią @WombleGoneBad).

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Drugim rozwiązaniem jest wygenerowanie listy wszystkich plików za pomocą polecenia find i dostarczenie tej listy do polecenia chmod (zgodnie z sugestią @lamgesh).

chmod 755 $(find /path/to/base/dir -type d)

Obie te wersje działają poprawnie, o ile liczba plików zwracanych przez polecenie find jest niewielka. Drugie rozwiązanie wygląda świetnie dla oka i nie tylko czytelny niż pierwszy. Jeśli jest duża liczba plików, drugie rozwiązanie zwróci błąd: Argument list too long.

Więc moja sugestia jest

  1. użyj chmod -R 755 /opt/lampp/htdocs, Jeśli chcesz zmienić uprawnienia wszystkich plików i katalogów jednocześnie.
  2. Użyj find /opt/lampp/htdocs -type d -exec chmod 755 {} \;, jeśli liczba plików jest bardzo duża. Opcja -type x wyszukuje tylko określony typ pliku, gdzie d służy do wyszukiwania katalogu, f do pliku i l do łącza.
  3. użyj chmod 755 $(find /path/to/base/dir -type d) inaczej
  4. lepiej użyj pierwszego w każdej sytuacji
 4
Author: Prabhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-21 19:58:49

To bardzo proste.

W terminalu przejdź do menedżera plików. przykład: sudo nemo. Idź /opt/ następnie kliknij Właściwości → pozwolenie. i wtedy Inne. Na koniec Zmień, aby utworzyć i usunąć i plik acess do odczytu i zapisu i kliknij przycisk Zastosuj... I pracy.

 2
Author: Debian.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-16 09:57:54