Khi sử dụng user không phải root hoặc không thuộc group sudo trên linux, chúng ta chỉ truy cập được file và sử dụng command một cách hạn chế (gặp lỗi Permission denied khi sử dụng), su và sudo trên linux có thể giải quyết vấn đề này. Vậy sự khác nhau giữa chúng là gì?
su là gì?
su (switch user) là lệnh cho phép bạn chạy 1 shell mới bằng cách chuyển đổi session shell mới sang user ID và group ID khác.
Hay hiểu đơn giản là
nó cho phép bạn chạy các lệnh với quyền của người dùng khác bằng cách đăng nhập sang 1 user khác ngay trên terminal đang chạy, mặc định người dùng root. Với lệnh này thì chúng ta cần phải có mật khẩu của user đó.
- su: đăng nhập sang user root
- su user: đăng nhập sang tài khoản user
Một số option của lệnh su
su <username>
– Session chuyển đổi sang user mới nhưng không được thiết lập các biến môi trường được quy định bởi user đó mà vẫn giữ thông tin biến môi trường của user cũ.
su - <username>
– Tạo một session mới hoàn toàn và thay đổi toàn bộ các biến môi trường của user hiện tại sang user mới (viết tắt của su --login <username>
hoặc su -l <username>
).
sudo là gì?
sudo là từ viết tắt của “substitute user do“, hay “super user do”. Đây là một chương trình của Linux. Nó cho phép user chạy chương trình với những đặc quyền bảo mật của user khác trong Linux (thường là root user).
Để chạy được lệnh sudo thì user đó phải được thêm vào group wheel trên CentOS, hoặc group sudoers trên các distro linux khác.
Cách thêm user vào nhóm wheel
- Bước 1: đăng nhập với user root và gõ lệnh
visudo
- Bước 2: Tìm dòng giống bên dưới
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
nếu dòng thứ hai bắt đầu bằng dấu # thì nó đã được đánh dấu là comment chỉ cần xóa dấu # đi để trông giống như sau
%wheel ALL=(ALL) ALL
Sau đó lưu lại và thoát (gõ :wq)
- Bước 3: Thêm user vào group wheel
usermod –aG wheel UserName
- Bước 4: Chuyển sang tài khoản UserName
su - UserName
và gõ lệnh sau để kiểm tra
sudo ls -ls /root
Vậy sự khác nhau giữa su và sudo là gì?
su | sudo |
---|---|
su đăng nhập vào tài khoản root nên có toàn quyền | sudo chỉ chạy được các lệnh được cho phép trong nhóm wheel (sudoers) |
su chạy tất cả các lệnh với tài khoản root | sudo chạy một lệnh duy nhất với đặc quyền root |
bắt buộc người dùng chia sẻ root password với user khác | người dùng sử dụng tài khoản của chính mình để chạy câu lệnh của hệ thống |
su khởi động cửa sổ shell mới | sudo không khởi động bất kỳ cửa sổ shell mới |
Khi tài khoản của bạn có quyền sudo, bạn có thể sử dụng lệnh sudo su để login sang tài khoản root để có toàn quyền.