Chào mọi người, trong bài viết này mình sẽ hướng dẫn cơ bản cho mọi người cách để phân quyền truy cập thư mục cho website trên Linux.
Lý do chính để chúng ta phân quyền là hạn chế việc truy cập không mong muốn vào các mã nguồn website khác có trên hệ thống ngoài thư mục nó được cho phép. Điều này không đảm bảo 100% là an toàn trước các mối đe doạ như cuộc tấn công vào WordPress (các Plugin, giao diện… chèn shell vào khắp source) mà sẽ hạn chế được phần nào khỏi các mã nguồn khác.
Các khái niệm

Có 2 khái niệm rất quan trọng cần phải nhớ trong Linux đó là permissions và ownership.
Ownership
Mỗi file hay thư mục trên Linux đều được gán bởi 3 loại chủ sở hữu là user, group, other (public).
User
Theo như mặc định trên Linux thì người tạo ra file hay thư mục nào đó thì sẽ trở thành chủ sở hữu của chính nó, giống như việc một người A tạo ra một vật B thì mặc định người A sẽ là chủ sở hữu của vật B.
Group
Một nhóm có thể chứa nhiều người dùng cùng một lúc. Tất cả người dùng trong một nhóm sẽ có cùng quyền truy cập vào file hay thư mục đó. Giả sử có một tài liệu học tập cho một lớp học mà bạn không muốn cho lớp khác biết, chỉ muốn chia sẻ trong lớp. Thay vì bạn cấp quyền cho từng người trong lớp thì bạn có thể gom tất những người trong lớp thành một nhóm người dùng và bạn gán quyền cho một nhóm người dùng đó để chỉ có những người trong nhóm đó mới có quyền truy cập vào tài liệu.
Other (public)
Other là bất kỳ người dùng nào không thuộc vào 2 đối tượng phía trên. Xét lại ví dụ trên, bạn không phải là thuộc nhóm lớp được truy cập vào tài liệu và bạn cũng không phải là người sở hữu tài liệu đó thì bạn được xét là other.
Bài toán đặt ra là làm sao để Linux phân biệt giữa ba loại người dùng này để người dùng A không ảnh hưởng đến một số file hay thư mục chứa thông tin hay dữ liệu của một người dùng B. Và đây chính là lúc permissions (quyền) được sử dụng để kiểm soát hình vi của người dùng.
Permissions

Mỗi một file hay thư mục trong Linux đều có 3 quyền đọc, ghi, thực thi được xác định cho 3 chủ sở hữu ở trên.
Đọc: Nếu là một file thì quyền này cho phép bạn mở file đó lên và đọc. Nếu là một thư mục thì nó cho phép bạn liệt kê danh sách file hay thư mục trong thư mục đó.
Ghi: Quyền ghi cho phép bạn sửa đổi nội dung của file. Nếu là thư mục thì nó cho phép bạn có thể thêm, xóa và đổi tên các file trong thư mục đó.
Thực thi: Với Windows bạn có thể chạy với một file có đuôi “.exe” một cách dễ dàng. Còn trong Linux bạn không thể chạy khi nó không được cấp quyền thực thi. Còn đối với thư mục thì bạn không thể truy cập (cd) nếu bạn không có quyền thực thi nó.
Thực hiện
Ở đây mình sẽ hướng dẫn trên máy chủ Linux và sử dụng Apache làm webserver. Đầu tiên chúng ta sẽ đăng nhập vào máy chủ Linux bằng tài khoản root và tiến hành tạo tài khoản con cho từng thư mục:
sudo useradd user1
ZshThay user1 bằng username bạn muốn, khi tạo user thì nó sẽ tự tạo cho chúng ta group có cùng tên với user.
Thêm user www-data (này là của apache2) vào group của user đã tạo (tên group = tên user):
sudo usermod -a -G group1,group2,… www-data
ZshMỗi nhóm cách nhau bởi dấu phẩy. Tiếp theo gán quyền sở hữu của user vào folder web:
sudo chown user1: folderWebGiDo
ZshLưu ý: mặc định khi tạo folder ban đầu cho website, nó có permission là 755, chúng ta sẽ bỏ đi quyền Public của nó sẽ còn là 750.
sudo chmod 750 folderWebGiDo
ZshCuối cùng chúng ta restart lại apache2 là xong.
sudo service apache2 restart
ZshBài viết đến đây là hết, nếu bạn thấy hay để lại bình luận cho mình biết nhé.