<![CDATA[Latest posts for the topic "Một chút về SUID/SGID"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Một chút về SUID/SGID passwd, password mới của bạn được lưu trong /etc/shadow. Với người dùng bình thường, bạn không thể có quyền đọc và ghi file này vì lý do bảo mật, nhưng khi bạn thay đổi password bạn cần phải có quyền ghi file này. Điều này có nghĩa là chương trình passwd sẽ gửi thêm quyền cho bạn và bạn có thể “write” /etc/shadow
$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 25604 2007-04-05 15:54 /usr/bin/passwd  
SUID và SGID sẽ xuất hiện với chữ “s” nếu quyền được gán. Trong lệnh này, bạn sẽ thấy là SUID bit được gán, và lệnh này được owned bởi root Những quyền được gửi thêm đưa tới cho chương trình là một cơ chế được biết đến với tên gọi: Set User ID (SUID) và Set Group ID (SGID). Khi bạn thi hành một chương trình với SUID bit được enables, bạn sẽ được kế thừa quyền của user hoặc group sở hữu chương trình đó mà không phải là quyền của user đang chạy nó Để thực hiện SUID/SGID cho một file, bạn có thể: Code:
chmod u+s /full/path/to/filename
chmod g+s /full/path/to/filename
2. Định danh SUID=root Cách đơn giản nhất để định danh những file nào có SUID và SGID bit được set, là sử dụng lệnh find. Để tìm tất cả các regular file có root owner, bạn có thể sử dụng lệnh sau: Code:
find / -perm +4000 -user root -type f -print
find / -perm +2000 -group root -type f -print
Nếu bạn muốn một file không cần thiết phải chạy với SUID hoặc SGID nữa bạn có thể sử dụng: Code:
chmod u-s /full/path/to/filename
chmod g-s /full/path/to/filename
Lệnh này sẽ replace quyền SUID/SGID bằng quyền x (execute) thông thường – file này sẽ vẫn được thi hành nhưng không phải với quyền của owner/group của nó. ]]>
/hvaonline/posts/list/16026.html#95852 /hvaonline/posts/list/16026.html#95852 GMT
Re: Một chút về SUID/SGID /hvaonline/posts/list/16026.html#95867 /hvaonline/posts/list/16026.html#95867 GMT Một chút về SUID/SGID Code:
-rw-r--r-- 1 root       root        56 Nov  3 11:01 abc
-rwsr-sr-x 1 root       root       294 Nov  3 11:13 root.sh
Nội dung của file root.sh chứa lệnh: echo `date` >> abc Tuy nhiên khi em thực thi file root.sh với quyền người dùng bình thường thì không sửa thành công file abc mà báo lỗi: Code:
$ ./root.sh 
./root.sh: 8: ./root.sh: cannot create abc: Permission denied
Em hiện đang dùng HĐH Ubuntu 12.04. Anh và mọi người có thể giải thích tại sao khi em chạy file root.sh nó lại không thực thi thành công không ạ? ]]>
/hvaonline/posts/list/16026.html#270704 /hvaonline/posts/list/16026.html#270704 GMT
Một chút về SUID/SGID

heroandtn3 wrote:
Chào anh quanta, Em đã đọc một số bài viết về SUID và SGID cũng như bài viết của anh và biết được rằng khi 1 file được gán SUID thì lúc thực thi, file đó sẽ được thực thi y như khi thực thi dưới quyền ower của nó. Em cũng đọc thử một vài ví dụ nhưng khi làm theo thì không thành công. Em có 2 file như sau: Code:
-rw-r--r-- 1 root       root        56 Nov  3 11:01 abc
-rwsr-sr-x 1 root       root       294 Nov  3 11:13 root.sh
Nội dung của file root.sh chứa lệnh: echo `date` >> abc Tuy nhiên khi em thực thi file root.sh với quyền người dùng bình thường thì không sửa thành công file abc mà báo lỗi: Code:
$ ./root.sh 
./root.sh: 8: ./root.sh: cannot create abc: Permission denied
Em hiện đang dùng HĐH Ubuntu 12.04. Anh và mọi người có thể giải thích tại sao khi em chạy file root.sh nó lại không thực thi thành công không ạ?  
File root.sh của bạn là một file script, không phải file binary, do đó nó cần interpreter để thực thi kịch bản bên trong nó. Nghĩa là khi bạn ./root.sh thì thực ra lệnh đó sẽ được run như sau: Code:
/bin/sh root.sh

hoặc

/bin/bash root.sh
Bật SUID cho sh/bash và thử lại xem :D]]>
/hvaonline/posts/list/16026.html#270705 /hvaonline/posts/list/16026.html#270705 GMT
Một chút về SUID/SGID /hvaonline/posts/list/16026.html#270706 /hvaonline/posts/list/16026.html#270706 GMT Một chút về SUID/SGID http://www.linuxquestions.org/questions/linux-security-4/suid-bit-on-executables-doesnt-work-247215/#post1259013) mà chỉ được áp dụng cho các file binary hoặc (hình như cả) Perl Script. Em đã thử gọi ./root.sh trong 1 chương trình C, sau đó biên dịch và set SUID cho file thực thi được dịch ra và nó đã làm việc. Code:
#include <stdio.h>
/* Filename: root.c */
int main() {
	system("./root.sh");
	return 0;
}
$ gcc root.c $ chown root a.out $ chmod u+s a.out $ ./a.out ]]>
/hvaonline/posts/list/16026.html#270707 /hvaonline/posts/list/16026.html#270707 GMT