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ụ: passwd
lệ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 passwd
lệnh, thuộc về root
và 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 SETUID
lệ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 SETGID
chươ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. sendmail
là một tiện ích như vậy.
Việc sticky bit
phụ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ề /tmp
thư 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, /tmp
có 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 đó.