Bài viết này sẽ nói về lệnh sudo và cách để các bạn có thể tạo một user mới với quyền truy cập sudo trong Linux. Các ví dụ sau được thực hiện trên bản phân phối CentOS.
1. Lệnh “sudo”
Lệnh “sudo” cho phép người quản trị hệ thống uỷ quyền cho một thành viên có thể thực hiện chạy một số lệnh nào đó trong hệ thống dưới dạng chủ hoặc người dùng khác.
2. Cách cấu hình cho phép user dùng lệnh sudo
Để cấu hình cho một user trước hết chúng ta cần đăng nhập với tư cách là user root.
Bước 1: Dùng lệnh useradd để thêm user vào hệ thống:
useradd username
Bước 2: Dùng lệnh passwd để cập nhật pass cho user vừa tạo:
passwd username
Mật khẩu phải đủ mạnh và xác nhận lại mật khẩu.
Đối với CentOS 7 , mặt định tất cả các user trong wheel được cấp quyền sudo.
Bước 3: Dùng lệnh usermod để thêm user vừa tạo vào nhóm wheel
usermod -aG wheel username
Bước 4: Truy cập vào sudo trên user mới
- Dùng lệch su để chuyển tới user mới:
su username
- Gõ lệch sudo trước lệch bạn muốn chạy với quyền superuseer:
sudo command_to_run
- Trong lần đầu tiên thực hiện lệnh sudo thì bạn sẽ nhập mật khẩu của user:
Ví dụ: Xem thư mục của user /root:
Hiển thị thành phần trong thư mục của user /root vốn dĩ chỉ được thực hiện ở user root:
sudo ls -la /root
Khi user của bạn được thêm vào nhóm wheel thì lệnh của bạn được thực thi dưới quyền root.
Trên đây là cách cấu hình cho một user sử dụng tất cả các lệnh tương ứng với user root. Trong một số tường hợp thì quản trị viên chỉ cho user dùng lệnh sudo để thực hiện một vài lệnh thì chúng ta có cách cấu hình trong file cấu hình visudo.
Muốn cho user dùng lệnh sudo thực hiện 1 lệnh nào đó ta chỉ cần cấu hình vào file visudo.
Thêm quyền poweroff cho user:
Thêm quyền poweroff cho user2 dùng sudo để tắt máy trong file visudo:
Cấu hình cho user dùng lệnh sudo:
Cấu hình cho user dùng lệnh sudo để thực hiện 1 vài lệnh hoặc toàn bộ lệnh tương ứng với user root:
Cho phép user1 được thực thi nhiều lệnh với quyền root
user1 ALL=(root) /sbin/shutdown, /bin/kill, /etc/init.d/httpd.
Cho phép user1 được tắt máy mà không cần phải xác nhận bằng mật khẩu
user1 localhost= NOPASSWD: /sbin/shutdown.
Cho phép user1 được thực hiện bất kỳ lệnh nào trong /usr/bin ở máy linux01.
user1 linux01 = /usr/bin/*
3. Ví dụ trường hợp dùng lệnh “sudo” thực tế
Dùng sudo để xoá hoặc thêm một user hoặc một nhóm
sudo useradd username
sudo userdel username
sudo groupadd anewgrou
sudo groupdel anewgroup
Dùng sudo chạy các lệnh với tư cách người dùng khác - không chỉ người dùng root
Hầu hết mọi người sử dụng sudo để chạy các lệnh dưới dạng root, nó cũng cho phép bạn chạy các lệnh như những người dùng khác. Chỉ cần sử dụng tùy chọn -u
với lệnh sudo
và chỉ định tên người dùng.
sudo -u username whoami
Dùng lệnh sudo
để update các bản cập nhật mới:
sudo yum update
Nếu không có sử dụng sudo khi user khác được cấu hình toàn bộ lệnh của user root sẽ không cập nhật được. Ví dụ vế vấn đề này:
Dùng sudo chuyển sang user root:
sudo -i -u root
Khi dùng sudo để chuyển từ user hiện tai vào user root thì không cần dùng mật khẩu của user root. Nhờ thế tài khoản root sẽ an toàn hơn.
Sửa tệp /etc/sudoers
bị hỏng:
Tệp /etc/sudoers có thể giữ cho sudo không hoạt động và thực sự gây rối cho bạn. Vì thế, có một số cách xung quanh điều này mà không liên quan đến nhiều công việc, và lệnh visudo cung cấp một số chi tiết về các vấn đề cần phải được cố định.
Vấn đề:
Cách fix:
pkxec visudo
Ngoài ra, bạn cũng có thể thực hiện trình chỉnh sửa file theo nhu cầu cần thiết của bạn:
sudo vim /file