Làm thế nào để cấp quyền đọc ghi cho một thư mục và các thư mục và tệp phụ của nó?


10

Tôi đã thay đổi quyền sở hữu tệp localhost của mình trên /var/www/và các thư mục con của nó và cho phép nó 777. Tuy nhiên, bất cứ khi nào tôi thêm một thư mục mới vào đó, thư mục mới sẽ không tự động nhận được quyền đó. Làm cách nào tôi có thể cấp quyền thư mục 777 mãi mãi để nếu tôi thêm thư mục hoặc tệp mới, nó sẽ có cùng quyền?


4
Vui lòng đọc lý do
Marco Ceppi

777 là một ý tưởng tồi . Nhưng sử dụng ACL có thể rất phù hợp. Bạn có vui lòng đọc giải pháp này trên ACL để xem nó có hoạt động tốt với bạn không?

1
Liên quan, để chmod tất cả các thư mục bạn có thể sử dụng find . -type d -exec chmod 777 {} +để thay đổi tất cả các thư mục thành 777. Hãy nhớ rằng, bạn phải đăng nhập với quyền root để có kết quả tốt hơn và đảm bảo rằng bạn đang ở trong thư mục.
Redy S

Câu trả lời:


1

Quyền cho các tệp mới được tạo bằng umask


Bạn có thể viết lệnh để tạo / var / www / writable và cho phép nó sao cho tôi có được quyền tương tự (777) cho trang web mà tôi mới thêm vào gần đây không.
kamal

1
Cho phép 777 cho máy chủ web của bạn là không tốt.
saji89

Bạn có thể vui lòng thêm chi tiết.
saji89

@ Vojtech Trefny. Liên kết hiện không hoạt động. Nó nói 404 Không tìm thấy.
all4naija

12

Bạn có thể sử dụng tùy chọn đệ quy bất cứ lúc nào. sudo chown -R username /var/www


Bạn cần thêm upvote!
Sheharyar

10

Như những người khác đã đề cập , cung cấp cho 777 quyền trên /var/wwwlà một ý tưởng thực sự tồi tệ, đặc biệt là trong sản xuất.

Một giải pháp tốt hơn là chỉ cấp quyền ghi cho người dùng cần sửa đổi các tệp. Một trong những cách để làm điều đó là:

  • tạo một nhóm mới

  • thêm người dùng cần sửa đổi dữ liệu vào /var/wwwnhóm đó

  • thay đổi đệ quy quyền sở hữu của /var/wwwnhóm đó

  • thiết lập umasktrên /var/wwwfile vì vậy tất cả mới được tạo ra đều thuộc sở hữu của tập đoàn chúng tôi đã tạo.

Một tùy chọn khác là sử dụng ACL, một lần nữa, để chỉ cấp quyền ghi cho người dùng cần chúng.

Dưới đây là hướng dẫn chi tiết về serverfault .

Nói chung, máy chủ web hoặc các dịch vụ mạng hoặc tài khoản người dùng hệ thống khác sẽ không có quyền ghi vào các tệp được cung cấp bởi máy chủ web, vì điều này mở ra khả năng thực thi mã tùy ý.


2

Bạn nên chỉnh sửa /etc/apache/envvarsvới quyền root với trình soạn thảo bạn chọn.

Ví dụ: ALT+F2
gksudo gedit /etc/apache2/envvars

Đi đến cuối tập tin và thêm một dòng umask XXX.

Trong đó umask là đối diện nhị phân của giá trị quyền mong muốn.
Đối với 774, đây sẽ là 003. Đối với ý tưởng tồi 777, nó sẽ là 000.

Tiết kiệm.

Khởi động lại apache.

Thí dụ: sudo apache2ctl restart

Điều này sẽ chỉ ảnh hưởng đến các tệp / thư mục mới được tạo bởi người dùng apache.

Ghi chú bổ sung, đọc và viết là 6 trong khe người dùng, nhóm hoặc bất kỳ ai.


0

Ngoài ra, một số giải pháp "ngoài luồng" là định cấu hình máy chủ http của bạn để sử dụng thư mục khác. Nếu bạn sử dụng Apache, chỉ cần chỉnh sửa tệp cấu hình. Bằng cách này, bạn không phải thay đổi quyền cho / var / www witch có thể là ý tưởng tồi (vấn đề bảo mật tiềm ẩn).

Và umask là câu trả lời cho câu hỏi của bạn. Nó có thể được sử dụng để hạn chế các đặc quyền mặc định cho các thư mục và tệp mới được tạo. Và các nhà phát triển phân phối có xu hướng sử dụng nó để hạn chế quyền truy cập vào một số thư mục hệ thống.


0

Tôi nghĩ rằng bạn muốn có quyền truy cập ghi /var/wwwđể sửa đổi các tập tin và thư mục. Tôi nghĩ giải pháp tốt nhất là cài đặt apache2-mpm-itkvà trong tệp cấu hình máy chủ ảo thêm /etc/apache2/sites-available/default:

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

và chạy chown your-username\: /var/www -Rvtheo cách này apache cho máy chủ ảo đó sẽ chạy với UID / GID của bạn và bạn sẽ có thể chỉnh sửa các tệp. Ngay cả các tệp được tạo bởi PHP cũng sẽ có UID / GID của bạn

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.