[ShellScript] Làm sao để kiểm tra user chạy shell script là user root hay không ?

E hèm, khi bạn lập trình shell script sử dụng trong hệ thống Linux dành cho các tác vụ tự động, hoặc thống kê tài nguyên hệ thống,… thì đôi khi các chương trình lệnh trong script cần phải được chạy dưới quyền user root hoặc user cấp cao như root mới có kết quả.

Vậy bạn có nhu cầu cần kiểm tra user đang chạy script có phải là user root hay không ? Nếu không phải thì không tiếp tục nữa. Ok dựa trên nhu cầu cực kì đơn giản đó chúng ta sẽ đến với phần thảo luận đơn giản sau :

Làm thế nào để kiểm tra user chạy script là user root hay không ?

Như các bạn đã biết thì mỗi user đều có một User ID (UID) riêng biệt và độc nhất dành cho user đó, các bạn có thể kiểm tra tại file ‘/etc/passwd’. Bash shell sẽ lưu trữ thông tin UID user tương ứng ở 1 biến môi trường có tên là $UID $EUID. Bạn cũng có thể dùng chương trình khác như ‘id’ để kiểm tra danh tính mà user đang chạy shell,..

Ok vậy nội dung script đơn giản sẽ như sau, phần nội dung râu ria mình không ghi cụ thể nhé, các bạn tự sáng tạo ra :

1. Cách 1 – ‘id’

– Sử dụng chương trình ‘id‘ để trích xuất thông tin UID user rồi so sánh.

#!/bin/bash
# ....
# ....
# ....

# Dam bao rang chi co user root moi duoc thuc thi script
if [ "$(id -u)" != "0" ]; then
   echo "Chi co the chay script nay duoi quyen user root !" 1>&2
   exit 1
else echo "User dang chay la user root! Dung roi !"
fi

# ...

 
2. Cách 2 – ‘$UID’

– Sử dụng biến môi trường chứa thông tin UID của user $UID hoặc $EUID để so sánh.

#!/bin/bash
# ....
# ....
# ....

# Dam bao rang chi co user root moi duoc thuc thi script
if [[ $EUID -ne 0 ]]; then
   echo "Chi co the chay script nay duoi quyen user root !" 1>&2
   exit 1
else echo "User dang chay la user root! Dung roi !"
fi

# ...

 
3. Kiểm tra

– Bạn thử kiểm tra nội dung đơn giản trên xem nào. Nội dung code cơ bản trên mình để trong file ‘demo.sh‘ nhé.

# id
uid=0(root) gid=0(root) groups=0(root)
# ./demo.sh
User dang chay la user root! Dung roi !

 
– Chuyển sang user khác để chạy script.

# su - user1
# id
uid=501(user1) gid=501(user1) groups=501(user1)
# ./demo.sh
Chi co the chay script nay duoi quyen user root !

 
Ok, vậy là xong bài note nhỏ cho các bạn newbie mới tiếp cận học bash script nhé.

Previous articleTài liệu tiếng việt sử dụng OllyDBG dùng để crack phần mềm (PDF)
Next article[Tech] Kaspersky ra mắt hệ điều hành siêu bảo mật mang tên Kaspersky OS
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !