Jeśli sprawdzimy własność witryny 1, znajdziemy coś takiego,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Oznacza to, że katalog jest własnością użytkownika root, grupa root. Podczas gdy root użytkownika ma uprawnienia do zapisu (plus uprawnienia do odczytu i wykonywania) do katalogu, root grupy ma tylko uprawnienia do odczytu i wykonywania.
Będziemy chcieli zmienić własność grupy na inną (nową) grupę i dodać użytkownika 1 do tej konkretnej grupy. Damy również pozwolenie na pisanie tej grupie.
Utwórz nową grupę,
sudo addgroup site1
Dodaj użytkownika 1 do nowo utworzonej grupy,
sudo adduser user1 site1
Sprawdź, czy użytkownik 1 jest naprawdę w tej grupie,
groups user1
Dane wyjściowe powinny być listą w stylu:
user1 : <other-groups> site1
Teraz możemy zmienić własność grupy docelowego katalogu.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
Udziel uprawnienia do zapisu nowemu właścicielowi grupy,
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Sprawdź, czy wszystkie zmiany rzeczywiście istnieją,
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Tak więc katalog jest teraz własnością użytkownika root, grupy site1. Zarówno użytkownik root, jak i witryna grupy 1 mają uprawnienia do zapisu (oraz uprawnienia do odczytu i wykonywania) do katalogu. Każdy użytkownik należący do grupy site1 będzie korzystać ze wszystkich uprawnień przyznanych tej grupie.
Teraz zaloguj się jako użytkownik1, przejdź do katalogu site1 i spróbuj utworzyć plik w tym katalogu,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Nie powiodło się, ponieważ najprawdopodobniej podstawową grupą użytkownika 1 nie jest witryna1. Przejdź do tej grupy.
newgrp - site1
Spróbuj odtworzyć plik (uwaga, że zostałeś przeniesiony do katalogu domowego użytkownika 1 po zmianie grupy), to powinno działać teraz. Ponieważ utworzone pliki będą miały uprawnienia do odczytu na całym świecie, apache (lub serwer sieciowy) nie powinien mieć problemów z dostępem do nich.
EDYTOWAĆ
Ponadto, jak wskazał Dan08 w komentarzu, musisz dodać dane www do grupy site1.
sudo adduser www-data site1
W wielu (nie wszystkich) dystrybucjach www-data to użytkownik, pod którym działa serwer WWW Apache. Oznacza to również, że wszystko, co robi Apache (szczególnie skrypty PHP), będzie domyślnie wykonywane za zgodą użytkownika danych www (a także grupowania danych www). WordPress używa danych www użytkownika do zapisywania plików.
Jeśli chcesz zobaczyć, jak działa serwer WWW Apache, wydaj polecenie,
ps aux | grep apache2 | less
Permission denied
Wiadomość nie jest spowodowane „grupy podstawowej”, lecz użytkownik nie został jeszcze faktycznie jest w tej grupie (o ile system operacyjny dotyczy). Po wylogowaniu i ponownym zalogowaniu będzie działać zgodnie z oczekiwaniami (bez uruchamianianewgrp - site1
).www-data
uprawnień do zapisu grupa jeśli kończy się konieczności dodawaniawww-data
dosite1
anyways?www-data' write permissions? If that is the question,
www-data ”to nie grupa, to użytkownik. Daj mi znać, jeśli źle zrozumiem twoje pytanie.Utwórz dwie grupy:
site1grp
isite2grp
Dodaj
www-data
do obu grup.Dodaj użytkownika 1 i użytkownika 2 do odpowiednich grup
Zmień uprawnienia do folderów witryny, aby właścicielem użytkownika była strona www, a właścicielem grupy była odpowiednia grupa
Teraz
www-data
ma uprawnienia użytkownika i grupy w obu witrynach, a każdy użytkownik ma uprawnienia grupy dla swojej odpowiedniej witryny.źródło
Dla tych, którzy mają folder główny Wordpress w swoim folderze domowym:
Ubuntu / apache
Dodaj użytkownika do grupy danych www:
KREDYT Przyznanie uprawnień do zapisu grupie danych www
Chcesz zadzwonić do
usermod
użytkownika. To by było:Zakładając, że
www-data
grupa istniejeSprawdź, czy użytkownik jest w
www-data
grupie:Powinieneś dostać coś takiego:
twojaUserGroupName jest zwykle podobna do twojej nazwy użytkownika
Rekurencyjnie zmieniaj własność grupową folderu zachowując własność użytkownika
Zmień katalog na folder WebSiteFolder
Rekurencyjnie zmieniaj grupy uprawnień folderów i podfolderów, aby umożliwić uprawnienia do zapisu:
tryb
/home/yourUserName/yourWebSiteFolder/'
zmieniony z0755 (rwxr-xr-x)
na0775 (rwxrwxr-x)
Rekurencyjnie zmieniaj grupy uprawnień plików i podplików, aby umożliwić uprawnienia do zapisu:
Wynik powinien wyglądać mniej więcej tak:
Równoważny:
Uprawnienia będą jak 664 lub 775.
źródło
Musisz utworzyć nową grupę dla tzw. „Nowego użytkownika”, a następnie dodać dane www i „nowego użytkownika” do tej grupy:
Następnie możesz zmienić właściciela
new_user
i zgrupować wnew_group
:Następnie musisz przyznać grupie dostęp do witryny1. www-data nadal będzie mieć dostęp do strony, ponieważ należy ona do nowej_grupy, a new_user nie będzie mógł uzyskać dostępu do witryny2, ponieważ nie będzie należeć do grupy www-data, która jest właścicielem strony2.
źródło
chmod
)? Twoja odpowiedź nie wspomina nigdzie o trybie, który może wpłynąć na bezpieczeństwo (lub zniszczyć).chmod
) poprzez odwołanie wszystkich uprawnień dla INNYCH.Zakładając, że wszystkie pliki należą już do
www-data
użytkownika (możesz to sprawdzić za pomocąls -slah
polecenia), który należy dowww-data
grupy (następna kolumna po nazwie użytkownika na liście plików), możesz po prostu dodać użytkownika do tej samejwww-data
grupy, aby umożliwić edycję tych plikówdla istniejącego użytkownika lub
dla nowo utworzonego
źródło