Làm thế nào để chúng ta biết rằng một thư mục là apache có thể ghi?


21

Tôi đã được thông báo rằng tôi nên tạo một thư mục hình ảnh và một thư mục tài sản, và tôi cần phải đảm bảo rằng: "chúng có thể ghi được apache". Tôi cũng được yêu cầu làm cho thư mục ứng dụng / thời gian chạy có thể ghi thành web. Đây có phải là giống như apache ghi? Nếu vậy:

Làm thế nào tôi có thể làm điều đó ngay lập tức, hoặc biết điều đó?

Làm một việc ls -ltôi đang nhận được một cái gì đó như:

drwxr-xr-x 13 user user 4096 2011-08-26 10:23 app
drwxr-xr-x 4 user user 4096 2011-08-26 10:23 runtime
drwxr-xr-x 2 user user 4096 2011-08-26 11:11 images
drwxr-xr-x 2 user user 4096 2011-08-26 11:12 assets

Câu trả lời:


24

Apache, là một chương trình đang chạy trong nền. Apache ban đầu được bắt đầu bởi người dùng root(còn được gọi là root-process). Điều này root-processkhởi chạy một số quy trình con xử lý các yêu cầu của máy khách. Vì lý do bảo mật, các tiến trình con không phải do người dùng điều hành rootmà là người dùng với các đặc quyền tối thiểu. Thông thường người dùng này được đặt tên apachehoặc www-data.

Để tìm hiểu xem người dùng này dùng gì cho apache v1:

ps -ef | grep httpd | grep -v grep

hoặc cho apache v2:

ps -ef | grep apache | grep -v grep

Kết quả cho apache 2 sẽ giống như thế này:

root 5001 1 0 07:21? 00:00:00 / usr / sbin / apache2 -k bắt đầu
dữ liệu www 5021 5001 0 07:21? 00:00:00 / usr / sbin / apache2 -k bắt đầu
dữ liệu www 5022 5001 0 07:21? 00:00:00 / usr / sbin / apache2 -k bắt đầu
dữ liệu www 5023 5001 0 07:21? 00:00:00 / usr / sbin / apache2 -k bắt đầu

Trong trường hợp này, người dùng / nhóm là www-data

Vì vậy, để làm cho một thư mục có thể ghi được bởi máy chủ web, chúng ta phải đặt chủ sở hữu hoặc nhóm của thư mục thành chủ sở hữu hoặc nhóm của Apache và cho phép ghi cho nó. Thông thường, chúng tôi đặt thư mục thuộc về nhóm Apache ( apachehoặc `dữ liệu www hoặc bất kỳ người dùng nào được sử dụng để khởi chạy các tiến trình con) và cho phép quyền ghi cho nhóm.

chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir

( www-datalà tên bạn tìm thấy với pslệnh trên).

Về:

2) Tôi cũng được yêu cầu làm cho thư mục ứng dụng / thời gian chạy có thể ghi thành web. Đây có phải là giống như apache ghi?

Đúng, đây là một thư mục bạn cần để ghi vào nhóm mà Apache mong đợi. Có lẽ đây sẽ là một nơi nào đó trong /var/www/hoặc nó được đặt làm máy chủ ảo trong /etc/apache2/sites-enabled/và / hoặc/etc/apache2/sites-available


Cảm ơn rất nhiều. Có cách nào để tạo thư mục với mkdir và đồng thời, cung cấp các quyền đó không?
MEM

Có đúng là chúng ta cũng có thể làm: chmod -R o + w / hoặc / path / ở đây không? (tùy chọn -R là rõ ràng). ?
MEM

Có 1 phương pháp sẽ là:mkdir dirname && chgrp www-data dirname
Rinzwind

@MEM vâng. Rsẽ làm tất cả các thư mục từ nơi bạn ban hành lệnh. Có rất nhiều cách để làm điều này;)
Rinzwind

2
ps -ef | grep [a]pachelà một thành ngữ phổ biến để tránh grepdòng giả trong đầu ra.
enzotib
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.