2011-11-07 18 views
16

Jestem nowy w świecie komputerów Mac i właśnie konfigurowałem mój serwer WWW. Użyłem następującego przewodnika: http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installerUprawnienia do zapisu - localhost - Mac OSX

Przesłałem moje strony i bazy danych i wszystko idzie całkiem nieźle. Jedyny problem, jaki mam, to z uprawnieniami do pisania. Na przykład istnieje plik konfiguracyjny, do którego należy pisać, i musiałem kliknąć prawym przyciskiem, przejdź do Get Info, a następnie włącz & pisać dla personelu i dla wszystkich.

Nie mogę ręcznie przejść i włączyć tych uprawnień zapisu dla każdego pliku/folderu. Nie musiałem tego robić za pomocą WAMP i znacznie szybciej się rozwijałem.

więc zastanawiać 2 możliwe rozwiązania: a) dodać moje konto użytkownika do białej listy dla localhost tak, że 644 przywileje są wystarczające b) ustalenia prawa zapisu rekurencyjnie

Odpowiedz

39

Uważam, że najlepszym rozwiązaniem jest zmiana ustawień użytkownika i grupy apache. Instrukcje można znaleźć na stronie: http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. Otwórz terminal i wpisz

    sudo nano /private/etc/apache2/httpd.conf 
    
  2. wyszukiwać i zmieniać http.conf kod z

    User _www 
    Group _www 
    

    Aby

    User your_mac_username 
    Group staff 
    

    Uwaga: W Wcześniejsze wersje, takie jak Leopard, mogą przenosić pracowników na pracowników. Można uzyskać nazwę użytkownika i grupę wpisując "id" i uderzając wpisać w terminalu

  3. Restart Apache

    sudo apachectl restart 
    
+0

Najprostszym rozwiązaniem! Zarówno użytkownik, jak i apache otrzymują uprawnienia do zapisu/odczytu bez zmiany uprawnień ;-) –

+0

Dlaczego tak ważne jest ustawienie grupy jako personelu? Pracuję na Linuksie i na Macu, na Linuxie grupa jest nazwą użytkownika, ale na Macu musiałem wypuścić personel, aby działał inaczej, inaczej Apache się nie uruchomi. –

+0

Aktualizacja do systemu macOS Sierra nadpisała moje wartości 'User' i' Group' w httpd.conf na '_www' i' _www'. Twoja odpowiedź pomogła mi rozwiązać problem z uprawnieniami, z którym się zetknąłem, ustawiając właściciela danego katalogu na "użytkownika" i "grupę" tych nowych wartości. – gmeben

2

Polecam ustawień przywileje zapisu rekurencyjnie dla twój główny katalog internetowy.

Możesz to zrobić za pomocą konsoli/terminalu, używając chmod -R 774 /my/web/root. Dla mnie właściciel i grupa jest ustawiona na: www-data:myUserName, którą można ustawić za pomocą chown. Nie zapomnij najpierw sprawdzić, kto jest Twoim użytkownikiem internetowym.

Edit: Dla lepszego zrozumienia, dlaczego nie masz dostępu:

chmod 774, każdy numer stojaki do konkretnych praw: użytkownik, grupa, inni. Jeśli użytkownik jest ustawiony na www-data, a grupa na www-data (większość użytkowników w systemie Unix znajduje się w grupie o nazwie określonej przez ich nazwę użytkownika). Tak więc, jeśli nie jesteś w grupie www-data musisz albo do niego dołączyć, albo musisz zmienić właściciela (chown) lub musisz zmienić uprawnienia (chmod). Istnieje kilka tutoriali, aby uzyskać więcej informacji.

+1

Właśnie próbuje 'chmod -R 774' dla jednego z moich stron i to sprawiło, że cały teren zakazany aż użyłem' chmod -R 777' który nie wydaje się właściwe. Jakieś pomysły? Również nie wiem, jak sprawdzić, kto jest moim użytkownikiem, czy możesz wyjaśnić? –

+0

Musisz również sprawdzić właściciela pliku (użytkownik ls -l do tego). Przeważnie foldery są ustawione na 'www-data: www-data'. Co oznacza, że ​​nie jesteś wymieniony i nie masz dostępu, dopóki nie użyjesz 'chmod 777'. Ostatnie 7 oznacza "inni". Po prostu ustaw właściciela tak, jak wspomniałem w mojej odpowiedzi. Zmienię moją odpowiedź, aby wyjaśnić to nieco więcej. – sascha

22

Jestem autorem wspomnianego bloga. Aby uzyskać uprawnienia do plików na serwerze WWW, musisz przyznać dostęp do zapisu użytkownikowi _www w poszukiwaniu plików. Dla config.inc.php, by ustawić go kilka sposobów:

Czy _www właścicielem pliku i mieć uprawnienia do zapisu:

$ sudo chown _www config.inc.php 
$ chmod u+w config.inc.php 

Wyraź swoją użytkownik właścicielem pliku, zmienić grupę do _www i dać uprawnienia do zapisu grupa:

$ sudo chgrp _www config.inc.php 
$ chmod g+w config.inc.php 

Lub, jeśli czujesz się komfortowo dzięki czemu wszyscy użytkownicy napisać, które nie polecam ze względów bezpieczeństwa, zapewnienie wszystkim użytkownikom możliwość zapisu:

$ chmod a+w config.inc.php 

Jeśli cały folder musi być napisany przez użytkownika _www, może on właścicielem folder i wszystkie pliki:

$ sudo chown -R _www:_www folder/ 

czy można dać zapisu folderu i uprawnienia do wykonywania przez wszystkich:

$ chmod a+wx folder/ 

Powodem, dla którego chmod 774 podał Ci niedozwolone błędy, było to, że użytkownik _www był objęty uprawnieniem "4", które jest "tylko do odczytu". W przypadku katalogów użytkownik potrzebuje "wykonać", aby przejść do folderu. chmod 775 pozwoliłby użytkownikowi i grupie na rwx i inne na r-x.Here's more information on Unix file permissions.

Ponadto użytkownik może zachować pełne prawo własności i dodać określone uprawnienia dla użytkownika _www zamiast zmieniać poziom dostępu dla WSZYSTKICH użytkowników za pomocą list kontroli dostępu.

$ sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder 
$ sudo chmod +a '_www allow read,write' config.inc.php 

Jeśli masz zamiar pójść drogą ACL, sugeruję robić trochę więcej czytania, aby zobaczyć jaki poziom dostępu naprawdę trzeba dostarczyć. Here is a great place to start.

+0

Dzięki za całą pomoc. Zastanawiam się, dlaczego miałbym zmienić właściciela config.inc.php i gdzie mogę go znaleźć? –

+0

@alanthing Czy nie jest ryzykowne udzielanie uprawnień apache do pisania (dowolnych?) Plików na twoim komputerze? – gen

9

biegnę Apache na OSX i to naprawić to dla mnie:

sudo chown -R _www:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

Aktualizacja # 1:

Składnia: sudo chown <user>:<group> <file-or-folder>. Użytkownik Apache w systemie OSX to _www.

Aby zachować prawo własności ale dają Apache uprawnienia R-w-x:

sudo chown -R <your-username>:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

Aktualizacja # 2:

lubię tej metody najlepiej. Ustaw Apache, by działał jak ty.

  1. W terminalu typu id dostać uid=123(Myname).

  2. Otwórz plik /etc/apache2/httpd.conf i edytuj go, aby użyć swojej nazwy użytkownika.

    <IfModule unixd_module> 
        User Myname 
        Group staff 
    </IfModule> 
    
  3. Powrót do terminalu: sudo apachectl restart