Chúng tôi có hình ảnh Linux dựa trên RH; trên đó tôi phải "áp dụng" một số "kho lưu trữ đặc biệt" để nâng cấp chúng lên phiên bản phát triển mới nhất của sản phẩm.
Người tạo kho lưu trữ cho rằng trong hình ảnh cơ sở của chúng tôi, một số quyền là sai; vì vậy chúng tôi được yêu cầu chạy
sudo chgrp -R nobody /whatever
Chúng tôi đã làm điều đó; và sau này, khi ứng dụng của chúng tôi đang chạy, các vấn đề tối nghĩa đã xuất hiện.
Những gì tôi tìm thấy sau này: lệnh gọi chgrp sẽ xóa thông tin bit setuid trên các nhị phân của chúng tôi trong / bất cứ điều gì.
Và vấn đề thực tế là: một số nhị phân của chúng ta phải cài đặt bit setuid đó để hoạt động đúng.
Câu chuyện dài: có cách nào để chạy lệnh "chgrp" đó mà không giết các bit setuid của tôi không?
Tôi chỉ chạy như sau trên Ubuntu cục bộ của tôi; dẫn đến kết quả tương tự:
mkdir sticky
cd sticky/
touch blub
chmod 4755 blub
ls -al blub
-> hiển thị cho tôi tên tệp với nền đỏ -> vì vậy, yep, setuid
chgrp -R myuser .
ls -al blub
-> hiển thị cho tôi tên tệp không có nền đỏ -> setuid đã biến mất
setuid
bit, không phải sticky
bit. (2) Không xóa setuid
bit khi bạn làm chgrp
hoặc chown
sẽ là một vấn đề bảo mật.
4XXX
bit được gọi là setuid bit (s
), không dính. Chú ý làt
bit và mục đích của nó hơi khác một chút: en.wikipedia.org/wiki/Sticky_bit