Bagaimana cara menghapus izin “s” pada direktori di Linux?

24

Saya memiliki direktori yang muncul dengan topeng izin drwsrwsr-x. Ketika saya mencoba untuk mengatur ulang izin ke 755S masih tetap.

Apa "s" dan mengapa saya tidak bisa mengubah izin kembali ke 775 ( drwxrwxr-x)?

Matt Elhotiby
sumber

Jawaban:

25

Yang Anda lihat di posisi "eksekusi" di kolom pengguna dan grup adalah bit SetUID (Set User ID on Execution) dan SetGID (Set Group ID on execution).

Izin file Unix sebenarnya adalah angka oktal 4 digit SUGO

  • S mengontrol bit-bit SetUID (4), SetGID (2) dan "Sticky" (1)
  • Kontrol U Baca (4) / Tulis (2) / Eksekusi (1) bit untuk pemilik file
  • G mengontrol bit Baca / Tulis / Jalankan untuk grup file
  • O mengontrol bit Baca / Tulis / Jalankan untuk semua orang.

Anda dapat menghapus bit setuid dari direktori Anda dengan chmod ug-s directory, atauchmod 0755 directory

Untuk informasi lebih lanjut lihat halaman manual untuk chmod, dan halaman Wikipedia ini tentang bit SetUID .

Hrvoje Špoljar
sumber
Ini "sgid" (no "u").
Dijeda sampai pemberitahuan lebih lanjut.
"Apa itu drwsrwsrwx?" <- periksa lagi
Hrvoje Špoljar
6
chmod 0755tidak tidak menghapus bit setuid, setidaknya tidak di Linux. Saya sedang menguji pada sistem lain.
FUZxxl
1
POSIX mengatakan bahwa implementasinya ditentukan untuk tipe file selain file biasa apakah chmoddengan mode octamal membersihkan bit setuid, setgid dan vtx.
FUZxxl
2
Untuk menghapus bit setuid pada direktori di Linux, gunakan chmod 00755; lihat unix.stackexchange.com/q/393531/46851
Roger Lipscombe
23

setuid dan setgid

setuid dan setgid (kependekan dari set ID pengguna setelah eksekusi dan set ID grup setelah eksekusi, masing-masing) adalah tanda hak akses Unix yang memungkinkan pengguna untuk menjalankan file yang dapat dieksekusi dengan izin dari pemilik atau grup yang dapat dieksekusi. Mereka sering digunakan untuk memungkinkan pengguna pada sistem komputer untuk menjalankan program dengan hak sementara yang ditinggikan untuk melakukan tugas tertentu. Sementara id pengguna yang diasumsikan atau hak grup id yang disediakan tidak selalu meningkat, minimal mereka spesifik.

Untuk menghapus setuid dan bit setgid secara numerik, Anda harus mengawali pola bit dengan 0(misalnya: 0775menjadi 00775).

Jalankan untuk menghapus setuid dan setgid:

chmod 00775 path

atau

chmod a-st path
ooshro
sumber
Ini pada direktori bukan file
Hrvoje Špoljar
1
direktori juga merupakan file dalam sistem file unix, apa yang dikatakan ooshro sepenuhnya benar
lynxman
ya itu semua file, tetapi deskripsi tidak cocok karena Anda tidak menjalankan sesuatu yang terlihat seperti drwxrwxr-x: |
Hrvoje Špoljar
Dalam unix, inode adalah hal yang mendapat izin.
chris
2
GNU chmod tidak menghapus byte setuid dan setgid pada direktori saat Anda menjalankannya dengan mode octamal. POSIX memungkinkan perilaku ini.
FUZxxl
2

Menambahkan ke jawaban ooshro ...

Jika Anda menggunakan izin suid atau sgid pada direktori, file apa pun yang dibuat di dalam direktori itu akan memiliki pemilik yang sama (jika suid) atau grup (sgid) sebagai direktori yang dimaksud.

Saya menggunakannya untuk share Samba di rumah saya. Direktori dasar dimiliki oleh tidak ada pengguna dan grup olympia, dan izinnya adalah 2770. Jadi Anda harus berada di grup olympia untuk membaca atau menulis apa pun di bawah direktori itu, dan itu akan memastikan olympia adalah grup yang memiliki semua yang ada di bawahnya. . Saya juga memiliki Samba yang dikonfigurasi untuk menggunakan dirmask 2770 dan filemask dari 660 untuk menjaga izin tetap benar sampai ke pohon.

Baumgart
sumber