Cách làm cho Apache chạy như người dùng hiện tại


44

Tôi nghĩ đối với một cỗ máy phát triển, việc chạy Apache như người dùng hiện tại để đơn giản hóa vấn đề quyền có thuận tiện hơn không? Làm thế nào để làm điều đó? Tôi nghĩ suexec của nó nhưng làm cách nào để định cấu hình nó trong Ubuntu + Apache?

Câu trả lời:


28

Bản thân tôi sẽ thêm người dùng vào www-datanhóm bằng ...

sudo adduser {username} www-data

Đơn giản và hiệu quả. Không làm phiền với tập tin cấu hình hoặc quyền.


6
Tôi đã làm điều đó mọi lúc, nhưng điều này sẽ không khắc phục một số vấn đề bị từ chối cấp phép, vì quyền của nhóm không giống với quyền của người dùng đối với tất cả các tệp.
Kostanos

1
Điều này sẽ không khắc phục nếu CHMOD không cho phép nhóm viết.
GusDeCooL

Vấn đề đối với tôi là tôi đã cài đặt cục bộ. Khi tôi tạo tệp bằng IDE của mình, họ có 'người dùng / nhóm' của tôi và đôi khi apache không thể đọc được các tệp đó
Postadelmaga

điều này một mình không giải quyết được nhiều vấn đề về quyền vì nhóm chính của bạn thường không phải là dữ liệu www và một số ứng dụng php yêu cầu quyền ghi nhóm. (j Joomla, wordpress)
Eric

2
Điều này không giải quyết được vấn đề khi bạn tạo tệp và dữ liệu www không thể xóa / chỉnh sửa chúng vì nhóm chính của bạn không phải là dữ liệu www
billy

56

Chỉnh sửa tệp sau dưới dạng root: / etc / apache2 / envvars

sử dụng lệnh:

sudo nano /etc/apache2/envvars

thay đổi người dùng và nhóm thành chính mình nếu chỉ có một người dùng và bạn sẽ không bao giờ gặp vấn đề về quyền nữa.

IE, nếu bạn chỉ đăng nhập và chạy máy chủ với tư cách là người dùng 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Heck, đối với vấn đề đó bạn có thể thay đổi người dùng đó thành người dùng hiện tại Tôi chắc chắn bằng cách nào đó. Sau đó, cài đặt user_dir tất cả các bạn chỉ có web mà bạn có thể có toàn quyền kiểm soát (trừ khi bạn sửa đổi điều này).

Khởi động lại máy chủ (nếu không chắc chắn, chỉ cần khởi động lại hoặc goole) và bạn đã sẵn sàng để đi.


3
Điều này hoạt động như một nét duyên dáng! cảm ơn bạn. duy nhất tôi sẽ thêm:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos

3
Cũng có thể bạn sẽ cầnsudo chown big_dog.big_dog -R /var/log/apache2
Kostanos

Trên OpenSUSE-Tumbleweed (và có thể trên một số khác), tệp có tại/etc/apache2/uid.conf
Dilawar

Bạn không nhất thiết phải thay đổi tệp envvars, tôi chỉ cập nhật các biến môi trường trước khi bắt đầu Apache với một tập lệnh. Bằng cách này, bạn không bị khóa với một người dùng duy nhất nhưng ai từng chạy tập lệnh, chạy apache. Tôi đã từng export APACHE_RUN_USER=#$(id -u)cung cấp id người dùng và sử dụng tương tự id -gcho nhóm trong tập lệnh và cuối cùng tôi đã gọi apache để chạy.
inblueswithu

1

tại sao bạn lại làm điều này ,, tôi đã phải vật lộn với vấn đề perm đó trong quá khứ, nhưng đây là quá trình phát triển của tôi từ hôm nay:

  • cài đặt hộp linux mới (ảo hoặc cục bộ như máy tính xách tay)
  • chạy sudo apt-get install lamp-server^Proc tiêu chuẩn để có được đèn lên
  • tạo liên kết sym đến thư mục nhà của tôi nơi các dự án giống như thế này:

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

  • tạo liên kết sym đến tập tin cấu hình máy chủ

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

đó là nó :)

Nó hoạt động như mong muốn, không có vấn đề với perm người dùng hoặc một cái gì đó tương tự với máy chủ apache ,, đối với mysql tôi có quá trình dài hơn một chút ..

hth, chúc mừng


Điều đó không giải quyết bất kỳ vấn đề cấp phép nào được giải quyết trong hầu hết các câu trả lời khác.
HörmannHH

0

Sidestepping vấn đề "bạn nên làm điều này", bạn có thể tìm thấy nơi người dùng cho apache được thiết lập bằng cách chạy:

grep www- /etc/apache2/apache2.conf

Sau đó, đây là trường hợp chỉnh sửa các cá thể đó /etc/apache2/apache2.confvà tải lại Apache ( sudo /etc/init.d/apache2 reload).


apache2.confkhông chứa www-cho tôi
Jiew Meng

Tôi có cảm giác bạn có ý gì đó như thế grep -HR "www-" /etc/apache2/. Nếu bạn đã biết nó trong apache2.conf thì chỉ cần chỉnh sửa tệp đó. Trong trường hợp của tôi, nó không có ở đó, nhưng trong / etc / apache2 / envvars như câu trả lời của Eric chỉ ra.
Mike

Đó là bởi vì apache.conftìm kiếm ${APACHE_RUN_USER}${APACHE_RUN_GROUP}. Không www-datatrực tiếp.
Yahya Uddin

0

tạo một nhóm người dùng mới webdevvà thêm www-datangười dùng vào đó.

sudo addgroup webdev
sudo adduser www-data webdev

Sau đó hãy tiếp tục và thêm người dùng của bạn vào nhóm đó và biến nó thành nhóm mặc định cho người dùng khác.

sudo adduser {your-user} webdev
sudo addgroup webdev

Điều cuối cùng cần làm là đảm bảo, webdev nhóm có quyền rwx trên các tệp

sudo chmod 775 -R /path/to/project

Bây giờ, điều duy nhất có thể xảy ra là ví dụ như dữ liệu www tạo một tệp nhật ký mới và bạn không thể rwx nó.


1
Lợi thế của việc này là gì, ngoài việc thêm người dùng của riêng tôi vào www-datanhóm, đặc biệt vì chúng ta đang nói về một môi trường phát triển?
Dan

tốt nếu bạn làm theo cách này và đặt 775 quyền thành ví dụ: public_html hoặc / var / www, bạn sẽ không gặp vấn đề với các quyền trên máy dev của mình. các lời xin lỗi khác, để lại cho bạn các bước bổ sung để làm hoặc không hiệu quả như tôi sẽ không làm như vậy. Vì vậy, theo tôi, đây là cách tốt nhất để xử lý nó trên máy dev. Đối với các máy chủ sản xuất, tôi sẽ giới thiệu một thiết lập khác. Ngoài ra với aproach này, bạn có thể thêm người dùng dễ dàng.
Thomas Venturini
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.