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), susudo 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

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ì?

susudo
su đăng nhập vào tài khoản root nên có toàn quyềnsudo 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 rootsudo 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ácngườ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ớisudo 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.