Chuyển đến nội dung chính

Khám phá Sudo trong Linux

Sudo là một công cụ cho phép một số user được định nghĩa trong file cấu hình /etc/sudoers có thể chạy một số lệnh xác định với quyền hạn root hoặc với quyền hạn của một user khác.
khi chạy những lệnh đó phải bắt đầu bằng từ “sudo” theo sau là cú pháp lệnh như bình thường.
Khi thực hiện lệnh người dùng được yêu cầu nhập password trước khi thực hiện chúng.
Tất cả các lệnh được chạy băng sudo sẽ bị ghi log lại trong file /var/log/messages.
file cấu hình /etc/sudoers thường được chỉnh sửa bằng lệnh visudo với quyền hạn root, nó được sử dụng giống như trình soạn thảo vi.

Bản thân sudo là một chương trình dạng setuid binary, bạn có thể xem permission của nó

---s--x--x 1 root root 81644 Jan 14 15:36 /usr/bin/sudo

s có nghĩa là “setuid”, khi đó mọi user đều có quyền chạy chương trình này. do bởi đây là một chương trình dạng setuid và owner bởi root nên các user có thể có quyền hạn root khi họ nhận được shell từ sudo, nên bạn cần thận trọng khi sử dụng sudo.

Cấu trúc file cấu hình /etc/sudoers có dạng

usernames/group target-servername = command

- tên group được phân biệt với tên user bằng ký tự % đứng đằng trước
- bạn có thể đặt nhiều user trên cùng một dòng và phân cách nhau bằng dấu phẩy.
- từ khoá ALL có nghĩa là tất cả các user, tất cả các nhóm, tất cả các lệnh, tất cả các máy.
- nếu các thiết lập dài hơn một dòng bạn có thể dùng dấu “\” để viết tiếp xuống dòng tiếp theo
- từ khoá NOPASSWD cung cấp khả năng thực thi lệnh mà không yêu cầu nhập password.

một số ví dụ:
cung cấp cho user “jim” khả năng truy cập với quyền root

# User privilege specification
root ALL=(ALL) ALL
jim ALL=(ALL) ALL

bình thương user “jim” không có khả năng xem nội dung file /etc/shadow

[jim@lnxserve jim]$ cat /etc/shadow
Permission denied

nhưng nếu thực hiện bằng sudo

[jim@lnxserve jim]$ sudo cat /etc/shadow
Password:
root:$1$bukQnNBS$dkGDMUTf1.W5r1VE4OYLy.:11595:0:99999:7:::
bin:*:11595:0:99999:7:::
daemon:*:11595:0:99999:7:::
adm:*:11595:0:99999:7:::
lp:*:11595:0:99999:7:::

password mà user “jim” nhập vào không phải là password root, điều này khiến cho người quản trị (root) biết được các hoạt động của “jim”.
Mặc định sudo nhớ password trong vòng năm phút. Do đó trong khoảng thời gian này user “jim” co thể thực hiện các thao tác khác đòi hỏi quyền root mà không cần phải nhập password.
hành động nhập password hoàn toàn có thể thay đổi nhờ cấu, ví dụ như sau

# Defaults specification
Defaults:jim timestamp_timeout=0, runaspw, passwd_tries=1

lúc này user “jim” cần phải có password để thực hiện sudo (runaswd), password không được nhớ (timestamp_timeout=0) và chỉ có thể nhập password một lần (passwd_tries=1, mặc định là ba lần).
nếu đặt timestamp_timeout = -1 thì user “jim” chỉ cần xác thực password một lần duy nhất.
những user khác nhau có thể có những thiết lập default khác nhau ví dụ

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
Defaults:jim timestamp_timeout=0
Defaults:linda timestamp_timeout=-1, runaspw


# User privilege specification
root ALL=(ALL) ALL
jim ALL=(ALL) ALL
linda ALL=(ALL) ALL
những default mà không theo sau bởi dấu “:” và tên một user thì nó được dùng cho mọi user.

cho phép user peter và tất cả các thành viên của nhóm operator truy cập tất cả các file chương trình trong thư mục /sbin, /usr/sbin và có quyền chạy script /usr/local/apps/check.pl

peter, %operator ALL= /sbin/, /usr/sbin, /usr/local/apps/check.pl

với lệnh sudo -u cho phép bạn thực hiện một lệnh với quyến hạn của một user khác, trước tiên phải gán quyền trong file /etc/sudoers.

peter ALL=(accounts) /bin/kill, /usr/bin/kill, /usr/bin/pkill

khi đó user peter có thể kill một chương trình với quyền hạn của user accounts như sau


sudo -u accounts pkill monthend

cho phép tất cả các user trong nhóm operator được phép thực thi các chương trình nằm trong thư mục /sbin.

%operator ALL= NOPASSWD: /sbin/

bằng cách sử dụng alias sudo cho phép gộp các user hay hay các lệnh cùng chức năng thành một nhóm tăng tính mềm dẻo cho việc cấu hình

Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, \
/usr/bin/ksh, /usr/local/bin/tcsh, \
/usr/bin/rsh, /usr/local/bin/zsh


User_Alias ADMINS = peter, bob, bunny, %operator
ADMINS ALL = !/usr/bin/su, !SHELLS

với cấu hình trên các user peter, bob, bunny và các user trong nhóm operator không được quyền thực hiện lệnh su và chạy các shell.

bình thường sudo chỉ gửi những lỗi xác thực cho syslog ghi vào /var/log/messages nhưng với việc thêm một khai báo default như sau:

Defaults logfile=/var/log/sudolog

sudo sẽ ghi lại mọi lệnh mà nó thực thi. Thông tin sudo ghi log lại có dạng sau

# /var/log/sudolog
Feb 24 06:56:59 : jim : TTY=tty4 ; PWD=/home/jim ; USER=root ; COMMAND=/bin/cat /etc/shadow
Feb 24 06:58:49 : jim : TTY=tty4 ; PWD=/var/log ; USER=root ; COMMAND=/bin/cat /etc/shadow

nhìn vào đây người quản trị có thể dễ dàng biết được những hoạt động của những user được gán quyền thực thi thông qua sudo.

Bài đăng phổ biến từ blog này

Bit.ly: vừa upload file vừa rút gọn link

TTO - Không chỉ "ăn đứt" TinyURL.com nhờ khả năng quản lý tất cả link rút gọn và thống kê số lượt truy cập link, Bit.ly đi trước TinyURL.com một bước khi kết nối với dịch vụ yfrog.com, cho phép người dùng upload file jpg, png, gif, bmp, tiff, swf, flv, pdf, mp4, mov, avi. Đương nhiên, sau khi upload file thành công, link sẽ được Bit.ly tự động rút gọn. Đáng tiếc là dung lượng file hỗ trợ upload hơi bị hạn chế. Theo thử nghiệm, nếu upload file lớn hơn 10MB thường bị đứt gánh giữa chừng. Bạn nên đăng ký một tài khoản miễn phí tại http://bit.ly/ để có thể khai thác hết tính năng mà Bit.ly hỗ trợ, bằng cách nhấp vào liên kết Sign Up phía trên góc phải, điền thông tin cần thiết vào ba hộp Choose a Username (tên đăng nhập; bạn sẽ cung cấp trang nhà có địa chỉ http://tênđăng nhập.bit.ly), Enter Your Email Address (địa chỉ email), Choose a Password (mật khẩu đăng nhập), rồi bấm nút Sign Up ở cuối trang để hoàn tất đăng ký và đăng nhập dịch vụ.

Gỡ bỏ phần mềm cài đặt khi không có công cụ Uninstaller

TTO - Hiện nay có rất nhiều phần mềm được cài đặt vào trong máy không kèm theo công cụ gỡ bỏ riêng (hay còn gọi là Uninstaller) để gỡ chúng khỏi hệ thống khi không cần đến nữa. Những lúc này bạn có thể tiến hành tự tay gỡ bỏ chúng theo cách thủ công dễ dàng. Bước 1: Sao lưu dữ liệu registry Nhằm tránh việc xảy ra sau khi gỡ bỏ thì bạn nên tiến hành thực hiện sao lưu registry trước tại một nơi an toàn. Để thực hiện bạn làm như sau: Vào menu Start, chọn Run và gõ vào regedit rồi nhấn Enter. Tại cửa sổ Registry Editor hiện ra, bạn nhấn vào File, chọn Export rồi khai báo nơi lưu trữ registry là xong. Bước 2: Tìm nguồn cài đặt phần mềm Để có thể gỡ bỏ một phần mềm không trang bị công cụ Uninstaller thì việc cần làm của bạn tiếp theo đó chính là tìm đường dẫn đến nơi cài đặt chúng. Để thực hiện, bạn chọn tập tin thực thi của phần mềm, click chuột phải và chọn Properties. Tại đây bạn nhấn vào tab Shorcut và nhìn vào sau trường Target sẽ là đường dẫn đến thư mục cài đặt của phần mềm. Để c

Các thủ thuật hay cho diễn đàn VBB (Phần 1)

Sau khi đã tạo một forum VBB với chức năng cơ bản, bài viết sau sẽ hướng dẫn cách để forum trở nên chuyên nghiệp, nhiều chức năng hơn. Tạo trang chủ cho forum VBB Với vBadvanced CMPS, forum của bạn sẽ có thêm một trang chủ (portal) tổng hợp các bài viết mới theo từng chuyên mục, giúp người xem có thể dễ dàng theo dõi forum. 1. Cài đặt: Tải vBadvanced CMPS 3.2.0 tại: http://www.mediafire.com/?ij2mgg3iniz . Tải về, bạn giải nén sẽ thấy có thư mục là forum, trong thư mục forum có các thư mục con là admincp, clientscript, cpstyles, images, includes, modules , bạn mở từng thư mục con ra, chép toàn bộ các file trong đó vào các thư mục tương ứng của VBB (ví dụ chép toàn bộ file trong forum/admincp vào thư mục admincp của VBB). Đồng thời cũng chép file cmps_index.php vào thư mục gốc của VBB. Mở trình duyệt, gõ vào thanh Address địa chỉ http://tên miền web/forum/admincp/vbacmps_install.php (với forum là tên thư mục chứa VBB trên host). Nếu gõ đúng đường dẫn, khung vBadvanced CMPS