Trong môi trường Linux, việc quản lý và chia sẻ dữ liệu giữa các người dùng cục bộ là một nhu cầu phổ biến, đặc biệt trong các hệ thống có nhiều tài khoản hoặc khi làm việc nhóm. Thay vì sao chép file thủ công, thiết lập một thư mục chia sẻ là giải pháp tối ưu, cho phép nhiều người dùng cùng truy cập, đọc và ghi file một cách an toàn và hiệu quả. Trong bài viết này, mình sẽ hướng dẫn bạn cách share folder trên Linux, đảm bảo rằng chỉ những người dùng được cấp quyền mới có thể truy cập và thao tác với dữ liệu trong thư mục đó.
Những điểm chính
- Định nghĩa thư mục chia sẻ: Hiểu rõ khái niệm thư mục chia sẻ, vai trò và lợi ích trong việc tối ưu hóa làm việc nhóm và quản lý tài nguyên tập trung.
- Chuẩn bị môi trường: Nắm được cách tạo người dùng và thiết lập mật khẩu, đây là bước chuẩn bị cần thiết trước khi cấu hình.
- Các bước thiết lập chi tiết: Thành thạo quy trình 6 bước để tạo một thư mục chia sẻ hoàn chỉnh, từ việc tạo nhóm, cấp quyền đến việc kích hoạt SGID để đảm bảo quyền sở hữu được kế thừa.
- Lưu ý quan trọng: Nắm được các lưu ý quan trọng để sử dụng thư mục chia sẻ một cách an toàn và hiệu quả, từ phạm vi áp dụng đến việc kiểm tra
umask. - Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề thực tế như lưu ý khi dùng
usermod, ảnh hưởng củaumaskvà tại sao nên tránh dùngchmod 777.
Thư mục chia sẻ trong Linux là gì?
Thư mục chia sẻ trong Linux là một thư mục đặc biệt được cấu hình với các quyền truy cập và nhóm sở hữu cụ thể, cho phép nhiều người dùng cục bộ có thể cùng nhau đọc, ghi và quản lý các file bên trong thư mục đó. Điều này đặc biệt hữu ích trong các trường hợp như:
- Tối ưu hóa quy trình làm việc nhóm: Thay vì mỗi thành viên phải làm việc trên một bản sao riêng lẻ rồi gửi qua lại, thư mục chia sẻ tạo ra một không gian làm việc chung và người dùng có thể truy cập trực tiếp vào cùng một bộ mã nguồn hoặc tài liệu.
- Quản lý tài nguyên tập trung và nhất quán: Sử dụng thư mục chia sẻ giúp quy hoạch dữ liệu gọn gàng và nhất quán hơn, đảm bảo tất cả mọi người đều đang sử dụng cùng một phiên bản tài liệu chuẩn.
- Tiết kiệm dung lượng lưu trữ: Sử dụng thư mục chia sẻ giúp hạn chế việc sao chép dữ liệu trùng lặp cho mỗi người dùng, từ đó tiết kiệm đáng kể không gian lưu trữ.
Trong hướng dẫn này, mình sẽ thiết lập một thư mục chia sẻ có tên /home/sharedFolder cho hai người dùng ví dụ là Bob và Alice và thêm họ vào một nhóm chung có tên projectA.

Chuẩn bị môi trường
Trước tiên, bạn cần đảm bảo các đối tượng người dùng đã tồn tại trên hệ thống. Nếu chưa có, bạn hãy thực hiện tạo mới và thiết lập mật khẩu cho họ.
Tạo User Bob:
sudo useradd Bob # Tạo người dùng Bob
sudo passwd Bob # Đặt mật khẩu cho Bob (hệ thống sẽ yêu cầu bạn nhập mật khẩu)Tạo User Alice:
sudo useradd Alice # Tạo người dùng Alice
sudo passwd Alice # Đặt mật khẩu cho Alice
Lưu ý
Bạn cần nhập mật khẩu quản trị cho lệnh sudo và thiết lập mật khẩu mới cho từng user khi được nhắc.

Các bước thiết lập thư mục chia sẻ chi tiết
Bạn cần tiến hành thiết lập thư mục /home/sharedFolder và cấu hình các quyền cần thiết.
Bước 1: Khởi tạo nhóm dùng chung
Đầu tiên, bạn cần tạo một nhóm đại diện để tập hợp các user cần chia sẻ dữ liệu lại với nhau. Lệnh dưới đây sẽ khởi tạo nhóm người dùng có tên là projectA:
sudo groupadd projectA
Bước 2: Tạo thư mục chia sẻ
Tiếp theo, bạn tạo thư mục có tên /home/sharedFolder để người dùng chia sẻ file bằng lệnh sau:
sudo mkdir /home/sharedFolder/
Lệnh mkdir được sử dụng để tạo một thư mục mới. Ở đây, thư mục sẽ được tạo trong /home/, một vị trí phổ biến cho các thư mục người dùng.
Bước 3: Chuyển quyền sở hữu nhóm
Mặc định, khi bạn tạo một thư mục, nhóm sở hữu của thư mục đó sẽ là nhóm chính của người dùng tạo. Khi đó, bạn cần thay đổi nhóm sở hữu của /home/sharedFolder thành projectA.
sudo chgrp projectA /home/sharedFolderLệnh chgrp (change group) thay đổi nhóm sở hữu của một file hoặc thư mục. Sau lệnh này, nhóm projectA sẽ là nhóm sở hữu của /home/sharedFolder.

Bước 4: Thiết lập quyền truy cập cho thư mục
Ở bước này, bạn sẽ cần cấp quyền đọc, ghi, thực thi cho chủ sở hữu và nhóm sở hữu, đồng thời cấm tất cả các người dùng khác bằng cách sử dụng quyền 770:
sudo chmod 770 /home/sharedFolder/
Giải thích quyền 770:
- 7 (chủ sở hữu – owner): Quyền rwx (read, write, execute) – đọc, ghi, thực thi.
- 7 (nhóm sở hữu – group): Quyền rwx (read, write, execute) – đọc, ghi, thực thi.
- 0 (người khác – others): Không có quyền nào.
Như vậy, với quyền 770, người tạo thư mục và các thành viên của nhóm projectA đều có thể đọc, ghi, xóa file và tạo thư mục con bên trong /home/sharedFolder.
Bước 5: Kích hoạt thuộc tính SGID cho thư mục
Việc đặt bit SGID là cực kỳ quan trọng đối với một thư mục chia sẻ. Khi SGID được bật, bất kỳ file hoặc thư mục con nào được tạo bên trong /home/sharedFolder sẽ tự động kế thừa nhóm sở hữu của thư mục cha (projectA), thay vì nhóm chính của người tạo.
sudo chmod +s /home/sharedFolderTrong đó, +s là cú pháp để thêm bit SGID.

Nhờ SGID, nếu Bob tạo một file trong /home/sharedFolder, file đó sẽ thuộc về nhóm projectA thay vì nhóm mặc định của Bob. Điều này đảm bảo rằng Alice và bất kỳ thành viên nào khác của projectA sẽ có thể truy cập file đó. Nếu không có SGID, file của Bob có thể chỉ thuộc nhóm của Bob và Alice sẽ không có quyền truy cập đầy đủ.
Bước 6: Thêm User vào nhóm
Cuối cùng, bạn thêm các thành viên vào nhóm dự án bằng lệnh sau:
sudo usermod -a -G projectA Bob
sudo usermod -a -G projectA AliceTrong đó, tham số -a (append) và -G (groups) đảm bảo người dùng được thêm vào nhóm mới mà không bị xóa khỏi các nhóm cũ.

Lưu ý
User cần đăng xuất và đăng nhập lại (Logout/Login) để cập nhật quyền nhóm mới.

Để xác minh cấu hình hoạt động đúng, bạn có thể thực hiện kịch bản kiểm thử sau:
- Đầu tiên, bạn đăng nhập bằng tài khoản Bob.
- Tiếp theo, bạn di chuyển vào
/home/sharedFolder. - Bạn tạo một file:
touch file_cua_bob.txt. - Sau đó bạn đăng xuất và đăng nhập lại bằng tài khoản Alice.
- Bạn thử đọc hoặc chỉnh sửa file
file_cua_bob.txt. Nếu thành công, cấu hình đã chính xác.
Lưu ý quan trọng khi share folder trong Linux
- Phạm vi áp dụng: Phương pháp trên chỉ dành cho người dùng trên cùng một máy. Để chia sẻ file qua mạng, bạn cần cấu hình thêm các dịch vụ như NFS hoặc Samba.
- Access Control Lists (ACL): Nếu quyền hạn mặc định của Linux không đủ linh hoạt, bạn hãy sử dụng Access Control Lists (ACLs) để gán quyền chi tiết hơn.
- Lưu ý về Umask: Bạn nên kiểm tra thiết lập umask của người dùng để đảm bảo file mới tạo ra không bị hạn chế quyền truy cập quá mức, gây lỗi cho các thành viên khác trong nhóm.
- Quy chuẩn đặt tên: Bạn nên đặt tên thư mục ngắn gọn, rõ nghĩa và tuyệt đối tránh dùng khoảng trắng để hạn chế lỗi cú pháp khi thao tác với dòng lệnh.

Câu hỏi thường gặp
Thêm user vào nhóm bằng usermod -a -G có cần lưu ý gì?
Nếu bạn quên tham số -a, usermod sẽ thay thế toàn bộ danh sách nhóm hiện tại của user bằng nhóm mới, dễ gây mất quyền ở nơi khác. Do đó sau khi thêm vào nhóm, user cần đăng xuất và đăng nhập lại để session mới nhận diện group membership và truy cập được thư mục chia sẻ.
Nếu umask của user đặt quá cao thì thư mục chia sẻ có hoạt động đúng không?
Nếu umask đặt quá cao, các file mới trong sharedFolder có thể bị loại bỏ quyền group write, khiến thành viên cùng nhóm không sửa/xóa được file của nhau. Do đó, khi dùng thư mục chia sẻ theo nhóm, bạn nên điều chỉnh umask hoặc dùng ACL để đảm bảo group luôn có quyền như mong muốn.
Tại sao nên dùng thư mục chung theo nhóm thay vì share bằng chmod 777?
chmod 777 cho phép mọi user trên hệ thống đọc/ghi/xóa, rất dễ dẫn đến rò rỉ dữ liệu hoặc bị xóa nhầm, trong khi mô hình “nhóm + SGID + quyền 770” sẽ giới hạn truy cập trong phạm vi các thành viên được chỉ định, an toàn và dễ kiểm soát hơn.
Share folder trong Linux giữa các user giúp bạn một có không gian làm việc chung an toàn và dễ mở rộng cho nhiều dự án hoặc đội nhóm khác mà không cần phụ thuộc vào việc copy file thủ công. Chúc bạn thao tác thành công và mời bạn tham khảo thêm các bài viết thuộc chủ đề Linux của mình ngay sau đây:




