banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix làm thể nào để trở thành superuser trong C ?  XML
  [Question]   làm thể nào để trở thành superuser trong C ? 26/03/2011 10:47:49 (+0700) | #1 | 233985
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
smilie Mình đang tìm hiểu cách nào để trở thánh superuser trong C nhưng khó quá vì không hiểu cách nào để su được trong C?
dường như trước khi setgid và setuid phải làm cái gì đó nhưng không biết?
[Unix] live free or die
[Up] [Print Copy]
  [Question]   làm thể nào để trở thành superuser trong C ? 26/03/2011 11:02:00 (+0700) | #2 | 233986
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Cái đó không thể programming được.
Bạn hãy xem lệnh su nó có thuộc tính file ra sao nhé:

Code:
# ls -l /bin/su 
-rwsr-xr-x 1 root root 34904 Nov  3 18:43 /bin/su


Bạn có thấy chữ s ở owner exec bit ko? Cái bít chữ s đó gọi là suid. Chỉ có root mới có quyền set cho 1 file chạy có cái bit đó (chmod +s file).
Mỗi khi 1 file chạy (ví dụ a.out của chương trình C dịch ra), có được cái quyền suid, và owner là root, thì khi exec cái file đó, lập tức hệ điều hành tự chuyển ngay owner của process thành đúng owner của file kia, tức là root, rồi chạy cái file.
Nói 1 cách logic, thì khi lệnh su được thực thi, process su đấy đã là quyền root (super user) rồi.
Cách leo thang quyền của Unix/Linux là như thế. Chỉ 1 số lệnh được phép leo thang như thế và chúng được viết rất cẩn thận để hỏi root password trước khi cho thực thi việc khác, chúng là các lệnh su, sudo, passwd.

P/S: các hàm setuid và setgid chỉ có thể tự chuyển owner của process thành 1 user có quyền thấp hơn root, chứ không làm ngược lại được. Và chỉ có root hoặc tương đương mới có thể gọi 2 cái hàm đó. Tức 1 process với owner là root có thể biến thành owner bất kỳ, nhưng ngược lại thì không.
[Up] [Print Copy]
  [Question]   làm thể nào để trở thành superuser trong C ? 27/03/2011 12:07:36 (+0700) | #3 | 234038
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
thật hay để mình check lại đã. Cảm ơn nhiều
[Unix] live free or die
[Up] [Print Copy]
  [Question]   làm thể nào để trở thành superuser trong C ? 28/03/2011 11:53:31 (+0700) | #4 | 234120
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
hà hà kiếu này mình thử viết được lệnh su
[Unix] live free or die
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|