Tải bản đầy đủ (.docx) (3 trang)

Thiết lập quyền, phân quyền trong linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (88.93 KB, 3 trang )

Bây giờ ta sẽ xem làm cách nào để thiết lập cho sudo biết “ai được làm gì”.
Cú pháp của file /etc/sudoers
Như đã nói ở trên, đây là file chứa tất cả những thiết lập cho sudo. Nội dung trong file này
thường được đặc tả bằng cú pháp sau:
USER HOSTNAME=(TARGET-USERS) COMMAND
Trong đó:
• USER: Tên của người sử dụng
• HOSTNAME: Tên máy mà luật được áp dụng lên. Tham số này cần thiết vì sudo được
thiết kế để bạn có thể dùng một file sudoers cho các máy khác. Lúc này sudo sẽ xem máy
đang chạy được dùng các luật nào. Nói cách khác, bạn có thể thiết kế các luật cho từng
máy trong hệ thống.
• TARGET-USERS: Tên người dùng đích cho “mượn” quyền thực thi.
• COMMAND: Tên “lệnh” (thực ra là các chương trình thực thi) mà người dùng được
quyền thực thi với bất kỳ tham số nào mà họ muốn. Tuy nhiên bạn cũng có thể đặc tả các
tham số của lệnh (bao gồm các dấu thay thế wildcards). Ngược lại, có thể dùng kí hiệu “”
để ám chỉ là lệnh chỉ được thực thi mà không có tham số nào cả.
• Nếu là cấp quyền cho group, ta thay tham số USER bằng %GROUP
Xem thêm “man sudoers” để biết cú pháp chi tiết hơn.
Thiết lập cho sudo
Sau khi biết cú pháp của file sudoers, ta sẽ tiến hành thiết lập cho sudo bằng cách soạn thảo file
này. Để mở file sudoer lên và soạn thảo, ta dùng lệnh sau:
# visudo
(ký hiệu # cho biết lệnh này được thực thi với quyền root)
Trên Ubuntu, các giá trị mặc định trong file sudoers gồm có:
Defaults !lecture,!tty_tickets,!fqdn
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
Những khai báo trên được giải thích như sau:
• Chỉ thị Default cho biết những tham số được khai báo mặc định cho hoạt động của sudo
(sudo hoạt động với rất nhiều tham số, xem man sudoers để biết ý nghĩa của chúng),
trong đó:


o lecture là cờ điều khiển chế độ xuất một đoạn văn bản giống như “welcome” khi
sudo được sử dụng. Với khai báo !lecture nghĩa là cờ này bị off, không được sử
dụng. Khi sử dụng, cờ này có ba giá trị: “never” (chẳng bao giờ xuất văn bản),
“once” (xuất văn bản ở lần sử dụng sudo đầu tiên), “always” (xuất văn bản bất cứ
khi nào dùng sudo) trong đó “once” là giá trị mặc định. Chẳng hạn khi bật lên ở
chế độ thường trực (always) thì khai báo như sau:lecture=”always”, và mỗi lần
bạn dùng sudo sẽ thấy như sau:training@honey:/home/t3318$ sudo apt-get
clean
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for training:>
o tty_tickets là cờ cho biết sudo sẽ xác thực user theo từng “tty”. Điều này có nghĩa
là nếu bật cờ này lên, mỗi khi bạn mở một console hay terminal khác và sử dụng
sudo thì phải gõ mật khẩu lại, cho dù bạn có nằm trong timestamp 5 phút hay
không. Nếu tắt cờ này đi, trong thời gian 5 phút bạn có thể dùng sudo mà không
phải gõ mật khẩu, cho dù ở tty nào. Cờ này có giá trị boolean, “true” hoặc “false”.
o fqdn là cờ báo hiệu có cần phải khai báo tên máy đầy đủ trong file sudoers hay
không. Nghĩa là nếu bật cờ này lên thì trong phần hostname, thay vì ghi
kythuatmaytinh, bạn phải ghi đầy đủ kythuatmaytinh.wordpress.com. Cờ này
cũng có giá trị boolean.
o Như vậy ta có thể thấy Ubuntu thiết lập mặc định cho cơ chế sudo của mình là:
không xuất văn bản khi dùng sudo, không xác nhận theo tty và không cần phải
khai báo tên domain đầy đủ trong file sudoers.
• Chỉ thị ” root ALL=(ALL) ALL” tuân theo đúng cú pháp thường gặp, có nghĩa là người
dùng root, trên tất cả các máy, có thể mượn quyền tất cả các người dùng, để thực thi tất
cả các lệnh.
• Chỉ thị “%admin ALL=(ALL) ALL” cũng tuân theo cú pháp đó, có nghĩa là nhóm người

dùng admin, trên tất cả các máy, có thể mượn quyền tất cả các người dùng, để thực thi tất
cả các lệnh.
Giả sử ta muốn cho thêm người dùng user1 được phép tắt máy của mình, ta thêm vào dòng:
user1 localhost=/sbin/shutdown
Nếu không khai báo rõ (target-users), sudo sẽ tự gán cho người triệu gọi sudo quyền owner của
lệnh đó.
Ta cho phép người dùng monitor được phép khởi động lại apache server trên máy linux01 như
sau:
monitor linux01= /etc/init.d/apache2 restart
Bây giờ ta có thể copy file sudoer này lên máy linux01 để áp dụng luật cho user monitor.
Save file lại bằng tổ hợp phím Ctrl-O và thoát ra bằng tổ hợp phím Ctrl-X, lúc này các rule đã có
tác dụng.
Một số ví dụ thực tế khác
a) Cho phép user subadmin được thực thi nhiều lệnh với quyền root
subadmin ALL=(root) /sbin/shutdown, /bin/kill, /etc/init.d/httpd
b) Cho phép user subadmin được tắt máy mà không cần phải xác nhận bằng mật khẩu
subadmin localhost= NOPASSWD: /sbin/shutdown
c) Cho phép user subadmin được thực hiện bất kỳ lệnh nào trong /usr/bin ở máy linux01
subadmin linux01 = /usr/bin/*

×