Làm cách nào để xóa quyền của người dùng trên một thư mục trong Linux?


24

Tôi có một thư mục hiển thị với mặt nạ cấp phép drwsrwsr-x. Khi tôi cố gắng thiết lập lại quyền cho 755S vẫn còn.

"S" là gì và tại sao tôi không thể thay đổi quyền trở lại thành 775 ( drwxrwxr-x)?

Câu trả lời:


25

Các s bạn đang thấy ở vị trí "thực thi" trong cột người dùng và nhóm là các bit SetUID (Đặt ID người dùng khi thực thi) và SetGID (Đặt ID nhóm khi thực thi).

Quyền truy cập tệp Unix thực sự là một số bát phân gồm 4 chữ số SUGO

  • S kiểm soát các bit SetUID (4), SetGID (2) và "Dính" (1)
  • Điều khiển U Đọc (4) / Ghi (2) / Thực thi (1) bit cho chủ sở hữu tệp
  • G kiểm soát các bit Đọc / Ghi / Thực thi cho nhóm của tệp
  • O kiểm soát các bit Đọc / Ghi / Thực thi cho mọi người khác.

Bạn có thể xóa các bit setuid khỏi thư mục của mình bằng chmod ug-s directory, hoặcchmod 0755 directory

Để biết thêm thông tin, hãy xem trang hướng dẫn chmodtrang Wikipedia này về bit SetUID .


Đó là "sgid" (không có "u").
Tạm dừng cho đến khi có thông báo mới.

"drwsrwsrwx là gì?" <- kiểm tra lại
Hrvoje poljar

6
chmod 0755không không rõ ràng bit setuid, ít nhất là không phải trên Linux. Tôi hiện đang thử nghiệm trên các hệ thống khác.
FUZxxl

1
POSIX nói rằng việc triển khai được xác định cho các loại tệp khác với các tệp thông thường cho dù chmodvới chế độ bát phân sẽ xóa các bit setuid, setgid và vtx.
FUZxxl

2
Để xóa bit setuid trên một thư mục trên Linux, hãy sử dụng chmod 00755; xem unix.stackexchange.com/q/393531/46851
Roger Lipscombe

23

setuid và setgid

setuid và setgid (viết tắt của ID người dùng khi thực thi và đặt ID nhóm khi thực thi, tương ứng) là các cờ quyền truy cập Unix cho phép người dùng chạy một tệp thực thi với sự cho phép của chủ sở hữu hoặc nhóm của người thực thi. Chúng thường được sử dụng để cho phép người dùng trên hệ thống máy tính chạy các chương trình với các đặc quyền được nâng lên tạm thời để thực hiện một tác vụ cụ thể. Mặc dù các đặc quyền id người dùng hoặc id nhóm được cung cấp không phải lúc nào cũng được nâng lên, tối thiểu chúng là cụ thể.

Để loại bỏ các bit setuid và setgid bằng số, bạn phải đặt tiền tố mẫu bit với một 0(ví dụ: 0775trở thành 00775).

Chạy để xóa setuid và setgid:

chmod 00775 path

hoặc là

chmod a-st path

Nó nằm trong thư mục không phải tệp
Hrvoje poljar

1
một thư mục cũng là một tập tin trong một hệ thống tập tin unix, những gì ooshro nói là hoàn toàn chính xác
lynxman

vâng, tất cả chỉ là một tập tin, nhưng mô tả không phù hợp vì bạn không thực thi một cái gì đó trông giống như drwxrwxr-x: |
Hrvoje Špoljar

Trong unix, inode là thứ có được quyền.
chris

2
GNU chmod không xóa byte setuid và setgid trên các thư mục khi bạn thực thi nó với chế độ octamal. POSIX cho phép hành vi này.
FUZxxl

2

Thêm vào câu trả lời của ooshro ...

Nếu bạn sử dụng quyền suid hoặc sgid trên một thư mục, bất kỳ tệp nào được tạo trong thư mục đó sẽ có cùng chủ sở hữu (nếu suid) hoặc nhóm (sgid) như thư mục được đề cập.

Tôi sử dụng nó cho Samba nhà của tôi chia sẻ. Thư mục cơ sở thuộc sở hữu của người dùng và nhóm olympia, và quyền là 2770. Vì vậy, bạn phải ở trong nhóm olympia để đọc hoặc viết bất cứ điều gì bên dưới thư mục đó, và nó sẽ đảm bảo olympia là nhóm sở hữu mọi thứ bên dưới nó . Tôi cũng có Samba được cấu hình để sử dụng một dirmask 2770 và một filemask là 660 để giữ cho các quyền chính xác trong suốt quá trình xuống cây.

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.