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?

Jiew Meng
źródło

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ń.

Rinzwind
źródło
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ąć.

Eric
źródło
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

Kresimir Pendic
źródło
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).

Oli
źródło
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ć.

Thomas Venturini
źródło
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