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 Thắc mắc về SGID và sudo  XML
  [Question]   Thắc mắc về SGID và sudo 20/12/2007 15:22:46 (+0700) | #1 | 104923
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
1. Tôi làm một phép thử với SGID như sau:

+ Login với user quanta, tôi tạo một file yourscript.sh có nội dung:
Code:
#!/bin/bash
echo "test" >> yourlog.log

File yourscript.sh này có permission là:
-rwxrwxr-x 1 quanta quanta 

+ chmod yourscript.sh và chạy nó lần đầu tiên để tạo file yourlog.log:
Code:
$ sudo chmod +x yourscript.sh
$ sh yourscript.sh
Bây giờ tôi đã có file yourlog.log, permission của nó là:
-rw-rw-r-- 1 quanta quanta 

Bạn để ý là những user khác không cùng nhóm với quanta sẽ không có quyền write trên file này
+ Tiếp theo, tôi thử SGID cho yourscript.sh:
Code:
$ sudo chmod g+s yourscript.sh

Rồi login sang một user khác không cùng nhóm với quanta và chạy xem sao. Về lý thuyết thì tôi đã echo được "test" thêm vào yourlog.log nhưng test thử thì bị Permission denied. Vấn đề này có phải do bash shell drop permission không hay còn liên quan gì đến EUID, mong mọi người giải thích giúp

2. Mọi người đều biết: sudo cho phép một người dùng bình thường có thể thực thi một lệnh với đặc quyền superuser hoặc root. Trong /etc/sudoers tôi thêm:
quanta ALL=(ALL) ALL 

Login với root, tôi tạo một file test.log với permission như sau:
-rw-rw-r-- 1 root root 

Sau đó login sang user quanta (không thuộc root group), và thử:
Code:
$ sudo echo "sudo troubleshoot" >> test.log

thì gặp:
bash: test.log: Permission denied 

Nhờ mọi người giải thích và thảo luận thêm về trường hợp này
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Thắc mắc về SGID và sudo 20/12/2007 19:13:34 (+0700) | #2 | 104932
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
1) Vấn đề ở chỗ login sang một user khác và user này thuộc nhóm nào? Nhóm ấy có quyền gì đến log file kia?

2) Không hiểu ý em.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: Thắc mắc về SGID và sudo 20/12/2007 23:30:17 (+0700) | #3 | 104955
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

conmale wrote:
1) Vấn đề ở chỗ login sang một user khác và user này thuộc nhóm nào?
 

OK, em đã sửa lại thành "và login sang một user khác không cùng nhóm với quanta"

conmale wrote:

Nhóm ấy có quyền gì đến log file kia? 

Cái này đã trả lời rồi anh:

quanta wrote:

...
Bây giờ tôi đã có file yourlog.log, permission của nó là:
-rw-rw-r-- 1 quanta quanta  

Bạn để ý là những user khác không cùng nhóm với quanta sẽ không có quyền write trên file này
 
2) Không hiểu ý em. 
Ý em hỏi:
1. sudo có change EUID của người đang chạy nó không?
2. Tại sao trong trường hợp này: đã dùng sudo rồi mà vẫn không đủ permission để wwwect một đoạn text vào test.log?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Thắc mắc về SGID và sudo 21/12/2007 00:47:43 (+0700) | #4 | 104977
pearltran
Member

[Minus]    0    [Plus]
Joined: 15/08/2007 13:10:08
Messages: 33
Offline
[Profile] [PM]
1) SGID và SUID chỉ được ứng hiệu khi user có euid=0 còn không thì kể file đó có bật SGID thì vẫn bị bashdrop permission.Trong trường hợp trên thì user có euid #0 nên SGID không có hiệu lực
[Up] [Print Copy]
  [Question]   Re: Thắc mắc về SGID và sudo 24/12/2007 01:17:09 (+0700) | #5 | 105527
[Avatar]
lihavim
Elite Member

[Minus]    0    [Plus]
Joined: 08/06/2004 15:19:32
Messages: 506
Offline
[Profile] [PM]
2.
Vấn đề này là do chỉ mỗi thằng echo có quyền do sudo đưa cho, còn việc wwwect thì không, do đó dẫn đến việc không có quyền.
Để giải quyết việc này, có một số cách như sau:

1/Như http://notfaq.wordpress.com/2007/09/26/unixlinux-wwwect-output-as-sudo/.
Dùng:
Code:
$sudo bash -c “echo "sudo troubleshoot" >> test.log"


2/Dùng tee.
Code:
$echo "sudo troubleshoot" | sudo tee -a  test.log


3/Cách luộm thuộm smilie.
Thảy tất cả vô 1 cái bash script, cho quyền chạy rồi xài sudo thoải mái smilie .


Góp ý chút về cách dùng sudo trong phần 1: Vì yourscript.sh đã có quyền là
-rwxrwxr-x 1 quanta quanta  

Nên user quanta dùng sudo khi chmod là không cần thiết.
[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|