Đầ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/myuser
khô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à s
cờ nhóm sẽ đảm bảo rằng bất kỳ tệp nào được tạo trong thư mục đó sẽ www-data
là nhóm - vì vậy nếu bạn tạo tệp myuser
thì www-data
người dùng sẽ có quyền truy cập.
Nb. điều này cũng phụ thuộc vào umask
cà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ó rw
quyề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/myuser
thư 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:
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.)
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
s
trongg+rwxs
?