Thứ Hai, 30 tháng 3, 2015

Check một bash script có chạy với user root hay không.

Lâu lâu mới viết bài, blog bắt đầu mọc rêu.
.
.
.
Bài viết được thực hiện trên:
thanhnguyen@thanhnguyen:~$ lsb_release -ir
Distributor ID: Ubuntu
Release: 12.04
thanhnguyen@thanhnguyen:~$ bash --version
bash --version
GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)
Khi chúng ta chạy một bash script, đôi lúc chúng ta cần tìm ra xem script có chạy với user root hay không... Vậy làm thế nào để biết được điều này?


Khi một user được tạo, user đó sẽ được gán một User ID (UID). Bash shell lưu trữ UID này trong biến "UID". Vậy để xác nhận xem script được chạy dưới quyền user nào, chỉ cần check $UID là ok.
Dễ dàng check được UID của user root là 0:
root@thanhnguyen:~# echo $UID
0

Một ví dụ ứng dụng đơn gia?n:
# Check script is being run by root user or not.
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi
Mở rộng:
Tương tự User ID, tên user được bash shell lưu trữ trong biến $USER và $USERNAME.
root@thanhnguyen:~# echo $USER
root
root@thanhnguyen:~# echo $USERNAME
root


2 nhận xét:

  1. cần phân biệt UID và EUID.

    Trả lờiXóa
    Trả lời
    1. và phiên bản bash thực hiện bài viết này, vì các biến này chỉ có ở một số phiên bản nhất định.

      Xóa