Chào bạn, chào mừng trở lại với Bùi Mạnh Đức. Trong quản trị hệ thống Linux, việc quản lý người dùng là một trong những kỹ năng nền tảng nhưng cực kỳ quan trọng. Dù bạn đang vận hành một máy chủ web, một môi trường lập trình hay đơn giản là một máy tính cá nhân chạy Ubuntu 20.04, việc biết cách thêm, xóa và phân quyền cho người dùng sẽ giúp bạn bảo mật hệ thống và tổ chức công việc một cách hiệu quả. Một hệ thống có nhiều người dùng đòi hỏi sự phân chia quyền hạn rõ ràng để tránh những thay đổi không mong muốn, đồng thời đảm bảo mỗi người chỉ có thể truy cập vào những tài nguyên cần thiết cho công việc của mình.
Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu chi tiết các câu lệnh và phương pháp để quản lý người dùng trên Ubuntu 20.04. Từ việc tạo một tài khoản mới với lệnh adduser, xóa người dùng không còn hoạt động bằng deluser, cho đến việc phân quyền quản trị qua nhóm sudo. Bài viết được cấu trúc một cách logic, đi từ các thao tác cơ bản đến những tùy chọn nâng cao và các phương pháp thực hành tốt nhất, giúp bạn nắm vững kiến thức và tự tin áp dụng vào thực tế. Hãy cùng bắt đầu nhé!

Quản lý người dùng trên Ubuntu 20.04
Quản lý người dùng là một tác vụ cơ bản và thiết yếu đối với bất kỳ ai làm việc với hệ điều hành Ubuntu. Mỗi người dùng trên hệ thống có một tài khoản riêng, đi kèm với một thư mục chính (home directory), mật khẩu và các quyền truy cập được xác định trước. Việc phân chia này không chỉ giúp cá nhân hóa môi trường làm việc mà còn là một lớp bảo mật quan trọng. Nó ngăn chặn người dùng này truy cập vào dữ liệu của người dùng khác và giới hạn những thay đổi có thể ảnh hưởng đến toàn bộ hệ thống.
Trên Ubuntu, bạn có thể quản lý người dùng thông qua giao diện đồ họa hoặc sử dụng dòng lệnh (terminal). Tuy nhiên, việc sử dụng terminal mang lại sự linh hoạt, tốc độ và khả năng tự động hóa cao hơn, đặc biệt khi bạn quản lý các máy chủ từ xa không có giao diện đồ họa. Hai tác vụ phổ biến nhất là thêm người dùng mới khi có thành viên mới tham gia dự án và xóa người dùng khi họ không còn quyền truy cập. Nắm vững các câu lệnh liên quan sẽ giúp bạn thực hiện công việc này một cách nhanh chóng và chính xác.
Lệnh thêm user mới trong terminal
Khi cần tạo một tài khoản mới trên Ubuntu, bạn có hai lệnh chính để lựa chọn: adduser và useradd. Mặc dù tên gọi khá giống nhau, chúng lại có cách hoạt động khác biệt. Lệnh adduser là một công cụ thân thiện với người dùng hơn. Khi bạn chạy lệnh này, nó sẽ tự động thực hiện một loạt các tác vụ một cách tương tác: tạo thư mục chính cho người dùng, sao chép các tệp cấu hình mặc định và quan trọng nhất là yêu cầu bạn đặt mật khẩu cùng các thông tin bổ sung như họ tên. Đây là lệnh được khuyên dùng cho người mới bắt đầu vì nó đảm bảo các bước thiết lập cơ bản được hoàn thành.
Ngược lại, useradd là một công cụ cấp thấp hơn và ít tương tác hơn. Khi bạn dùng useradd, nó chỉ đơn giản là tạo ra một người dùng mới trong hệ thống mà không tự động tạo thư mục chính hay yêu cầu đặt mật khẩu. Bạn sẽ phải thực hiện các bước đó một cách thủ công sau đó. Lệnh này thường hữu ích hơn trong các kịch bản tự động hóa (scripting), nơi bạn muốn kiểm soát chi tiết từng bước của quy trình.
Để thêm một người dùng mới một cách đơn giản, bạn chỉ cần mở terminal và gõ lệnh sau, thay ten_user_moi bằng tên người dùng bạn muốn tạo:
sudo adduser ten_user_moi
Hệ thống sẽ ngay lập tức yêu cầu bạn nhập mật khẩu cho người dùng mới, sau đó xác nhận lại. Tiếp theo, một loạt câu hỏi về thông tin cá nhân sẽ hiện ra như Họ và Tên (Full Name), Số phòng (Room Number)… Bạn có thể điền hoặc bỏ trống bằng cách nhấn Enter. Cuối cùng, hệ thống sẽ hỏi bạn xác nhận thông tin đã đúng chưa, chỉ cần gõ Y và nhấn Enter để hoàn tất.

Cách xóa người dùng trên hệ thống Ubuntu
Tương tự như việc thêm người dùng, Ubuntu cũng cung cấp hai lệnh chính để xóa người dùng: deluser và userdel. Lựa chọn giữa hai lệnh này cũng phụ thuộc vào mức độ kiểm soát và sự an toàn bạn mong muốn. Lệnh deluser được xem là lựa chọn an toàn và toàn diện hơn, đặc biệt là cho các tác vụ quản trị hàng ngày. Khi bạn sử dụng deluser, nó không chỉ xóa tài khoản người dùng mà còn có thể xóa các tệp tin liên quan một cách cẩn thận.
Một trong những tùy chọn hữu ích nhất của deluser là --remove-home, cho phép bạn xóa cả tài khoản người dùng và thư mục chính của họ cùng một lúc. Điều này giúp dọn dẹp hệ thống sạch sẽ, giải phóng không gian lưu trữ và loại bỏ hoàn toàn dữ liệu của người dùng cũ. Cú pháp thực hiện như sau:
sudo deluser --remove-home ten_user_can_xoa
Trong khi đó, userdel là một công cụ cấp thấp hơn. Theo mặc định, lệnh userdel ten_user_can_xoa chỉ xóa người dùng ra khỏi các tệp hệ thống mà không động đến thư mục chính của họ. Điều này có thể để lại các tệp “mồ côi” chiếm dụng không gian. Để xóa cả thư mục chính, bạn phải thêm tùy chọn -r (remove): sudo userdel -r ten_user_can_xoa. Về cơ bản, deluser cung cấp một lớp bảo vệ bổ sung bằng cách kiểm tra các tiến trình đang chạy của người dùng trước khi xóa, trong khi userdel thực hiện hành động ngay lập tức. Vì vậy, deluser thường là lựa chọn được khuyến khích.
Quản lý quyền và nhóm người dùng
Trong môi trường Linux, quyền truy cập không chỉ được quản lý ở cấp độ người dùng cá nhân mà còn thông qua các nhóm. Một nhóm là một tập hợp gồm nhiều người dùng. Việc cấp quyền cho một nhóm sẽ cho phép tất cả các thành viên trong nhóm đó có chung quyền hạn đó. Cách tiếp cận này giúp việc quản trị trở nên đơn giản và có tổ chức hơn rất nhiều. Thay vì phải cấp quyền truy cập vào một thư mục cho 10 người dùng riêng lẻ, bạn chỉ cần thêm 10 người dùng đó vào một nhóm và cấp quyền cho nhóm đó một lần duy nhất.
Mỗi người dùng trên Ubuntu có thể thuộc về một hoặc nhiều nhóm. Có một nhóm chính (primary group) thường trùng tên với người dùng và được tạo tự động khi tạo người dùng. Ngoài ra, người dùng có thể được thêm vào các nhóm phụ (secondary groups) khác để nhận thêm các quyền hạn đặc biệt. Ví dụ, nhóm sudo là một nhóm rất quan trọng, vì bất kỳ thành viên nào của nhóm này đều có quyền thực thi các lệnh với quyền quản trị cao nhất.
Thêm user vào nhóm và kiểm tra nhóm
Để thêm một người dùng hiện có vào một nhóm phụ, bạn sử dụng lệnh usermod. Đây là một công cụ mạnh mẽ để sửa đổi các thuộc tính của tài khoản người dùng. Cú pháp phổ biến nhất để thêm người dùng vào một nhóm là sử dụng tùy chọn -aG. Tùy chọn -a (append) đảm bảo rằng 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 phụ hiện có. Tùy chọn -G chỉ định danh sách các nhóm phụ.
Ví dụ, để cấp quyền quản trị cho người dùng có tên là duc, bạn sẽ thêm anh ta vào nhóm sudo bằng lệnh sau:
sudo usermod -aG sudo duc
Sau khi thực thi lệnh, thay đổi sẽ có hiệu lực ngay lập tức, nhưng người dùng duc cần phải đăng xuất và đăng nhập lại để phiên làm việc của mình được cập nhật với quyền hạn mới. Để kiểm tra xem một người dùng thuộc những nhóm nào, bạn có thể sử dụng lệnh groups:
groups duc
Kết quả sẽ hiển thị một danh sách tất cả các nhóm mà người dùng duc là thành viên, ví dụ: duc : duc adm cdrom sudo dip plugdev lpadmin sambashare. Điều này rất hữu ích để xác minh rằng bạn đã thêm người dùng vào đúng nhóm và kiểm tra quyền hạn của họ.

Thiết lập quyền và phân quyền người dùng
Việc cấp quyền sudo là một trong những tác vụ phân quyền quan trọng nhất. Như đã đề cập, thêm người dùng vào nhóm sudo là cách đơn giản nhất để làm điều này. Tuy nhiên, trong các môi trường yêu cầu bảo mật cao hơn, bạn có thể muốn kiểm soát chi tiết hơn những lệnh mà một người dùng có thể chạy với quyền sudo. Việc này được quản lý thông qua tệp /etc/sudoers.
Một quy tắc vàng khi làm việc với Ubuntu là: không bao giờ chỉnh sửa tệp /etc/sudoers trực tiếp bằng một trình soạn thảo văn bản thông thường. Một lỗi cú pháp nhỏ trong tệp này có thể làm hỏng cấu hình sudo, khiến bạn mất quyền quản trị và không thể sửa chữa hệ thống. Thay vào đó, hãy luôn sử dụng lệnh visudo:
sudo visudo
Lệnh này sẽ mở tệp /etc/sudoers bằng trình soạn thảo mặc định của hệ thống (thường là Nano). Điều quan trọng là visudo sẽ kiểm tra cú pháp của tệp trước khi lưu. Nếu phát hiện lỗi, nó sẽ cảnh báo và không cho phép bạn lưu lại thay đổi, giúp bảo vệ hệ thống của bạn. Bên trong tệp, bạn sẽ thấy dòng %sudo ALL=(ALL:ALL) ALL. Dòng này có nghĩa là tất cả thành viên (% biểu thị nhóm) của nhóm sudo có thể chạy tất cả các lệnh trên hệ thống. Bạn có thể thêm các quy tắc tùy chỉnh để giới hạn quyền cho từng người dùng hoặc nhóm cụ thể, giúp tăng cường bảo mật.

Các tùy chọn phổ biến khi quản lý user
Khi quản lý người dùng, các lệnh adduser và deluser cung cấp nhiều tùy chọn nâng cao giúp bạn tùy chỉnh quy trình theo nhu cầu cụ thể. Việc hiểu và sử dụng các tùy chọn này sẽ giúp bạn quản lý hệ thống một cách chuyên nghiệp và hiệu quả hơn, đặc biệt trong các môi trường phức tạp hoặc khi cần tự động hóa các tác vụ.
Các tùy chọn này cho phép bạn kiểm soát mọi khía cạnh của một tài khoản người dùng, từ việc họ có thể đăng nhập hay không, họ sử dụng shell nào, cho đến vị trí lưu trữ dữ liệu của họ. Nắm vững chúng giúp bạn tạo ra các loại tài khoản khác nhau, chẳng hạn như tài khoản dịch vụ không có khả năng đăng nhập tương tác, hoặc tài khoản người dùng tạm thời với các quyền hạn bị giới hạn.
Tùy chọn quản lý khi thêm user
Khi sử dụng lệnh adduser hoặc useradd, bạn có thể kèm theo các cờ (flags) để tinh chỉnh quá trình tạo người dùng. Dưới đây là một số tùy chọn hữu ích nhất:
--home /path/to/dir: Chỉ định một thư mục chính tùy chỉnh cho người dùng thay vì mặc định /home/username. Điều này hữu ích khi bạn muốn lưu trữ dữ liệu người dùng trên một ổ đĩa riêng.
sudo adduser --home /mnt/data/newuser newuser
--shell /path/to/shell: Thiết lập một shell đăng nhập mặc định khác cho người dùng. Ví dụ, để ngăn một người dùng đăng nhập vào hệ thống qua terminal, bạn có thể gán cho họ shell /sbin/nologin.
sudo adduser --shell /sbin/nologin service_account
--no-create-home: Tạo người dùng nhưng không tạo thư mục chính cho họ. Tùy chọn này thường được dùng cho các tài khoản hệ thống hoặc dịch vụ không cần lưu trữ dữ liệu cá nhân.
--disabled-password: Tạo một người dùng không có mật khẩu hợp lệ. Người dùng này sẽ không thể đăng nhập bằng mật khẩu nhưng vẫn có thể truy cập hệ thống qua các phương thức khác như khóa SSH.
--ingroup GROUP: Chỉ định nhóm chính cho người dùng thay vì tạo một nhóm mới trùng tên với người dùng.
Việc kết hợp các tùy chọn này cho phép bạn tạo ra những người dùng được cấu hình sẵn cho các mục đích cụ thể ngay từ đầu.

Tùy chọn xóa user hiệu quả
Khi xóa người dùng, việc đảm bảo rằng tất cả dữ liệu và quyền truy cập của họ được gỡ bỏ hoàn toàn là cực kỳ quan trọng về mặt bảo mật và quản lý tài nguyên. Lệnh deluser cung cấp các tùy chọn để thực hiện việc này một cách an toàn.
--remove-home: Như đã nói ở trên, đây là tùy chọn quan trọng nhất, đảm bảo thư mục chính và tất cả các tệp trong đó bị xóa cùng với tài khoản.
--remove-all-files: Tùy chọn này còn mạnh mẽ hơn. Nó sẽ tìm kiếm và xóa tất cả các tệp trên toàn bộ hệ thống thuộc sở hữu của người dùng đó, ngay cả những tệp nằm ngoài thư mục chính của họ. Hãy sử dụng tùy chọn này một cách cẩn thận.
--backup: Trước khi xóa, tùy chọn này sẽ tạo một bản sao lưu (backup) của các tệp trong thư mục chính của người dùng vào một tệp nén có tên username.tar.gz hoặc username.tar.bz2. Đây là một biện pháp an toàn tuyệt vời.
Ngoài ra, một vấn đề cần xử lý là khi người dùng đang có phiên đăng nhập hoặc có các tiến trình đang chạy. Lệnh deluser thường sẽ từ chối xóa người dùng trong trường hợp này. Bạn cần phải chấm dứt các tiến trình của họ trước. Bạn có thể tìm các tiến trình đó bằng lệnh ps -u username và dừng chúng bằng lệnh kill hoặc pkill -u username để đảm bảo quá trình xóa diễn ra suôn sẻ.
Common Issues/Troubleshooting
Ngay cả với các tác vụ cơ bản như quản lý người dùng, bạn vẫn có thể gặp phải một số lỗi phổ biến. May mắn là hầu hết các lỗi này đều dễ dàng xác định và khắc phục. Hiểu rõ nguyên nhân và cách giải quyết sẽ giúp bạn tiết kiệm thời gian và tránh được những phiền toái không đáng có.
Các vấn đề thường phát sinh từ việc thiếu quyền, cấu hình sai sau khi tạo người dùng, hoặc các xung đột về quyền sở hữu tệp. Việc trang bị kiến thức để xử lý những tình huống này là một phần quan trọng của kỹ năng quản trị hệ thống Linux. Hãy cùng xem qua hai sự cố thường gặp nhất và cách để gỡ rối chúng một cách nhanh chóng.
Lỗi không thể thêm hoặc xóa user do thiếu quyền
Đây có lẽ là lỗi mà người mới bắt đầu gặp phải nhiều nhất. Bạn gõ lệnh adduser newuser và ngay lập tức nhận được thông báo lỗi “Permission denied” (Quyền bị từ chối) hoặc một thông báo tương tự cho biết bạn không có quyền thực hiện hành động này.
Nguyên nhân rất đơn giản: các tác vụ quản lý người dùng như thêm hoặc xóa tài khoản là những thay đổi quan trọng đối với hệ thống. Do đó, chúng đòi hỏi quyền quản trị cấp cao (root privileges). Tài khoản người dùng thông thường không được phép thực hiện các hành động này để đảm bảo an toàn cho hệ thống.
Cách khắc phục cũng rất dễ dàng: bạn chỉ cần đặt sudo (Super User Do) ở đầu câu lệnh của mình. sudo cho phép bạn thực thi một lệnh duy nhất với quyền của người dùng root.
- Thay vì:
adduser newuser
- Hãy dùng:
sudo adduser newuser
Tương tự, khi xóa người dùng hoặc sửa đổi thông tin người dùng, bạn cũng luôn cần sử dụng sudo. Việc quên sudo là một lỗi phổ biến, nhưng cũng là một bài học quan trọng về cấu trúc quyền hạn trong Linux.

User không thể đăng nhập sau khi thêm
Một vấn đề khác cũng khá phổ biến là sau khi bạn tạo một người dùng mới, họ lại không thể đăng nhập được. Khi họ cố gắng đăng nhập qua terminal hoặc giao diện đồ họa, hệ thống từ chối truy cập mà không có thông báo lỗi rõ ràng. Có một vài nguyên nhân tiềm ẩn cho vấn đề này:
- Chưa đặt mật khẩu: Nếu bạn sử dụng lệnh useradd thay vì adduser, tài khoản sẽ được tạo ra nhưng ở trạng thái bị khóa và không có mật khẩu. Người dùng sẽ không thể đăng nhập cho đến khi bạn đặt mật khẩu cho họ.
Cách khắc phục: Sử dụng lệnh passwd để tạo mật khẩu cho người dùng đó: sudo passwd ten_user_moi.
- Shell đăng nhập không hợp lệ: Có thể trong quá trình tạo người dùng, shell mặc định của họ đã bị đặt thành
/sbin/nologin hoặc /bin/false. Đây là các shell đặc biệt được thiết kế để ngăn chặn việc đăng nhập tương tác, thường dùng cho các tài khoản dịch vụ.
Cách khắc phục: Kiểm tra shell hiện tại của người dùng bằng cách xem tệp /etc/passwd (grep ten_user /etc/passwd). Sau đó, thay đổi shell của họ thành một shell hợp lệ như /bin/bash bằng lệnh usermod: sudo usermod --shell /bin/bash ten_user_moi.
- Vấn đề về thư mục chính: Thư mục chính có thể chưa được tạo hoặc có quyền không chính xác, khiến người dùng không thể truy cập vào môi trường làm việc của mình sau khi đăng nhập. Lỗi này ít xảy ra nếu bạn dùng adduser.
Cách khắc phục: Đảm bảo thư mục /home/ten_user_moi tồn tại và người dùng đó là chủ sở hữu: sudo chown -R ten_user_moi:ten_user_moi /home/ten_user_moi.
Bằng cách kiểm tra tuần tự các nguyên nhân trên, bạn thường sẽ nhanh chóng tìm ra và giải quyết được vấn đề.

Best Practices
Quản lý người dùng không chỉ là việc biết các câu lệnh. Để duy trì một hệ thống an toàn, ổn định và dễ quản lý, bạn nên tuân thủ một số quy tắc và phương pháp thực hành tốt nhất. Những nguyên tắc này giúp giảm thiểu rủi ro bảo mật, ngăn ngừa mất dữ liệu và đảm bảo rằng hệ thống của bạn hoạt động một cách có tổ chức.
Việc áp dụng các best practices này từ đầu sẽ tạo ra một thói quen tốt và giúp bạn tránh được nhiều vấn đề đau đầu trong tương lai, đặc biệt khi hệ thống của bạn phát triển và có nhiều người dùng hơn. Đây là những kinh nghiệm được đúc kết từ cộng đồng quản trị hệ thống Linux qua nhiều năm.
- Luôn sao lưu dữ liệu trước khi xóa user: Đây là quy tắc quan trọng nhất. Trước khi thực hiện lệnh
deluser --remove-home, hãy chắc chắn rằng bạn đã sao lưu tất cả dữ liệu quan trọng của người dùng đó. Một khi đã xóa, việc khôi phục gần như là không thể. Sử dụng tùy chọn --backup của deluser là một cách làm thông minh.
- Ưu tiên
adduser thay vì useradd: Đối với các tác vụ thủ công, adduser an toàn và tiện lợi hơn. Nó đảm bảo rằng các bước cần thiết như tạo thư mục chính, thiết lập mật khẩu và sao chép tệp cấu hình đều được thực hiện, giúp tránh các lỗi cấu hình thiếu sót. Hãy chỉ dùng useradd khi bạn viết kịch bản tự động và cần kiểm soát chi tiết.
- Hạn chế quyền sudo (Nguyên tắc đặc quyền tối thiểu): Đừng cấp quyền
sudo một cách tùy tiện. Chỉ những người dùng thực sự cần quyền quản trị hệ thống mới nên được thêm vào nhóm sudo. Đối với những người dùng khác, hãy cấp cho họ quyền trên các tệp và thư mục cụ thể thông qua quyền sở hữu và nhóm. Điều này giúp hạn chế thiệt hại nếu một tài khoản bị xâm nhập.
- Kiểm tra trạng thái user và nhóm thường xuyên: Định kỳ rà soát danh sách người dùng trên hệ thống của bạn (bằng cách xem tệp
/etc/passwd) và thành viên của các nhóm quan trọng (như sudo). Xóa các tài khoản không còn sử dụng và loại bỏ các quyền không cần thiết để giữ cho hệ thống luôn gọn gàng và an toàn.
- Sử dụng tên người dùng có ý nghĩa: Đặt tên người dùng một cách nhất quán và dễ nhận biết (ví dụ:
ho.ten hoặc ten.phongban). Tránh các tên người dùng chung chung như user1, test trong môi trường sản xuất.
- Thực thi chính sách mật khẩu mạnh: Khuyến khích hoặc bắt buộc người dùng đặt mật khẩu phức tạp, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt để tăng cường bảo mật.

Conclusion
Qua bài viết này, chúng ta đã cùng nhau đi qua một hành trình chi tiết về cách quản lý người dùng trên hệ điều hành Ubuntu 20.04. Từ những thao tác cơ bản như thêm người dùng mới bằng adduser và xóa người dùng bằng deluser, đến các kỹ năng nâng cao hơn như quản lý nhóm, phân quyền sudo qua visudo, và sử dụng các tùy chọn nâng cao để tùy chỉnh tài khoản. Bạn cũng đã được trang bị kiến thức để xử lý các sự cố thường gặp và các phương pháp thực hành tốt nhất để đảm bảo hệ thống của mình luôn an toàn và có tổ chức.
Việc quản lý người dùng hiệu quả là nền tảng của một hệ thống vững chắc. Nó không chỉ giúp bảo vệ dữ liệu và tài nguyên hệ thống khỏi những truy cập trái phép mà còn tạo ra một môi trường làm việc rõ ràng, nơi mỗi người dùng có đúng quyền hạn cần thiết cho công việc của mình. Nắm vững các kỹ năng này sẽ giúp bạn tự tin hơn rất nhiều khi quản trị bất kỳ máy chủ hay máy tính cá nhân nào chạy Ubuntu.
Hãy dành thời gian thực hành các câu lệnh này trên một môi trường an toàn như máy ảo để làm quen. Càng thực hành nhiều, bạn sẽ càng thành thạo và có thể xử lý các tình huống thực tế một cách nhanh chóng. Cảm ơn bạn đã theo dõi bài viết tại Bùi Mạnh Đức. Đừng quên khám phá thêm các bài viết khác trên blog để tìm hiểu sâu hơn về quản trị website Ubuntu và các chủ đề thú vị khác nhé.