Sudo là gì và tại sao lại thần thánh đến vậy?

Thời gian đọc: 6 phút

Thông thường, có hai cách để chạy các administrative applications trong Linux.

Bạn sẽ chuyển sang super user (root) bằng lệnh su

… hoặc dùng sudo.

Để làm được điều này, sẽ phụ thuộc vào bản phân phối mà bạn sử dụng.

Một số bản phân phối cho phép người dùng root (như Fedora, Red Hat, openSuSE), trong khi một số thì không (như Ubuntu và Debian).

Mỗi loại sẽ có ưu và nhược điểm khác nhau.

 

 

Vậy sudo là gì?

Sudo là viết tắt của “substitute user do“, hoặc “super user do” (tùy thuộc vào cách bạn muốn xem xét).

Những gì sudo làm là cực kỳ quan trọng đối với nhiều bản phân phối Linux.

Sudo cho phép user chạy một chương trình như một user khác (thường là root user).

Có nhiều người nghĩ rằng sudo là cách tốt nhất để đạt được “bảo mật thực hành tốt nhất” (best practice security) trên Linux. Số khác cảm thấy hoàn toàn ngược lại.

Bất kể phân phối nào bạn đang sử dụng, sẽ đến lúc bạn sẽ phải tận dụng lợi thế của sudo.

Trong bài viết này tôi sẽ giới thiệu cho bạn về sudo… như cách sử dụng và cả cách cấu hình nữa.

Cuối cùng, bạn sẽ cảm thấy  sự tuyệt vời của sudo như bạn làm với su.

 

Sự khác biệt giữa sudo và su

Nếu bạn đã quen với thiết lập Linux truyền thống, thì bạn cùng quen với việc sử dụng lệnh su để có được quyền root.

Bạn thậm chí có thể sử dụng lệnh su – để đăng nhập như root.

Với các loại phân phối này, bạn cũng có thể đăng nhập với tư cách người dùng root.

Đối với nhiều người và cả tôi, đó là một ý tưởng tồi tệ.

Không nên đăng nhập với tư cách root user. Nếu bạn đang sử dụng phân phối dựa trên su và cho phép root user đăng nhập, hãy đăng nhập với tư cách là user chuẩn của bạn và root user cho su.

Bây giờ với các bản phân phối dựa trên sudo, bạn nhận thấy không thể đăng nhập với tư cách root user.

Trên thực tế, trong các bản phân phối như Ubuntu, tài khoản người dùng root đã bị “vô hiệu hóa”.

Bạn không thể đăng nhập với tư cách root và bạn không thể su để trở thành người dùng root.

Tất cả những gì bạn có thể làm là phát lệnh với sự trợ giúp của sudo để giành quyền quản trị.

Sử dụng sudo như thế nào?

Sử dụng sudo ở dạng cơ bản nhất rất đơn giản.

Giả sử bạn phải chạy dpkg để cài đặt một phần mềm.

Nếu với tư cách là người dùng chuẩn của bạn, bạn chỉ cần đưa ra lệnh dpkg -i software.deb, bạn sẽ nhận được một cảnh báo lỗi rằng người dùng không có quyền thích hợp để thực thi lệnh.

Bởi vì người dùng tiêu chuẩn, theo mặc định, không thể cài đặt các ứng dụng trên máy Linux.

Để cài đặt thành công một ứng dụng trên máy Linux, bạn phải có đặc quyền super user.

Vì vậy, để thay đổi lệnh đó để bạn có thể chạy cài đặt thành công, thay vào đó, bạn sẽ dùng command  sudo dpkg -i software.deb.

 

Cấu hình sudo như thế nào?

Bây giờ hãy thử cấu hình của sudo.

Chú ý: Nếu bạn định cấu hình sai tệp / etc / sudoers của mình, bạn có thể làm hỏng cài đặt (sẽ phải đăng nhập khởi động trong rescue mode).

Sudo RẤT cụ thể về cú pháp trong tệp cấu hình. Vì vậy, luôn luôn kiểm tra lại cấu hình của bạn trước khi lưu tệp.

Tin tốt là chỉ có một tập tin bạn cần quan tâm và đó là / etc / sudoers.

Bạn có thể nhận thấy rằng, ngay cả để xem tệp / etc / sudoers, bạn phải sử dụng lệnh sudo.

Tập tin này rất đơn giản khi đã bạn hiểu cách bố trí và chức năng của nó.

Để thay đổi tập tin cấu hình sudo, bạn cần sử dụng một lệnh cụ thể – sudo visudo.

Khi bạn mở tệp này, bạn sẽ thấy rằng tệp sudoers có kích thước khá nhỏ, nhưng những gì có trong đó là chìa khóa của bạn.

Vậy làm thế nào để thêm người dùng vào tập tin sudoers.

Mục cơ bản cho người dùng trông như thế này:

user hostlist = (userlist) commandlist

Thông thường bạn sẽ tìm thấy một mục như thế này:

root ALL = (ALL) ALL

Điều đó chỉ ra rằng người dùng root trên tất cả các máy chủ sử dụng bất kỳ user nào cũng có thể chạy tất cả command.

Nhưng giả sử bạn muốn cho phép một người dùng truy cập vào một lệnh quản trị mà không cần phải nhập mật khẩu, hãy sử dụng lệnh dpkg (minh hoạ trong trường hợp này) và cho phép người dùng david phát hành các lệnh đó mà không phải cấp mật khẩu. Để làm điều này, bạn sẽ thêm một dòng tương tự như sau vào tập tin / etc / sudoers.

david ALL = NOPASSWD: / usr / sbin / synap

Bây giờ user david có thể chạy synap bằng cách nhập sudo synaptic nhưng sẽ không nhắc nhập mật khẩu.

Điều này rất hữu ích trên một hệ thống người dùng đơn lẻ nhưng nên thận trọng khi sử dụng.

Bạn không muốn cho phép bất kỳ lệnh nào được chạy mật khẩu sans hoặc bạn tự mở tất cả các loại lỗ hổng.

 

Còn nếu bạn muốn ngăn người dùng nhất định sử dụng sudo.

Nếu bạn có một người dùng là quản trị viên, ví dụ john. Còn tất cả người dùng khác sẽ được sử dụng mà không có quyền quản trị viên, bạn có thể thực hiện một số cách.

Phương pháp đầu tiên là làm như sau:

Thêm một mục cho john như thế này:

john ALL =(ALL) ALL

Và tiếp theo là comment:

% admin ALL = (ALL) ALL

bằng cách thêm “#” ở đầu dòng.

Lúc này, người dùng duy nhất trên hệ thống có thể chạy các lệnh quản trị là john.

Tuy nhiên, điều này có thể gây ra sự cố nếu bạn có một số ứng dụng nhất định phải chạy với quyền quản trị, và được cho phép các đặc quyền đó bằng cách là thành viên của nhóm quản trị viên.

Bạn có thể tránh vấn đề này bằng cách mở công cụ Users administrative và xóa tất cả user, ngoại trừ những người bạn muốn được phép có quyền quản trị từ nhóm quản trị viên.

Nếu bạn muốn tất cả người dùng khác ngoài john bị hạn chế quyền truy cập để chạy các lệnh và công cụ quản trị.

Hãy làm theo các bước sau:

  1. Mở User administrator.
  2. Chuyển đến Groups manager.
  3. Chọn nhóm quản trị.
  4. Bấm vào properties.
  5. Bỏ chọn tất cả người dùng trừ john từ danh sách.
  6. Đóng Groups manager và the User administrator.
  7. Bây giờ chỉ có người dùng john sẽ có quyền quản trị trên máy.

 

Tại sao sudo lại thần thánh đến vậy?

Sudo là cách tốt nhất và an toàn nhất để nâng cao các đặc quyền.

Theo cách thông thường, “su” sẽ yêu cầu bạn nhập roor password và cung cấp cho bạn lời nhắc superuser, được biểu thị bằng ký hiệu #.

Biểu tượng # đó có nghĩa là “NGUY HIỂM! BẠN ĐANG ĐĂNG NHẬP ROOT!”

Command đầu tiên của bạn có thể diễn ra tốt đẹp.

Nhưng nếu bạn hay quên mà vẫn đăng nhập quyền root?

Một lỗi đánh máy và… thôi xong, bạn đã xóa toàn bộ mọi thứ.

Web server và cả business của bạn sẽ biến mất!

Với lệnh sudo, bạn phải nhập vào sudo trước mỗi command.

Do đó, bạn không cần phải nhớ quay lại chế độ người dùng thông thường và sẽ ít xảy ra tai nạn hơn.

 

Lời kết

Mặc dù điều này chủ yếu là một cái nhìn giới thiệu về sudo, bạn nên nắm vững cách thức công cụ này hoạt động và sức mạnh của nó.

Để đọc thêm về sudo, hãy dùng lệnh man sudo, nó sẽ mở ra trang hướng dẫn cho lệnh sudo.

Facebook Comments
Sudo là gì và tại sao lại thần thánh đến vậy?
4.2 (83.33%) 6 votes

Bạn thích bài viết này chứ?
Đăng ký để nhận những bài viết thú vị như thế hàng tuần.

Đừng sợ thất bại, chỉ sợ việc dậm chân tại chỗ

TÌM VIỆC
Bình luận