Điểm:0

người dùng dữ liệu www không thể mở tệp để ghi bằng php

lá cờ bj

Tôi có một máy chủ apache đang chạy dưới dạng dữ liệu www trên Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-97-chung x86_64) Trong tệp php, dòng sau không thành công do lỗi: Quyền bị từ chối

$f=fopen("detekst.txt","a+");

Nhìn vào các quyền:

la -al detekst.txt
-rw-rw-r-- 1 L146584 leerlingen 1364 ngày 15 tháng 2 15:12 detekst.txt

và kiểm tra các nhóm

nhóm dữ liệu www 
dữ liệu www : dữ liệu www leerlingen

Tôi cũng đã xác minh bằng exec('whoami'); dữ liệu www đó chạy php.

Sử dụng trình soạn thảo văn bản, một thành viên khác của leerlingen có thể mở tệp để viết.

Vì vậy, tôi thực sự bối rối, tại sao dữ liệu www là thành viên của leerlingen không thể mở tệp?

Nếu tôi thay đổi quyền của detekst.txt thành 0666:

-rw-rw-rw- 1 L146584 leerlingen 1364 ngày 15 tháng 2 15:12 detekst.txt

mã php chạy tốt!!

Ngoài ra, khi quay lại quyền của tệp 664 và thay đổi nhóm thành dữ liệu www, tất cả đều hoạt động tốt.

-rw-rw-r-- 1 L146584 dữ liệu www 1478 ngày 15 tháng 2 15:45 detekst.txt

Tôi làm gì sai ở đây?

Điểm:0
lá cờ ru

Quyền sở hữu nhóm của bạn đối với tệp được đề cập không phải là dữ liệu www khi bạn cố gắng sử dụng tệp lần đầu tiên, như vậy dữ liệu www người dùng và nhóm không có quyền ghi khi 644 hoặc 664 là các quyền trên tập tin. Nếu dữ liệu www không có quyền sở hữu của người dùng hoặc nhóm đối với tệp, nó thuộc danh mục "người khác" đối với các quyền, thuộc loại chỉ đọc (4 = quyền chỉ đọc trong ngôn ngữ chmod)

Khắc phục điều này là thay đổi quyền sở hữu nhóm như bạn đã thấy dữ liệu www và sau đó đảm bảo rằng các quyền được 664 ít nhất là vì điều đó thêm quyền ghi.

Ngoài ra, dữ liệu www được thêm vào một nhóm khác, sau đó bạn khởi động lại máy chủ của mình để đảm bảo rằng tất cả các dịch vụ đều được khởi động lại chính xác với các quyền mới. Trong Linux, các dịch vụ đã được bắt đầu và sẽ không kế thừa tư cách thành viên nhóm quyền mới cho đến khi các dịch vụ được khởi động lại hoàn toàn trong phiên mới của 'người dùng' đó, cho dù đó có phải là người dùng daemon hệ thống hay không. Vì vậy, khởi động lại sẽ giúp làm mới dữ liệu đó trong lần khởi động tiếp theo của máy chủ web.

John Val avatar
lá cờ bj
Cảm ơn Thomas, Nhưng dữ liệu www là thành viên của nhóm leerlingen, vậy tại sao dữ liệu www không có quyền sở hữu? Các thành viên khác của leerlingen có quyền ghi và tôi không muốn tất cả các thành viên của leerlingen trở thành thành viên của nhóm www-data
lá cờ ru
Bạn không nên đặt dữ liệu www vào bất kỳ nhóm nào khác ngoài dữ liệu www vì nếu không, nó sẽ được cấp quyền cho những thứ bạn có thể không muốn. Nếu bạn đã thêm dữ liệu www vào nhóm nhưng không khởi động lại máy chủ của mình để cho phép tất cả các dịch vụ khởi động lại với các bộ quyền mới, thì nó sẽ không có quyền truy cập.
John Val avatar
lá cờ bj
Bây giờ tôi đã giải quyết vấn đề bằng cách sử dụng acl, thêm dữ liệu www làm người dùng bổ sung vào tất cả các tệp trong cây thư mục.
lá cờ ru
@JohnVal ACL có hiệu lực ngay lập tức, vâng, nhưng thay cho ACL, chỉ cần khởi động lại dịch vụ của bạn bằng cách khởi động lại. Điều đó sẽ đảm bảo `www-data` kế thừa các quyền thích hợp mà nó được chỉ định.
John Val avatar
lá cờ bj
Cảm ơn một lần nữa Thomas, Có thể việc khởi động lại hoặc khởi động lại dịch vụ apache2 có thể đã giải quyết được sự cố, nhưng tôi đã không thử điều đó. Thư mục được chia sẻ bằng Samba và thậm chí việc tạo tệp mới cung cấp cho tôi thêm người dùng dữ liệu www bằng cách sử dụng acl. Vì vậy, tôi là một người hạnh phúc vào lúc này. Muốn bạn tốt,
John Val avatar
lá cờ bj
Thomas, tôi sẽ khởi động lại :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.