Jak uruchomić Apache jako bieżący użytkownik


44

Myślę, że w przypadku maszyny programistycznej wygodniej jest uruchomić Apache jako bieżącego użytkownika, aby uprościć problem z uprawnieniami? W jaki sposób mogę to zrobić? Myślę, że to suexec, ale jak skonfigurować go w Ubuntu + Apache?

Odpowiedzi:


28

Ja sam dodałbym użytkownika do www-datagrupy za pomocą ...

sudo adduser {username} www-data

Prosty i skuteczny. Bez bałaganu przy użyciu plików konfiguracyjnych lub uprawnień.


6
Robiłem to cały czas, ale to nie rozwiąże niektórych problemów z odmową uprawnień, ponieważ prawa grupy nie są takie same jak prawa użytkownika dla wszystkich plików.
Kostanos,

1
Nie naprawi to, jeśli CHMOD nie pozwoli grupie pisać.
GusDeCooL

problemem jest dla mnie to, że mam instalację lokalną. Kiedy tworzę pliki za pomocą mojego IDE, mają one mojego „użytkownika / grupę” i kiedyś apache nie jest w stanie odczytać tych plików
Postadelmaga,

samo to nie rozwiązuje wielu problemów związanych z uprawnieniami, ponieważ twoja podstawowa grupa zwykle nie jest danymi www, a niektóre aplikacje php wymagają grupowych uprawnień do zapisu. (joomla, wordpress)
Eric

2
To nie rozwiązuje problemu polegającego na tym, że tworzysz pliki, a dane www nie mogą ich usunąć / edytować, ponieważ twoja główna grupa nie jest danymi www
billy

56

Edytuj następujący plik jako root: / etc / apache2 / envvars

za pomocą polecenia:

sudo nano /etc/apache2/envvars

zmień użytkownika i grupę na siebie, jeśli jest tylko jeden użytkownik i nigdy więcej nie będziesz mieć problemów z uprawnieniami.

IE, jeśli logujesz się tylko i uruchamiasz serwer jako użytkownik „big_dog”:

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Cholera, jeśli chodzi o tę sprawę, możesz zmienić tego użytkownika na obecnego. Następnie zainstaluj katalog_użytkownika, który ma wszystkie strony internetowe, nad którymi możesz mieć pełną kontrolę (chyba że zmodyfikujesz to).

Uruchom ponownie serwer (jeśli nie jesteś pewien, po prostu uruchom ponownie lub uruchom goole) i możesz zacząć.


3
To działa jak urok! Dziękuję Ci. jedyne, co chciałbym dodać:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos,

3
Prawdopodobnie będziesz także potrzebowaćsudo chown big_dog.big_dog -R /var/log/apache2
Kostanos,

Na OpenSUSE-Tumbleweed (i prawdopodobnie na niektórych innych) plik znajduje się w/etc/apache2/uid.conf
Dilawar

Nie musisz koniecznie zmieniać pliku envvars, właśnie zaktualizowałem zmienne środowiskowe przed uruchomieniem Apache za pomocą skryptu. W ten sposób nie jesteś zablokowany dla jednego użytkownika, ale kto kiedykolwiek uruchomi skrypt, uruchomi apache. W skrypcie export APACHE_RUN_USER=#$(id -u)dawałem identyfikator użytkownika i podobnie używałem go id -gdla grupy, a na końcu wezwałem apache do uruchomienia.
inblueswithu

1

dlaczego miałbyś to zrobić? W przeszłości borykałem się z tymi problemami z permem, ale oto mój proces twórczy od dziś:

  • zainstaluj nowy system Linux (wirtualny lub lokalny jak laptop)
  • uruchom standardowy sudo apt-get install lamp-server^proc, aby zapalić lampę
  • Utwórz link do mojego katalogu domowego, w którym projekty są takie:

    ln -s /home/user/html /var/www/html

  • uczyń sym link do pliku konfiguracyjnego hosts

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

Otóż ​​to :)

Działa zgodnie z oczekiwaniami, bez problemów z perm perms lub coś podobnego z serwerem Apache ,, dla mysql mam trochę dłuższy proces ..

hth, na zdrowie


To nie rozwiązuje żadnego z problemów związanych z uprawnieniami, rozwiązanych w większości innych odpowiedzi.
HörmannHH

0

Pomijając problem „powinieneś to zrobić”, możesz sprawdzić, gdzie jest ustawiony użytkownik apache, uruchamiając:

grep www- /etc/apache2/apache2.conf

Jest to wtedy przypadek edycji tych instancji /etc/apache2/apache2.confi przeładowania Apache ( sudo /etc/init.d/apache2 reload).


apache2.confnie zawiera www-dla mnie
Jiew Meng

Mam wrażenie, że miałeś na myśli coś takiego grep -HR "www-" /etc/apache2/. Jeśli już wiesz, że znajduje się w apache2.conf, po prostu edytuj ten plik. W moim przypadku nie było go, ale w / etc / apache2 / envvars, jak wskazuje odpowiedź Erica.
Mike

To dlatego, że apache.confszuka ${APACHE_RUN_USER}i ${APACHE_RUN_GROUP}. Nie www-databezpośrednio.
Yahya Uddin,

0

utwórz nową grupę użytkowników webdevi dodaj www-datado niej użytkownika.

sudo addgroup webdev
sudo adduser www-data webdev

Następnie dodaj użytkownika do tej grupy i ustaw ją jako domyślną dla swojego użytkownika.

sudo adduser {your-user} webdev
sudo addgroup webdev

Ostatnią rzeczą do zrobienia jest upewnienie się, że grupa webdev ma prawa do plików rwx

sudo chmod 775 -R /path/to/project

Teraz jedyną rzeczą, która może się zdarzyć, jest to, że np. Www-data tworzy nowy plik dziennika i nie można go wysłać.


1
Jaka jest z tego korzyść w porównaniu z dodawaniem własnego użytkownika do www-datagrupy, zwłaszcza, że ​​mówimy o środowisku programistycznym?
Dan

cóż, jeśli zrobisz to w ten sposób i ustawisz prawa 775 na np. public_html lub / var / www, nie będziesz mieć problemów z prawami na twoim urządzeniu deweloperskim. inne podejścia, zostawiają cię z dodatkowymi krokami do zrobienia lub nie są tak skuteczne, jak ja ich nie chcę. Więc moim zdaniem jest to najlepszy sposób radzenia sobie z tym na maszynie deweloperskiej. dla produktywnych serwerów polecam inną konfigurację. również dzięki temu podejściu możesz łatwo dodawać użytkowników.
Thomas Venturini
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.