Làm cách nào để cung cấp cho người dùng dữ liệu www vào một thư mục trong thư mục nhà của tôi?


31

Tôi có một thư mục: /home/myuser/folderA

Tôi muốn cấp cho người dùng dữ liệu www quyền truy cập ghi vào bên trên, trong khi 'myuser' tiếp tục có quyền truy cập bình thường (vì dù sao đó cũng là thư mục nhà của myuser).

Những lệnh nào tôi cần sử dụng?

Lưu ý: Tôi không muốn www-datacó quyền truy cập vào bất kỳ thư mục nào khác /home/myuser/.

Cảm ơn trước.

Câu trả lời:


46

Đầu tiên, thêm bạn vào nhóm www-data

usermod -a -G www-data (your username)

Sau đó:

chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA

Nên thực hiện thủ thuật trừ khi các quyền trên của bạn /home/myuserkhông cho phép người dùng khác truy cập.

Lệnh đầu tiên thay đổi quyền sở hữu nhóm của thư mục thành của máy chủ web. Lệnh thứ hai cho các thành viên củawww-data nhóm đọc, ghi, quyền vào thư mục và scờ nhóm sẽ đảm bảo rằng bất kỳ tệp nào được tạo trong thư mục đó sẽ www-datalà nhóm - vì vậy nếu bạn tạo tệp myuserthì www-datangười dùng sẽ có quyền truy cập.

Nb. điều này cũng phụ thuộc vào umaskcài đặt của cả tài khoản người dùng và máy chủ web của bạn: bạn cần đảm bảo rằng các tệp được tạo trong thư mụcA có rwquyền truy cập nhóm (và các thư mục được tạo trong nhóm cần rwx)

Nếu máy chủ web của bạn không có quyền nhập vào /home/myuserthư mục của bạn (khá hợp lý) thì nó sẽ không vào được trừ khi bạn làm việc khác. Hai xà đơn:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (đây là một hack xấu xí và sẽ phải được lặp lại sau khi khởi động lại. Nhưng một thủ thuật mạnh mẽ, cũng có thể được sử dụng để làm cho các thư mục có thể truy cập được trong các nhà tù SSH.)

  2. Chỉ cần di chuyển thư mục được chia sẻ ở nơi khác, ví dụ: /home/shared-stuff/folderA .

Tùy chọn thứ 2 là đẹp nhất. Giả sử nội dung trong thư mụcA thực sự công khai và bạn không quan tâm ai nhìn thấy nó, bạn có thể thiết lập nó như

sudo mkdir -m777 /home/shared-stuff

Sau đó, bạn có thể đặt bên trong đó, giả sử, thư mụcA có quyền như trên và thư mụcB mà dữ liệu www không nên có quyền truy cập với các quyền khác nhau, ví dụ:

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB

những gì là strong g+rwxs?
T.Todua

"Nhóm dính" bit. Đó là hiệu ứng được giải thích trong đoạn bắt đầu bằng "The First ..." :-)
artfulrobot

6

Một cách khác là thay đổi tên người dùng trực tiếp trong cấu hình apache, đây là nếu đó là máy cục bộ của bạn và bạn lưu hình ảnh từ một nơi khác sẽ phá vỡ mọi quyền được thực hiện trên thư mục. Ngoài ra, nếu bạn chỉ có 1 người dùng và không quan tâm đến dữ liệu www!

$ sudo vi /etc/apache2/apache2.conf

Tìm người dùng và nhóm và đặt của bạn
User <Your User>
Group <Your Group>

$ sudo service apache2 restart

Giải pháp này có vẻ không an toàn lắm, có ai biết loại mối đe dọa bảo mật nào mà cài đặt này sẽ gây ra không?
Fleuv

Tôi khá chắc chắn rằng nó không an toàn, đó là lý do tại sao tôi chỉ đưa ra độ chính xác của Local Machine.
Shadowbob

Giải pháp này cung cấp tất cả quyền truy cập vào apache vào thư mục của bạn ...
Loenix
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.