Tạo User và Phân Quyền Trong CentOS: Hướng Dẫn Chi Tiết

Việc quản lý user và phân quyền là một trong những nhiệm vụ quan trọng hàng đầu khi vận hành một hệ thống CentOS. Nó đảm bảo tính bảo mật, ổn định và khả năng kiểm soát truy cập tài nguyên của hệ thống. Nếu bạn mới bắt đầu làm quen với CentOS hoặc muốn củng cố kiến thức về quản lý người dùng, bài viết này sẽ cung cấp cho bạn hướng dẫn chi tiết, dễ hiểu, từng bước một.

Tại sao cần tạo user và phân quyền trong CentOS?

Việc sử dụng tài khoản root cho mọi tác vụ là một điều cực kỳ nguy hiểm. Nếu tài khoản này bị xâm nhập, kẻ tấn công sẽ có toàn quyền kiểm soát hệ thống của bạn. Vì vậy, việc tạo user riêng biệt và cấp quyền phù hợp là điều bắt buộc.

  • Bảo mật: Hạn chế quyền truy cập của mỗi người dùng chỉ ở mức cần thiết, giảm thiểu rủi ro khi tài khoản bị xâm nhập.
  • Kiểm soát: Dễ dàng theo dõi và kiểm soát hoạt động của từng người dùng trên hệ thống.
  • Ổn định: Ngăn chặn người dùng vô tình hoặc cố ý gây ra những thay đổi không mong muốn cho hệ thống.
  • Tuân thủ: Đáp ứng các yêu cầu về bảo mật và tuân thủ trong nhiều tổ chức.

Tạo User Mới Trong CentOS

Có nhiều cách để tạo user mới trong CentOS, nhưng phổ biến nhất là sử dụng lệnh useradd.

Sử dụng lệnh useradd

Cú pháp cơ bản của lệnh useradd là:

useradd [tùy chọn] <username>

Trong đó:

  • [tùy chọn] là các tham số để chỉ định các thiết lập cho user mới.
  • <username> là tên user mà bạn muốn tạo.

Ví dụ: Để tạo user có tên “mekongwiki”, bạn sử dụng lệnh:

useradd mekongwiki

Lệnh này sẽ tạo một user mới với các thiết lập mặc định. Để tùy chỉnh thêm, bạn có thể sử dụng các tùy chọn sau:

  • -d <directory>: Chỉ định thư mục home cho user. Nếu không chỉ định, hệ thống sẽ tự động tạo thư mục home trong /home/.
  • -m: Tạo thư mục home cho user (nếu chưa tồn tại).
  • -g <group>: Chỉ định group chính cho user.
  • -G <group1,group2,...>: Chỉ định các group phụ cho user.
  • -s <shell>: Chỉ định shell mặc định cho user. Ví dụ: /bin/bash, /bin/sh, /bin/zsh.
  • -c <comment>: Thêm comment (ghi chú) cho user.

Ví dụ: Tạo user “mekongwiki” với thư mục home là /var/www/mekongwiki, group chính là “webadmin”, và shell mặc định là /bin/zsh:

useradd -d /var/www/mekongwiki -m -g webadmin -s /bin/zsh mekongwiki

Lưu ý: Để sử dụng lệnh useradd, bạn cần có quyền root hoặc quyền sudo.

Đặt mật khẩu cho User

Sau khi tạo user, bạn cần đặt mật khẩu cho user đó. Sử dụng lệnh passwd:

passwd <username>

Ví dụ: Đặt mật khẩu cho user “mekongwiki”:

passwd mekongwiki

Hệ thống sẽ yêu cầu bạn nhập mật khẩu mới và xác nhận lại. Hãy chọn một mật khẩu mạnh và an toàn.

Thêm User vào các Group

Một user có thể thuộc nhiều group khác nhau. Việc thêm user vào group cho phép user đó có quyền truy cập vào các tài nguyên mà group đó sở hữu. Sử dụng lệnh usermod để thêm user vào group.

usermod -a -G <group1,group2,...> <username>

Trong đó:

  • -a: Thêm user vào group mà không xóa các group hiện tại của user.
  • -G: Chỉ định danh sách các group cần thêm user vào.
  • <username>: Tên user cần thêm vào group.

Ví dụ: Thêm user “mekongwiki” vào các group “developers” và “testers”:

usermod -a -G developers,testers mekongwiki

Xóa User

Để xóa một user, sử dụng lệnh userdel:

userdel <username>

Ví dụ: Xóa user “mekongwiki”:

userdel mekongwiki

Để xóa cả thư mục home của user, sử dụng tùy chọn -r:

userdel -r mekongwiki

Cẩn trọng: Xóa user là một hành động không thể hoàn tác. Hãy chắc chắn bạn đã sao lưu dữ liệu cần thiết trước khi xóa.

Phân Quyền Cho User Trong CentOS

Việc phân quyền cho user là quá trình xác định những tài nguyên mà user có quyền truy cập và những hành động mà user có quyền thực hiện trên các tài nguyên đó. CentOS sử dụng hệ thống phân quyền dựa trên user, group và quyền truy cập (read, write, execute).

Hiểu về Quyền Truy Cập (Permissions)

Mỗi file và directory trong CentOS có ba loại quyền truy cập:

  • Read (r): Cho phép đọc nội dung của file hoặc liệt kê nội dung của directory.
  • Write (w): Cho phép sửa đổi nội dung của file hoặc tạo, xóa file trong directory.
  • Execute (x): Cho phép thực thi file hoặc truy cập vào directory.

Ba loại quyền này được áp dụng cho ba đối tượng:

  • User (u): Chủ sở hữu của file/directory.
  • Group (g): Group sở hữu file/directory.
  • Others (o): Tất cả các user khác.

Quyền truy cập được hiển thị dưới dạng chuỗi 10 ký tự, ví dụ: -rwxr-xr--.

  • Ký tự đầu tiên cho biết loại file: - (file), d (directory), l (symbolic link).
  • 9 ký tự tiếp theo biểu thị quyền truy cập cho user, group và others, theo thứ tự.

Ví dụ: -rwxr-xr-- có nghĩa là:

  • File (ký tự đầu tiên là -).
  • User có quyền đọc, ghi và thực thi (rwx).
  • Group có quyền đọc và thực thi (r-x).
  • Others chỉ có quyền đọc (r--).

Sử dụng lệnh chmod để thay đổi quyền truy cập

Lệnh chmod được sử dụng để thay đổi quyền truy cập của file hoặc directory. Có hai cách sử dụng lệnh chmod:

1. Sử dụng ký hiệu chữ:

chmod <who><operator><permission> <file/directory>

Trong đó:

  • <who>: Đối tượng cần thay đổi quyền (u, g, o, a (all)).
  • <operator>: Thao tác cần thực hiện (+ (thêm quyền), – (xóa quyền), = (gán quyền)).
  • <permission>: Quyền cần thêm, xóa hoặc gán (r, w, x).
  • <file/directory>: File hoặc directory cần thay đổi quyền.

Ví dụ:

  • Thêm quyền ghi cho group vào file “myfile.txt”:
chmod g+w myfile.txt
  • Xóa quyền thực thi cho others khỏi directory “myfolder”:
chmod o-x myfolder
  • Gán quyền đọc, ghi, thực thi cho user và chỉ quyền đọc cho group và others vào file “myscript.sh”:
chmod u=rwx,g=r,o=r myscript.sh

2. Sử dụng số bát phân (octal):

Mỗi quyền (r, w, x) được biểu diễn bằng một số bát phân:

  • r = 4
  • w = 2
  • x = 1

Tổng của các quyền sẽ cho ra số bát phân tương ứng. Ví dụ:

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • r– = 4 + 0 + 0 = 4
  • — = 0 + 0 + 0 = 0

Để thay đổi quyền bằng số bát phân, sử dụng lệnh:

chmod <mode> <file/directory>

Trong đó:

  • <mode>: Chuỗi ba số bát phân, tương ứng với quyền của user, group và others.
  • <file/directory>: File hoặc directory cần thay đổi quyền.

Ví dụ:

  • Gán quyền đọc, ghi, thực thi cho user, quyền đọc và thực thi cho group, và chỉ quyền đọc cho others vào file “myscript.sh”:
chmod 754 myscript.sh
  • Gán quyền đọc và ghi cho user và group, và không có quyền cho others vào directory “myfolder”:
chmod 660 myfolder

Sử dụng lệnh chown để thay đổi chủ sở hữu

Lệnh chown được sử dụng để thay đổi chủ sở hữu (user và group) của file hoặc directory.

chown <user>:<group> <file/directory>

Trong đó:

  • <user>: Tên user mới.
  • <group>: Tên group mới.
  • <file/directory>: File hoặc directory cần thay đổi chủ sở hữu.

Ví dụ:

  • Thay đổi chủ sở hữu của file “myfile.txt” thành user “mekongwiki” và group “webadmin”:
chown mekongwiki:webadmin myfile.txt
  • Chỉ thay đổi chủ sở hữu user của directory “myfolder” thành “mekongwiki”:
chown mekongwiki myfolder
  • Chỉ thay đổi chủ sở hữu group của file “myfile.txt” thành “developers”:
chown :developers myfile.txt

Lưu ý: Để sử dụng lệnh chmodchown, bạn cần có quyền root hoặc quyền sudo.

Sử dụng sudo để cấp quyền tạm thời

Đôi khi, một user cần thực hiện một tác vụ yêu cầu quyền root mà không cần đăng nhập với tài khoản root. Trong trường hợp này, bạn có thể sử dụng lệnh sudo.

Lệnh sudo cho phép user thực hiện một lệnh với quyền root. Để sử dụng sudo, user phải được liệt kê trong file /etc/sudoers hoặc thuộc một group được phép sử dụng sudo.

Cấu hình sudo

Bạn có thể chỉnh sửa file /etc/sudoers bằng lệnh visudo. Lệnh này sẽ mở file /etc/sudoers bằng trình soạn thảo vi và kiểm tra cú pháp khi bạn lưu file.

Cảnh báo: Chỉnh sửa file /etc/sudoers không đúng cách có thể gây ra lỗi hệ thống nghiêm trọng. Hãy cẩn thận khi chỉnh sửa file này.

Để cho phép user “mekongwiki” sử dụng sudo, bạn có thể thêm dòng sau vào file /etc/sudoers:

mekongwiki ALL=(ALL:ALL) ALL

Dòng này có nghĩa là:

  • mekongwiki: Tên user.
  • ALL: User có thể chạy lệnh sudo từ bất kỳ host nào.
  • (ALL:ALL): User có thể chạy lệnh sudo với quyền của bất kỳ user và group nào.
  • ALL: User có thể chạy bất kỳ lệnh nào bằng sudo.

Để cho phép một group sử dụng sudo, bạn có thể thêm dòng sau:

%webadmin ALL=(ALL:ALL) ALL

Dòng này có nghĩa là tất cả các user thuộc group “webadmin” có thể sử dụng sudo.

Lưu ý: Nên hạn chế quyền sudo cho user và group chỉ ở mức cần thiết để đảm bảo an toàn cho hệ thống.

Sử dụng lệnh sudo

Để chạy một lệnh với quyền root, chỉ cần thêm sudo vào trước lệnh đó.

Ví dụ:

sudo apt-get update

Hệ thống sẽ yêu cầu bạn nhập mật khẩu của user để xác nhận. Sau khi xác nhận, lệnh sẽ được thực thi với quyền root.

Ví dụ Thực Tế

Để dễ hình dung hơn, chúng ta hãy xem một ví dụ thực tế về việc Tạo User Và Phân Quyền Trong Centos.

Tình huống: Bạn muốn tạo một website sử dụng Apache và PHP. Bạn muốn tạo một user riêng cho việc quản lý website và cấp quyền cho user đó chỉ được phép truy cập vào thư mục chứa mã nguồn website.

Các bước thực hiện:

  1. Tạo user mới:

    useradd -d /var/www/mywebsite -m -s /bin/bash mywebsite

    Lệnh này sẽ tạo user “mywebsite” với thư mục home là /var/www/mywebsite và shell mặc định là /bin/bash.

  2. Đặt mật khẩu cho user:

    passwd mywebsite

    Nhập mật khẩu mới và xác nhận lại.

  3. Thay đổi chủ sở hữu của thư mục website:

    chown -R mywebsite:mywebsite /var/www/mywebsite

    Lệnh này sẽ thay đổi chủ sở hữu của thư mục /var/www/mywebsite và tất cả các file và thư mục con bên trong thành user “mywebsite” và group “mywebsite”. (Tham khảo thêm về tự động mount ổ cứng centos).

  4. Phân quyền cho thư mục website:

    chmod -R 755 /var/www/mywebsite

    Lệnh này sẽ gán quyền đọc, ghi, thực thi cho user “mywebsite”, quyền đọc và thực thi cho group “mywebsite”, và chỉ quyền đọc và thực thi cho others đối với thư mục /var/www/mywebsite và tất cả các file và thư mục con bên trong.

  5. Cấu hình Apache:

    Bạn cần cấu hình Apache để sử dụng user “mywebsite” để chạy website. Điều này có thể được thực hiện bằng cách thay đổi thông số UserGroup trong file cấu hình Apache.

    User mywebsite
    Group mywebsite

    Sau khi thay đổi, khởi động lại Apache để các thay đổi có hiệu lực.

    sudo systemctl restart httpd

Bây giờ, user “mywebsite” chỉ có quyền truy cập vào thư mục /var/www/mywebsite và có thể quản lý mã nguồn website. Các user khác sẽ không có quyền truy cập vào thư mục này.

Các lưu ý quan trọng

  • Sử dụng mật khẩu mạnh: Mật khẩu mạnh là mật khẩu có độ dài tối thiểu 12 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt. Tránh sử dụng các mật khẩu dễ đoán như ngày sinh, tên người thân, hoặc các từ thông dụng.
  • Thường xuyên thay đổi mật khẩu: Nên thay đổi mật khẩu định kỳ, ví dụ mỗi 3 tháng một lần.
  • Hạn chế quyền sudo: Chỉ cấp quyền sudo cho những user thực sự cần thiết và chỉ cấp những quyền tối thiểu cần thiết.
  • Theo dõi log hệ thống: Thường xuyên kiểm tra log hệ thống để phát hiện các hoạt động đáng ngờ.

Theo lời của anh Nguyễn Văn An, một chuyên gia bảo mật hệ thống với hơn 10 năm kinh nghiệm, “Việc quản lý user và phân quyền một cách cẩn thận là nền tảng của một hệ thống an toàn. Đừng bao giờ chủ quan với việc này, vì nó có thể là cánh cửa để kẻ tấn công xâm nhập vào hệ thống của bạn.”

Các câu hỏi thường gặp

Làm thế nào để biết một user thuộc những group nào?

Bạn có thể sử dụng lệnh groups <username> để xem danh sách các group mà một user thuộc về.

Ví dụ:

groups mekongwiki

Kết quả sẽ hiển thị danh sách các group mà user “mekongwiki” thuộc về.

Làm thế nào để thay đổi thư mục home của user?

Bạn có thể sử dụng lệnh usermod -d <directory> -m <username> để thay đổi thư mục home của user.

Ví dụ:

usermod -d /home/newhome -m mekongwiki

Lệnh này sẽ thay đổi thư mục home của user “mekongwiki” thành /home/newhome và di chuyển nội dung từ thư mục home cũ sang thư mục home mới.

Làm thế nào để khóa tài khoản user?

Bạn có thể sử dụng lệnh passwd -l <username> để khóa tài khoản user.

Ví dụ:

passwd -l mekongwiki

Sau khi khóa, user sẽ không thể đăng nhập vào hệ thống. Để mở khóa tài khoản, sử dụng lệnh passwd -u <username>.

Sự khác nhau giữa useraddadduser là gì?

Trên thực tế, adduser chỉ là một script Perl được thiết kế để thân thiện với người dùng hơn so với useradd. useradd là một lệnh nhị phân cấp thấp hơn. adduser thường cung cấp các hướng dẫn tương tác hơn, trong khi useradd thường yêu cầu bạn chỉ định nhiều tùy chọn hơn một cách rõ ràng. Trên một số hệ thống, adduser có thể không tồn tại.

Làm thế nào để tạo user không có quyền đăng nhập?

Bạn có thể tạo user không có quyền đăng nhập bằng cách chỉ định shell mặc định là /usr/sbin/nologin.

Ví dụ:

useradd -s /usr/sbin/nologin myuser

User này sẽ không thể đăng nhập vào hệ thống, nhưng vẫn có thể được sử dụng để sở hữu các file và thư mục.

Làm thế nào để tìm file thuộc sở hữu của một user cụ thể?

Bạn có thể sử dụng lệnh find để tìm các file thuộc sở hữu của một user cụ thể.

Ví dụ:

find / -user mekongwiki

Lệnh này sẽ tìm tất cả các file thuộc sở hữu của user “mekongwiki” trên toàn bộ hệ thống.

Theo chị Trần Thị Mai, một quản trị viên hệ thống giàu kinh nghiệm, “Nắm vững các lệnh quản lý user và phân quyền là một kỹ năng không thể thiếu đối với bất kỳ ai làm việc với Linux. Hãy thực hành thường xuyên để làm quen với các lệnh này và hiểu rõ cách chúng hoạt động.”

Kết luận

Việc tạo user và phân quyền trong CentOS là một nhiệm vụ quan trọng để đảm bảo an toàn và ổn định cho hệ thống. Bằng cách tạo user riêng biệt cho mỗi người dùng và cấp quyền truy cập phù hợp, bạn có thể hạn chế rủi ro khi tài khoản bị xâm nhập, dễ dàng theo dõi và kiểm soát hoạt động của từng người dùng, và ngăn chặn người dùng gây ra những thay đổi không mong muốn cho hệ thống. Hy vọng rằng với hướng dẫn chi tiết này, bạn sẽ tự tin hơn trong việc quản lý user và phân quyền trên hệ thống CentOS của mình. Đừng quên tham khảo thêm về cách cài đặt centos stream để cập nhật những phiên bản CentOS mới nhất, hoặc tìm hiểu về cài đặt phpmyadmin trên centos để quản lý cơ sở dữ liệu hiệu quả hơn. Nếu bạn cần vô hiệu hóa SELinux, hãy xem hướng dẫn cách disable selinux centos. Và để đảm bảo hệ thống hoạt động trơn tru, hãy thường xuyên kiểm tra tiến trình chạy ngầm centos.