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 chmod
và chown
, 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ệnhsudo
từ bất kỳ host nào.(ALL:ALL)
: User có thể chạy lệnhsudo
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ằngsudo
.
Để 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:
-
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
. -
Đặt mật khẩu cho user:
passwd mywebsite
Nhập mật khẩu mới và xác nhận lại.
-
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). -
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. -
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ố
User
vàGroup
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ềnsudo
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 useradd
và adduser
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.