Cách chỉnh sửa tệp Sudoers và quản lý lệnh Sudo trong Linux

Tác giả: VPS chính hãng 18 tháng 06, 2023

Các hệ điều hành Linux thiết lập người dùng đầu tiên làm quản trị viên theo mặc định và cấp cho nó quyền truy cập sudo và các giá trị mặc định hợp lý. Mặc dù tệp Sudoers cung cấp hướng dẫn cho hệ thống về cách xử lý lệnh sudo, nhưng lệnh sudo cho phép người dùng không phải root thực thi các lệnh Linux khác thường yêu cầu quyền truy cập siêu người dùng (superuser). Trong bài viết này, chúng tôi sẽ chia sẻ cách chỉnh sửa tệp Sudoers và quản lý lệnh Sudo trong Linux. Theo dõi ngay để xem cách bạn có thể chỉnh sửa tệp nếu muốn giới hạn những gì người dùng có thể chạy dưới dạng sudo, cấp cho người dùng mới quyền truy cập vào sudo hoặc thu hồi quyền của người dùng.

Tập tin Sudoers là gì?

Quyền siêu người dùng (Superuser) được cấp cho một người dùng đặc biệt được gọi là root. Không có giới hạn nào đối với tài khoản quản trị viên này áp dụng cho người dùng thông thường. Có nhiều cách khác nhau để người dùng chạy các lệnh với quyền truy cập siêu người dùng hoặc quyền root. Theo mặc định, tiền tố sudo không bắt buộc đối với người dùng root. Tiền tố sudo phải được thêm vào lệnh useradd nếu người dùng không phải root mà muốn thêm người dùng khác:

sudo useradd vpschinhhang

Người dùng sẽ thấy đầu ra Permission denied (quyền bị từ chối) nếu họ không sử dụng tiền tố sudo.

Tuy nhiên, có thể định cấu hình người dùng khác cũng như chạy lệnh sudo. Vì vậy, bạn cần chỉnh sửa sudoers để làm điều này. Mặc dù lỗi sudoers có thể khóa tất cả người dùng trên bản phân phối của bạn, do đó bạn nên làm theo hướng dẫn này để có một nguồn an toàn và nhất định.

Cú pháp Sudoers

Hãy cùng khám phá các biểu mẫu và nguyên tắc khác nhau để chỉnh sửa sudoer:

  • root ALL=(ALL:ALL) ALL: dòng này chỉ ra rằng người dùng root có quyền truy cập không hạn chế vào hệ thống và có thể thực thi bất kỳ lệnh nào.
  • %admin ALL=(ALL) ALL: Biểu tượng % chỉ định một nhóm. Bất kỳ ai có tư cách thành viên nhóm quản trị viên đều có quyền người dùng root.
  • %sudo   ALL=(ALL:ALL) ALL: Mỗi thành viên của nhóm sudo có khả năng thực thi bất kỳ lệnh nào.

Ngoài ra, dòng #includedir /etc/sudoers.d, cho biết rằng chúng ta có thể liên kết tệp sudoers.d tại đây và thêm cấu hình cho nó.

=>> Đọc thêm: Cách cài đặt môi trường desktop KDE trong Linux Ubuntu

Hướng dẫn chỉnh sửa tệp Sudoers và quản lý lệnh Sudo trong Linux

Sau khi mua VPS Linux và đã hoàn tất thiết lập máy chủ ban đầu cho bản phân phối yêu thích của mình, hãy đăng nhập vào máy chủ của bạn với tư cách là người dùng không phải root và tiếp tục tìm hiểu cách lấy quyền root một cách chính xác. Là người dùng Linux, theo mặc định, bạn có thể có quyền truy cập sudo và là quản trị viên. Nhưng nếu không, bạn cần phải thay đổi. Hãy xem qua hướng dẫn này và tìm hiểu cách sử dụng sudo và thay đổi tệp sudoers.

Lệnh sudođược cấu hình thông qua một tệp có tại /etc/sudoers. Lệnh  visudotại một thiết bị đầu cuối được sử dụng để chỉnh sửa tệp Sudoers. Nhấn Ctrl + Alt + T trên bàn phím để khởi chạy cửa sổ đầu cuối hoặc tìm kiếm một đầu cuối trong menu chương trình để truy cập tệp Sudoers để chỉnh sửa. Đăng nhập vào thiết bị đầu cuối bằng tài khoản root khi nó được mở và sẵn sàng sử dụng.

Chỉnh sửa tệp Sudoers bằng lệnh visudo 

Chỉnh sửa tệp Sudoers bằng lệnh visudo

Để sử dụng lệnh visudo, bạn phải đăng nhập root. Điều quan trọng là phải sử dụng lệnh visudokhi chỉnh sửa tệp  /etc/sudoers vì cú pháp sai có thể dẫn đến hệ thống bị hỏng khiến bạn không nhận được các đặc quyền nâng cao. Lệnh visudo sẽ mở một trình soạn thảo văn bản như bình thường. Nhưng trước khi lưu, nó sẽ kiểm tra cú pháp của tệp. Điều này giúp các hoạt động sudokhông bị tạm dừng do sự cố cấu hình, đây có thể là cách duy nhất để bạn có quyền truy cập root.

Trong khi visudo mở tệp bằng trình soạn thảo văn bản  vi, Ubuntu định cấu hình visudo để sử dụng trình soạn thảo văn bản nano. Tuy nhiên, bạn có thể chạy lệnh sau để đổi lại thành  vi.

sudo update-alternatives --config editor

Thực hiện lệnh sau để xem tệp  /etc/sudoers sau khi thiết lập visudo:

sudo visudo

Cách chỉnh sửa tệp Sudoers trong Linux

Bạn có thể sử dụng lệnh bên dưới để chỉnh sửa tệp /etc/sudoers:

sudo visudo -f /etc/sudoers

Bạn nên chỉnh sửa tệp sudoers bằng visudo. Visudo thực hiện kiểm tra cú pháp cần thiết và đảm bảo rằng chỉ một người dùng tại một thời điểm có thể chỉnh sửa sudoer. Bạn có thể sử dụng công cụ grep để xác định xem người dùng có phải là thành viên của nhóm sudo hay không:

grep ‘sudo’ /etc/group

Theo cách này, tên người dùng sẽ được liệt kê. Sử dụng lệnh adduser trên dòng lệnh, chúng ta có thể thêm người dùng có tên là bill vào nhóm sudo như sau:

adduser bill sudo

Người dùng bill sẽ hiển thị nếu chúng ta chạy lệnh grep để kiểm tra xem ai là thành viên của nhóm. Chỉ cần thêm ai đó vào sudo để cấp cho họ quyền truy cập root. Chạy lệnh sau để xóa người dùng khỏi sudo:

deluser bill sudo

Bill sẽ bị xóa khỏi nhóm sudo thông qua lệnh deluser. Các hành vi yêu cầu đặc quyền sudo không còn có thể được thực hiện bởi người dùng Bill.

Cách cấp đặc quyền Sudo cho người dùng

Cấp cho người dùng mới quyền truy cập sudo chung là tác vụ thường xuyên nhất mà người dùng cố gắng thực hiện khi xử lý các quyền sudo. Thêm người dùng được đề cập vào nhóm quản trị với mục đích chung là cách đơn giản nhất để thực hiện điều này trên một hệ thống đã được thiết lập.

sudo usermod -aG sudo username

Ngoài ra, bạn cũng có thể sử dụng lệnh dưới đây. Tuy nhiên, cả hai sẽ đạt được cùng một kết quả.

sudo gpasswd -a username sudo

Cách cung cấp các đặc quyền cụ thể bằng tệp Sudoers

Để người dùng bill chỉ chạy các loại lệnh cụ thể có đặc quyền sudo, bạn cần tạo một tệp cấu hình trong /etc/sudoers.d/ có tên là networking. Vì vậy, để tạo tệp, hãy nhập:

sudo visudo -f /etc/sudoers.d/networking

Sau đó, thêm văn bản sau vào tệp:

Cmnd_Alias CAPTURE = /usr/sbin/tcpdump 

Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd 

Cmnd_Alias NETALL = CAPTURE, SERVERS 

%netadmin ALL=NETALL

Tiếp theo, chạy lệnh sau:

addgroup netadmin

Để thêm người dùng bill vào nhóm netadmin, hãy nhập:

sudo adduser bill netadmin

Theo cách này, người dùng bill sẽ chạy lệnh tcpdump cùng với các lệnh liên quan đến mạng khác.

=>> Đọc thêm: Cài đặt và định cấu hình NFS trên Ubuntu

Cần tạo một tệp cấu hình để cấp các quyền cụ thể bằng tệp Sudoers

Cần tạo một tệp cấu hình để cấp các quyền cụ thể bằng tệp Sudoers

Cách xóa người dùng khỏi tệp Sudoers

Bạn có thể xóa người dùng khỏi quyền truy cập sudo mà không cần sửa đổi tệp Sudoers nếu bạn đã thêm quyền truy cập sudo bằng cách sử dụng nhóm “wheel” hoặc nhóm “sudo”. Thay vào đó, hãy mở một thiết bị đầu cuối, sau đó nhập các lệnh sau.

su 

usermod -G wheel username

hoặc:

su 

usermod -G sudo username

Thiết lập quy tắc tùy chỉnh

Hãy tạo một số quy tắc mới khi chúng ta đã quen thuộc với cú pháp chung của tệp.

Tạo Aliases

Vì việc nhóm các mục có nhiều “aliases” (bí danh) sẽ giúp việc tổ chức tệp sudoers dễ dàng hơn nên bạn có thể tạo ba nhóm người dùng khác nhau có chung thành viên. Ví dụ:

. . . 

User_Alias            GROUPONE = abby, brent, carl 

User_Alias            GROUPTWO = brent, doris, eric, 

User_Alias            GROUPTHREE = doris, felicia, grant 

. . .

Tên của các nhóm phải bắt đầu bằng một chữ in hoa. Sau đó, bằng cách thiết lập quy tắc tương tự như sau, bạn có thể cho phép các thành viên của GROUPTWO thay đổi cơ sở dữ liệu  apt:

. . . 

GROUPTWO        ALL = /usr/bin/apt-get update 

. . .

Như đã đề cập ở trên, sudo chạy với tư cách là người dùng root theo mặc định nếu bạn không chọn người dùng hoặc nhóm để chạy. Bằng cách thiết lập một “command alias” và áp dụng nó trong một quy tắc cho  GROUPTHREE, bạn có thể cho phép các thành viên của GROUPTHREE tắt và khởi động lại máy tính:

. . . 

Cmnd_Alias            POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart 

GROUPTHREE      ALL = POWER 

. . .

Tạo bí danh với lệnh có tên  POWER bao gồm hướng dẫn khởi động lại và tắt nguồn máy tính. Sau đó, chúng tôi đưa các lệnh này cho các thành viên của GROUPTHREE . Ngoài ra, bí danh “Run as” có thể được tạo để thay thế phần quy tắc chỉ định người dùng cho lệnh được thực thi dưới dạng:

. . . 

Runas_Alias            WEB = www-data, apache 

GROUPONE        ALL = (WEB) ALL 

. . .

Bất kỳ ai thuộc GROUPONEđều có thể chạy các lệnh dưới người dùng  www-data hoặc người dùng  apache nhờ điều này. Chỉ cần nhớ rằng nếu có tranh chấp giữa hai quy tắc, quy tắc sau sẽ được ưu tiên.

Tăng cường bảo mật Sudo

Bạn có thể tăng cường bảo mật Sudo của mình bằng cách bật tùy chọn use_pty. Tính năng này đảm bảo rằng sudo chạy trong sandbox, khiến phần mềm độc hại khó khai thác hơn. Tìm một phần của tệp Sudoers có dòng “Defaults” để bật tính năng này. Tiếp theo, nhấn Enter để thêm một dòng mới. Sau đó, tính năng use_pty có thể được bật bằng cách thêm đoạn mã sau.

Defaults use_pty

Nhấn Ctrl + O khi bạn hoàn tất việc chỉnh sửa.

Trong bài viết này, bạn đã biết cách chỉnh sửa tệp Sudoers và quản lý lệnh Sudo trong Linux. Hiểu lệnh sudo và tệp sudoers là điều cần thiết nếu bạn đang làm việc với nhiều người dùng. Với kiến ​​thức này, bạn sẽ có thể đọc và thay đổi tệp sudoers cũng như hiểu các cách khác nhau để có quyền truy cập root. Truy cập ngay vpschinhhang.com nếu có nhu cầu về sử dụng dịch vụ VPS Linux/Windows hay có bất kì câu hỏi nào cần giải đáp. Cảm ơn đã theo dõi bài viết!