Life would be so much simple if we don't care so much


Trong linux có 1 quyền truy cập đặc biệt được gọi là SUID(Set User ID). Trong bài này sẽ giải thích về SUID (Set User ID)

1. SUID (Set User ID) là gì?

SUID (Set User ID) là quyền truy cập đặc biệt được thiết lập với file và cho phép execute file
Thông thường, khi thực thi thì file sẽ được execute với quyền thực thi của user run file đó nhưng file được thiết lập SUID (Set User ID) thì nó được thực thi với quyền của user owner

Trong list các command được đưa vào sử dụng trong Linux, thì có command dùng để setting SUID (Set User ID). Chẳng hạn như command passwd cũng có tác dụng liên quan đến setting này.

2. Cách confirm setting SUID (Set User ID)

Có thể dùng ls -l để check xem SUID (Set User ID) có được setting hay không,

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 1月 7 2007 /usr/bin/passwd
Phần permisssion của ownership sẽ trở thành「rws」. Quyền execute file thông thường là 「x」 nhưng ở đây sẽ trở thành 「s」tức là SUID (Set User ID) đang được thiết lập.

*** Note
Command passwd để cập nhật các file /etc/passwd, /etc/shadow mà thông thường thì general user sẽ không update được.
Common user khi thưc thi command này, vì SUID đang được setting cho command passwd, sau đó thực thi với quyền root nên có thể cập nhật được các file /etc/passwd, /etc/shadow.

3. Setting SUID (Set User ID)

Để setting SUID (Set User ID) thì chỉ định command chmod như sau

chmod u+s file

Ở numeric mode trường hợp set quyền truy cập thì sẽ cộng thêm vào giá trị 4000. Chẳng han, nếu muốn setting SUID cho file thực thi có quyền truy cập 755 thì giá trị được overwrite thành 4755

chmod 4755 file

4. Các sample sử dụng

Thực tế, thử confirm các hoạt động của setting SUID (Set User ID) như dưới đây.

# id 現在rootアカウント
uid=0(root) gid=0(root) 所属グループ=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

# cp /bin/touch .  ← copy command touch
# chown user1 touch  ← set owner của command touch thành user1
# chmod u+s touch  ← setting SUID

# ls -l touch
-rwsr-xr-x 1 user1 root 42284 7月 25 12:39 touch ← setting SUID

# ./touch test.txt ← sử dụng command đã set SUID để tạo file test.txt

# ls -l test.txt
-rw-r–r– 1 user1 root 0 7月 25 12:39 test.txt ← owner của file test.txt lúc này sẽ trở thành user1
Bởi vì touch command đã được run bởi root thì owner của test.txt lúc đầu sẽ là root.
Để setting SUID cho command touch thì khi command được thực thi với owner là user1 thì owner của file được tạo ra cũng sẽ là user1.

Bài viết nguồn ở đây

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: