Giải quyết vấn đề FTP sau khi cài đặt OpenLiteSpeed

Đây là bài thứ ba mình viết về phần mềm này. Hai bài trước đó mình đã chỉ cách cài đặt OpenLiteSpeed cùng với phiên bản PHP riêng, rồi sau đó là cài đặt virtual host và listener.

Sau khi thực hiện theo hai bài hướng dẫn đó, mọi người đã có thể đăng mã nguồn lên và chạy được rồi. Nhưng đối với một số mã nguồn phức tạp như WordPress chẳng hạn (có giao diện upload file hay giao diện cài đặt bổ sung từ bên ngoài), thì có một số lỗi liên quan đến phân quyền có thể phát sinh, khiến quá trình upload, cài đặt, cập nhật, v.v… qua giao diện của mã nguồn đó bị dừng lại. Ngoài ra, việc điều chỉnh lại user và group cho thư mục document root là nobodynogroup sẽ khiến cho việc upload file qua giao thức FTP trở nên khó khăn nếu không sử dụng quyền của user root (hay chạy lệnh kèm sudo).

Vì thế mình viết bài này để giúp các bạn giải quyết toàn bộ các vấn đề đó mà không cần phải cài đặt thêm File Manager chạy trên nền web.

Giả sử server đang sử dụng hệ điều hành Ubuntu. Hướng dẫn sau đây vừa giúp các bạn giải quyết được vấn đề, vừa đảm bảo an toàn cho các file hệ thống.

Trước tiên, các bạn kết nối đến server qua cổng SSH để chạy một số lệnh cần thiết. Tại giao diện dòng lệnh, các bạn sử dụng lệnh sau để tạm thời sử dụng quyền của user root, để các lệnh tiếp theo không cần phải sử dụng kèm sudo:

sudo su

Tiếp theo, các bạn tạo một group mới là www:

groupadd www

Chúng ta sẽ chuyển quyền cho group này đối với các thư mục document root cùng với các file và thư mục bên trong.

Sau đó chúng ta đưa hai user ubuntunobody vào group www mới tạo.

usermod -aG www ubuntu
usermod -aG www nobody

Trong đó, ubuntu là user được tạo lúc cài đặt Ubuntu theo bài mình viết. Chúng ta luôn đăng nhập vào server dưới user này, và chạy trực tiếp các lệnh và upload file lên server.

Vì các bạn đã tự thêm chính user hiện thời vào group mới, nên các bạn cần chạy lệnh exit hai lần (lần 1 – thoát quyền root, lần 2 – thoát khỏi server), để user ubuntu được cập nhật tại group mới.

Tiếp theo các bạn kết nối lại, rồi chạy lệnh groups để kiểm tra xem user ubuntu nằm trong những group nào. Nếu trong kết quả có tên group www thì tốt rồi đấy.

Tiếp theo, lại tạm thời sử dụng quyền root:

sudo su

Bắt đầu từ đây mình sẽ liên hệ với ví dụ ở bài thứ hai nhé. Các bạn thay $VH_NAME bằng tên của virtual host.

Các bạn chuyển đến thư mục document root của virtual host các bạn muốn điều chỉnh.

cd /var/www/$VH_NAME

Tiếp theo các bạn chuyển quyền sở hữu thư mục $VH_NAME cùng với toàn bộ các file và thư mục bên trong, cho user nobody và group www:

chown -R nobody:www /var/www/$VH_NAME

Tiếp theo các bạn bổ sung quyền đọc ghi và quyền thực thi cho user và group, tại chính thư mục document root và tất cả các thứ bên trong. Việc này áp dụng cho cả những thư mục và file sau này được đưa vào document root.

chmod 2775 /var/www/$VH_NAME
find /var/www/$VH_NAME -type d -exec chmod 2775 {} \;
find /var/www/$VH_NAME -type f -exec chmod 0664 {} \;

OK. Các bạn đã thực thi các lệnh trên dưới quyền root rồi. Bây giờ thì thoát quyền root thôi.

exit

Giờ các bạn thử upload file và thư mục vào document root mà không sử dụng quyền root xem. Nếu trong quá trình thực hiện các bước trên mà không có lỗi lầm gì, thì đến đây chắc chắn các bạn upload được và sửa được các file một cách bình thường.

Nếu đến đây mọi thứ đều ngon lành, thì các bạn thực thi lệnh exit một lần nữa để thoát khỏi server, và chuyển sang việc gán user nobody và group www ở phía phần mềm server.

Giả sử các bạn đang sử dụng mã nguồn PHP (WordPress chẳng hạn) và đã cài đặt riêng LSPHP cho OpenLiteSpeed, các bạn chỉ cần gán user và group mới cho chính LSPHP mà thôi.

Các bạn mở trình duyệt và đăng nhập vào trang admin của OpenLiteSpeed. Ấn chọn mục Server Configuration ở cột trái. Ở phần bên phải, các bạn ấn mở tab External App.

Chọn LSPHP trong danh sách

Tại tab này, trong bảng External Applications, các bạn tìm dòng tương ứng với chương trình LSPHP, rồi ấn nút Edit (được khoanh tròn) ở cuối dòng để sửa thiết lập cho LSPHP. Phần tiếp theo sẽ rất dài như sau, trong đó các bạn hãy chú ý hai dòng được khoanh đỏ.

Thay đổi thiết lập LSPHP

Hai dòng được khoanh đỏ ở trên, suEXEC UsersuEXEC Group, lần lượt chính là user và group sẽ chạy LSPHP, để từ đó LSPHP có thể tác động vào các file và thư mục được giao cho user và group đó. Như vậy, các bạn sẽ điền vào hai dòng đó như sau:

  • suEXEC User: nobody
  • suEXEC Group: www

OK. Các bạn trở về đầu trang, ấn nút Save có hình cái đĩa mềm ở tiêu đề của cái bảng. Giờ thì các bạn đã hoàn thành xong việc gán, nên các bạn khởi động lại OpenLiteSpeed để các thay đổi được áp dụng, rồi thoát khỏi trang admin.

Giờ các bạn hãy mở WordPress và thử upload một tấm ảnh, cập nhật một theme hay plugin nào đó xem. Nếu mọi chuyện trơn tru thì thật tuyệt vời, các bạn đã giải quyết xong!

Hi vọng các bạn đã hết phiền toái trong chuyện FTP cũng như lỗi quyền này nọ đối với OpenLiteSpeed rồi. Các bạn có thể làm theo các hướng dẫn của mình về cài đặt SSL cũng như rewrite trong OpenLiteSpeed!