Cách tạo tài khoản SFTP để vào thư mục web trên Caddy Web Server

Tài khoản SFTP để đăng nhập vào thư mục website là một phần quan trọng giúp chúng ta quản trị web dễ dàng hơn, bài này tập trung vào thực hành tạo một tài khoản cho phép bạn làm điều đó.

1. Ở terminal với quyền root, bạn nhập lệnh dưới đây:

sudo adduser webmaster

Cái này sẽ thêm user có tên webmaster vào.

Nó sẽ yêu cầu bạn nhập mật khẩu 2 lần, đây là mật khẩu tùy chọn (chứ không phải mật khẩu của root). Nhập 2 lần để tránh nhầm, vì lúc bạn gõ nó không hiển thị ký tự nào ra ngoài để thấy cả.

Tiếp đến là các thông tin phụ như là Full Name, Phone,… Bạn Enter để bỏ qua không cần nhập.

2. Đặt biến cho tên miền:

DOMAIN="example.com"

Thay example.com bằng tên miền thực tế của bạn.

3. Đưa webmaster làm chủ file thư mục web:

sudo chown -R webmaster:www-data /var/www/$DOMAIN/public_html

4. Cấp quyền 775 & 664

Vì có thêm user mới nên cập nhật với lệnh dưới:

sudo find /var/www/$DOMAIN/public_html -type d -exec chmod 775 {} \; && sudo find /var/www/$DOMAIN/public_html -type f -exec chmod 664 {} \;

So với lệnh cũ 755 được chuyển thành 775, còn 644 được chuyển thành 664. Tức là cấp quyền cho user webmaster và nhóm www-data các quyền tương đương nhau, phải làm vậy để www-data (vai trò xử lý các tác vụ của web vẫn hoạt động bình thường, lưu ý là user www-data đã mất quyền vào tay user webmaster, và nhóm www-data được cấp thêm quyền để thay thế user www-data, phân quyền trong Linux phải nói rối như canh hẹ!)

5. Điều chỉnh để các file mới up lên thông qua SFTP thì người dùng www-data cũng có quyền chỉnh sửa

sudo chmod -R g+s /var/www/$DOMAIN/public_html

6. Gán webmaster vào nhóm www-data

sudo usermod -aG www-data webmaster

7. Chỉnh file wp-config.php

Thêm dòng dưới đây ngay dưới <?php

define('FS_METHOD', 'direct');

Nó sẽ ngăn tình trạng khi chúng ta cài plugin trên WordPress mà nó lại yêu cầu tài khoản FTP (cái này là do phân quyền trong Linux, chúng ta vừa chuyển quyền sở hữu web cho webmaster, và mặc dù chúng ta phân cho nhóm www-data (mà khi cài plugin ta sẽ dùng nhóm này) quyền số 7 (đọc, ghi, chạy) nhưng nó vẫn không làm gì được!). Đưa câu lệnh trên vào sẽ kết thúc vấn đề khó chịu đó.


Giờ bạn có thể đăng nhập SFTP qua phần mềm như FileZilla:

  • Host: IP của VPS;
  • Username: webmaster;
  • Password: mật khẩu mà bạn nhập ban nãy;
  • Port (cổng): 22

Khi đăng nhập vào, bạn sẽ được đưa tới thư mục webmaster nằm trong thư mục home, bạn phải lên cấp thư mục để thấy thư mục var, vào đó rồi vào thư mục www, từ đó bạn sẽ thấy các website đang cài trên webserver. [Cấu trúc này var > www > domain là do cách chúng ta tạo trang WordPress trên Caddy].

Nếu muốn truy cập nhanh, có thể dùng lệnh sau để tạo shortcut, lệnh này sẽ tạo shortcut tên example trong thư mục webmaster để bạn truy cập luôn mà không cần phải lên thư mục và tìm var:

ln -s /var/www/example.com/public_html /home/webmaster/example

Thay example.comexample tương ứng với tên miền của bạn.


Hai điểm cần lưu ý:

  • webmaster đăng nhập SFTP sẽ vào được tất cả các thư mục web cài trên Caddy web server
  • Sau khi chúng ta đã tạo webmaster, và mỗi lần thêm website mới, chúng ta sẽ phải phân quyền lại cho nó (webmaster) bằng cách chạy lại lệnh:
sudo chown -R webmaster:www-data /var/www/$DOMAIN/public_html && sudo find /var/www/$DOMAIN/public_html -type d -exec chmod 775 {} \; && sudo find /var/www/$DOMAIN/public_html -type f -exec chmod 664 {} \;

Nếu không thêm website mới thì không cần chạy lại lệnh!

Viết một bình luận