Quản trị viên máy chủ của tôi muốn tôi đặt quyền ghi công khai trên một thư mục


9

Tôi còn khá mới đối với phát triển web, vì vậy hãy kiên nhẫn.

Tôi chủ yếu là một nhà phát triển iPhone, nhưng gần đây đã thực hiện một trang web cho người khác sử dụng lưu trữ được chia sẻ. Tôi có thể viết vào các tệp trong PHP trên trang web đó mà không phải suy nghĩ về các quyền.

Tôi đang trong quá trình triển khai một dịch vụ web cho một ứng dụng mới mà tôi đang thực hiện, nhưng nó không thực sự suôn sẻ. Sự khác biệt quan trọng nhất ở đây là tôi đang sử dụng máy chủ của người khác và chỉ cần có quyền truy cập FTP / DB.

Về cơ bản, tôi có một tải các tệp PHP tạo nên CMS của tôi, như vậy:

mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php

Những tập lệnh này sau đó chỉnh sửa cơ sở dữ liệu hoặc tập tin. Chúng có thể tương tác với DB tốt, tuy nhiên, tập lệnh của tôi không thể ghi vào hệ thống tập tin. Ví dụ, họ có thể cố gắng ghi vào các tệp sau:

mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt

Điều này hoạt động tốt trên cài đặt MAMP của tôi (cục bộ), nhưng một khi được triển khai đến máy chủ, PHP đã phát sinh lỗi mỗi khi một lần ghi được thử ... đại loại như thế này:

Không thể mở tệp "../data/img/someimage.png" để viết.

Vì vậy, tôi đã gửi email cho anh chàng đang điều hành máy chủ và anh ta quay lại nói:

Nó hoạt động với sự cho phép của công chúng? (777)

Và, nó đã làm - nhưng tôi rất thận trọng với việc sử dụng các quyền công khai, vì vậy đã vô hiệu hóa nó ngay lập tức. Tôi đã gửi email cho anh ấy nói rằng "làm thế nào tôi có thể viết các tập lệnh PHP của mình bằng cách sử dụng các quyền của người dùng chuẩn" và anh ấy nói:

Để nó ở chế độ công khai, nó sẽ ổn thôi

Tôi cho rằng đó là xung đột ip ở đâu đó trong độ phân giải tên miền, nhưng tôi không lo lắng về điều đó.

Sau đó tôi đã gửi email cho anh ấy nói rằng "chắc chắn điều này là không an toàn" hoặc một cái gì đó dọc theo những dòng đó, và anh ấy đã trả lời như sau:

thực tế là có hàng triệu trang web, bao gồm một số trang web mà tôi quản lý có 777 trên các thư mục khác nhau, đó chỉ là một cách sống.

Bất cứ ai có thể cho tôi một số ý tưởng về một giải pháp tôi có thể cung cấp cho anh ta? Hoặc những gì tôi có thể làm để tránh phải sử dụng 777? Tôi thực sự không thích ý tưởng về bất kỳ thư mục nào trên trang web / dịch vụ của mình sẽ được ghi công khai.

Tôi rất đánh giá cao lời khuyên của bạn vì tôi biết rất ít về máy chủ web.


12
Chạy khỏi anh chàng này và đừng nhìn lại.
dùng9517

Không thực sự là một lựa chọn ... xem các bình luận về câu trả lời của SvenW ...
Alex Coplan

Câu trả lời:


13

Hãy phá vỡ nó :

Bạn cần người dùng chạy tập lệnh để đọc, thực thi và ghi trên thư mục, vì vậy nó phải là:

7 = (r) ead, (w) nghi thức, e (x) ecute

Những người dùng khác thuộc cùng một nhóm sẽ có thể thực thi tệp php trong thư mục, nhưng không ghi vào đó (vì lý do rõ ràng); họ không nhất thiết phải đọc các tệp PHP. Do đó, chúng tôi cần cung cấp quyền thực thi:

1 = e (x)

Tương tự cho công chúng. Trên thực tế, đó là tất cả những gì bạn cần cho người dùng bên ngoài, những người cần xem tập tin php và tĩnh:

1 = e (x)

Vì vậy, mức tối thiểu phải là:

711

Tôi đã xác nhận các cài đặt ở trên với cấu hình của riêng tôi, vì vậy nó sẽ hoạt động; tuy nhiên, đây là theo người dùng web mặc định. Nếu bạn đang tải lên bằng một thông tin đăng nhập khác ngoài www, các tệp và thư mục có thể nằm dưới một người dùng khác. Trong trường hợp đó, người dùng web mặc định có thể không thể đọc hoặc ghi các tệp thuộc sở hữu của bạn. Tại thời điểm đó, có lẽ bạn cần thêm người dùng web mặc định vào nhóm của mình (sysadmin sẽ phải làm điều đó) và sau đó cấp quyền đọc, viết và thực thi cho người dùng thuộc nhóm:

771

Và điều đó có thể sẽ làm việc. Dù vậy, hoặc có sysadmin thay đổi quyền sở hữu nhóm và người dùng của các tệp đó thành người dùng máy chủ web mặc định (nhưng KHÔNG PHẢI LÀ GIẤY PHÉP!). Nếu điều đó vẫn không hoạt động, một đầu ra mẫu của các quyền (một cái gì đó như "ls -la trong thư mục") sẽ giúp chúng tôi khắc phục sự cố này thêm nữa. Điều đó nói, miễn là bạn chỉ phải cấp quyền thực thi cho công chúng ( hoặc "khác"), bạn sẽ ổn từ quan điểm bảo mật.


2
Ước gì tôi có thể upvote hai lần.
Wesley

Vấn đề thực sự là trang web không nên ghi vào các tệp trong cấu trúc của chính nó chứ không phải là các quyền.
JamesRyan

Bạn đúng. Tùy thuộc vào dữ liệu, bạn có thể muốn ghi vào một tệp bên ngoài webroot công khai.
Rilindo

Ở đây tôi đang viết vào một /datathư mục - thư mục này chứa các tập lệnh PHP tạo nên dịch vụ web JSON của tôi và một loạt các hình ảnh được sử dụng cho nội dung được truyền trong dịch vụ web (trong một /data/imgthư mục)
Alex Coplan

Vì vậy, những hình ảnh cần phải được công khai, sau đó? Điều đó làm rõ.
Rilindo

18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

Anh chàng này là một thằng ngốc và điều này là hoàn toàn vô nghĩa. Quyền truy cập không liên quan gì đến địa chỉ IP hoặc độ phân giải tên miền, anh ta chỉ bỏ qua các từ.

Với chất lượng của "quản trị viên" này, tôi khuyên bạn nên lưu trữ trang web của mình ở nơi khác vì rất có thể trang web được quản lý rất kém và không an toàn. Chỉ cần đặt 777quyền vào một cái gì đó để nó hoạt động là một dấu hiệu chắc chắn anh ta không hiểu một chút về những gì anh ta đang làm.

Quyền truy cập nào thực sự cần thiết phụ thuộc vào cách sử dụng và cấu hình hệ thống và thật khó để nói với bạn điều gì đó mà không biết điều này.


cảm ơn - suy nghĩ của tôi chính xác về các quyền - Tôi thực sự không có tùy chọn để lưu trữ nó ở nơi khác vì công ty tôi đang phát triển sẽ không trả tiền cho nó, và đề nghị tôi anh chàng này và nói rằng họ sẽ đưa anh ta đến làm điều đó miễn phí - từ những gì tôi có thể nói tôi đang chạy khỏi một trong những máy chủ ảo của anh ấy. Vậy làm thế nào để nó hoạt động bình thường, làm thế nào một đoạn mã PHP có thể chạy như một "người dùng" và do đó có thể ghi vào bất cứ thứ gì trên trang web?
Alex Coplan

Chà, tôi sẽ thông báo cho họ về những gì họ nhận được "miễn phí". Tôi chưa có nhiều kinh nghiệm với bất kỳ dịch vụ lưu trữ chia sẻ nào, vì vậy tôi không thể nhận xét về điều đó. Tất cả các trang web của tôi đều chạy các máy chủ và thư mục web Debian cần ghi được sẽ được sở hữu bởi www-datacác 700quyền, nhưng điều này có thể sẽ không hoạt động trong trường hợp của bạn.
Sven

Tôi nghĩ rằng họ cũng đang trả tiền cho anh ta cho trang web chính của họ vì vậy đó là lý do - nếu có bất kỳ trợ giúp nào ở dưới cùng của bất kỳ trang lỗi máy chủ nào thì nó nói điều nàyApache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan

Ngoài ra, đây là vps không được chia sẻ
Alex Coplan

2
Chà, tôi cố gắng tìm ra những quyền nào và quyền sở hữu các tệp của bạn có thể được chuyển đến máy chủ. Nếu đó là người dùng không phải là thành viên của www-datanhóm, bạn cần thay đổi người dùng / nhóm sau khi chuyển hoặc thực sự sử dụng 777quyền. Nhưng điều này là vô nghĩa, chúng tôi không thể giúp bạn theo cách này.
Sven
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.