GID có nghĩa là gì?


14

GID thực sự có nghĩa là gì?

Tôi đã Googled nó và đây là những gì linux.about.com đã nói:

Số nhận dạng nhóm cho quá trình. Số nhóm hợp lệ được cung cấp trong /etc/groupvà trong trường GID của /etc/passwdtệp. Khi một quy trình được bắt đầu, GID của nó được đặt thành GID của quy trình mẹ.

  • Nhưng điều đó có nghĩa gì?

Các quyền tôi có cho thư mục của tôi hiện đang ở 0755

Tôi hiểu nếu tôi đặt UID cho Chủ sở hữu thì nó sẽ là 4755

Và nếu tôi đặt GID của Nhóm thì nó sẽ là 2755

Nếu tôi đặt Bit dính cho người khác, nó sẽ là 1755

  • Nó thậm chí còn quan trọng để thiết lập các quyền đó?

Câu trả lời:


27

Mỗi quá trình trong một tựa UNIX hệ thống, giống như tất cả các tập tin, có một chủ sở hữu (người dùng, hoặc là thật hay một hệ thống "giả sử dụng", chẳng hạn như daemon, bin, man, vv) và một nhóm chủ sở hữu. Chủ sở hữu nhóm cho các tệp của người dùng thường là nhóm chính của người dùng đó và theo cách tương tự, mọi quy trình bạn bắt đầu thường được sở hữu bởi ID người dùng và ID nhóm chính của bạn.

Đôi khi, mặc dù, cần phải có các đặc quyền nâng cao để chạy các lệnh nhất định, nhưng không mong muốn cung cấp đầy đủ quyền quản trị. Ví dụ: passwdlệnh cần truy cập vào tệp mật khẩu bóng của hệ thống, để nó có thể cập nhật mật khẩu của bạn. Rõ ràng, bạn không muốn cung cấp cho mọi người dùng quyền root, để họ có thể đặt lại mật khẩu - điều đó chắc chắn sẽ dẫn đến sự hỗn loạn! Thay vào đó, cần có một cách khác để tạm thời cấp đặc quyền nâng cao cho người dùng để thực hiện một số tác vụ nhất định. Đó là những gì các bit SETUID và SETGID dành cho. Đó là một cách để bảo kernel tạm thời nâng cao các đặc quyền của người dùng, trong suốt thời gian thực hiện lệnh được đánh dấu. Một nhị phân SETUID sẽ được thực thi với các đặc quyền của chủ sở hữu tệp thực thi (thường làroot) và nhị phân SETGID sẽ được thực thi với các đặc quyền nhóm của chủ sở hữu nhóm của tệp thực thi. Trong trường hợp passwdlệnh, thuộc về rootvà là SETUID, nó cho phép người dùng bình thường ảnh hưởng trực tiếp đến nội dung của tệp mật khẩu, theo cách được kiểm soát và dự đoán bằng cách thực thi với quyền root. Có rất nhiều khác SETUIDlệnh trên UNIX-like hệ thống ( chsh, screen, ping, su, vv), tất cả đều đòi hỏi phải nâng đặc quyền để hoạt động một cách chính xác. Ngoài ra còn có một vài SETGIDchương trình, trong đó kernel tạm thời thay đổi GID của tiến trình, để cho phép truy cập vào logfiles, v.v. sendmaillà một tiện ích như vậy.

Việc sticky bitphục vụ một mục đích hơi khác nhau. Công dụng phổ biến nhất của nó là đảm bảo rằng chỉ tài khoản người dùng đã tạo tệp mới có thể xóa nó. Hãy suy nghĩ về /tmpthư mục. Nó có quyền rất tự do, cho phép bất cứ ai tạo tập tin ở đó. Đây là tốt, và cho phép các tiến trình của người sử dụng để tạo ra các file tạm thời ( screen, ssh, vv, giữ thông tin trạng thái trong /tmp). Để bảo vệ các tệp tạm thời của người dùng, /tmpcó bộ bit dính, để chỉ tôi mới có thể xóa các tệp của mình và chỉ bạn mới có thể xóa tệp của mình. Tất nhiên, root có thể làm bất cứ điều gì, nhưng chúng ta phải hy vọng rằng sysadmin không bị loạn trí!

Đối với các tệp thông thường (nghĩa là đối với các tệp không thể thực thi), có rất ít điểm trong việc thiết lập các bit SETUID / SETGID. SETGID trên các thư mục trên một số hệ thống kiểm soát chủ sở hữu nhóm mặc định cho các tệp mới được tạo trong thư mục đó.


2
Ah tuyệt vời, cảm ơn vì điều đó. Vì vậy, Bit dính giống như một quyền cá nhân (người dùng)? Câu trả lời đó cũng được diễn đạt và dễ hiểu.
Kevdog777

1
Cảm ơn bạn! Các bit dính cung cấp một chút bảo vệ cho các tệp trong một thư mục có quyền tự do. Nó không thực sự cụ thể đối với một người dùng nhất định, vì cùng một mức độ bảo vệ được dành cho tất cả các tệp, bất kể chủ sở hữu là ai. Đó là một cách để cho phép bất cứ ai tạo tệp và để đảm bảo chỉ chủ sở hữu mới có thể phá hủy chúng.
D_Bye

+1, D_bye, bạn có thể vui lòng chia sẻ một ví dụ cho tập bit setgid trên thư mục. Cảm ơn
Ankit

1
@Ankit Theo Solaris (và gần như chắc chắn là những người khác - Tuy nhiên, tôi chỉ sử dụng * BSD và Solaris), nếu bit setgid được đặt trên một thư mục, mọi tệp mới được tạo trong thư mục đó sẽ có cùng chủ sở hữu nhóm với chính thư mục đó và sẽ không kế thừa nhóm chính của (người dùng đang chạy) quá trình tạo.
D_Bye

3

Tôi nghĩ bạn có nghĩa là bit "SGID" của một tệp, không giống với GID của nó.

Đây là một tệp điển hình trên máy tính của tôi (đầu ra của ls -l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

Nếu bạn nhìn vào 10 biểu tượng đầu tiên,

(a) -: Đây chỉ là một tệp cũ đơn giản (trái ngược với thư mục, symlink, pipe, v.v.)

(b) rw-: Chủ sở hữu có thể đọc và viết tệp này, nhưng không thực hiện nó. Chủ sở hữu là "súng lục" như bạn có thể thấy sau này trong dòng.

(c) r--: Thành viên của nhóm tệp này thuộc về ("người dùng" trong ví dụ) ngoài chủ sở hữu có thể đọc, nhưng không ghi hoặc thực hiện tệp này.

(d) ---: Bất kỳ ai khác không thể truy cập tệp này (trừ khóa học gốc).

Trường GID là trường cho bạn biết tệp này thuộc về nhóm nào - trong trường hợp này là "người dùng".

Trường mà bạn có thể có nghĩa, dựa trên mô tả của bạn, là bit SGID và đây là một lời giải thích tốt hơn tôi có thể đưa ra:

http://www.codecoffee.com/tipsforlinux/articles/028.html

Phiên bản ngắn là: nếu một tệp thực thi có tập bit SGID, thì bất kỳ ai không thuộc nhóm nhưng có thể thực thi tệp này tạm thời có quyền của nhóm này trong khi chương trình đang thực thi.

Ví dụ: nếu bạn có một nhóm "spool" có thể đọc và ghi tệp trong thư mục bộ đệm in, bạn không muốn bất cứ ai làm phiền với thư mục này nhưng bạn muốn họ có thể in tệp, bạn có thể thực hiện một số chương trình in hoặc tập lệnh có nhóm "spool" và thiết lập bit SGID và khi bất kỳ ai khởi chạy chương trình này, chương trình có thể ghi vào thư mục bộ đệm mà không cần người chạy nó có quyền truy cập đầy đủ.


Điều đó là tốt, cảm ơn bạn vì điều đó. Tôi hiểu phần quyền, (phần abbbcccddd) - nhưng đó là bạn :)
Kevdog777

Tôi vừa thấy quyền của tôi trên thư mục tmp là drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Không những gì abbbcccddt(chữ 't') nghĩa là gì? - Tôi hiểu rằng "d = thư mục", "rwx = đọc, viết, thực thi"; nhưng tôi chưa bao giờ thấy 't' ở cuối. Là sự cho phép đặc biệt cho thư mục tmp?
Kevdog777

Nhỏ t là "tập thực thi (x) và tập bit dính". Xem ở trên để giải thích lý do tại sao điều này là bình thường trên / tmp.
Bristol

3

GID là, như bạn đã tìm thấy, số ID của một nhóm. Nó chỉ đơn giản là một cách thuận tiện để HĐH thể hiện nhóm (người dùng) được liên kết với một cái gì đó (một quy trình, một tệp, v.v.); thay vì một định danh chuỗi dài có khả năng, nó có thể được biểu thị dưới dạng số kích thước cố định.

Trong giá trị quyền của tệp gồm bốn chữ số bát phân (ví dụ: 0755), chữ số thứ ba chỉ định quyền của nhóm đối với tệp. Nếu bạn bỏ qua chữ số đầu tiên, đó là chữ số thứ hai chỉ định các quyền của nhóm. Lưu ý rằng các tệp và thư mục được xử lý như nhau về vấn đề này, nhưng ý nghĩa chính xác của từng bit quyền là hơi không trực quan trong trường hợp thư mục.

Hai khái niệm có liên quan, nhưng phục vụ các mục đích rất khác nhau.

Đối với câu hỏi của bạn "việc đặt các quyền đó có quan trọng không?"; chúng luôn được đặt thành một cái gì đó , nhưng trong hầu hết các trường hợp, chữ số ban đầu là 0 ("không có gì đặc biệt"), nó có xu hướng bị bỏ qua cho ngắn gọn. Việc bạn có cần chỉ định một số giá trị khác hay không hoàn toàn phụ thuộc vào mẫu sử dụng cho tệp hoặc thư mục được đề cập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.