GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menghapus setgid (linux/unix)?

Kami hanya ingin menambahkan beberapa poin untuk mengklarifikasi pendekatan bekerja dengan cara numerik untuk file dan direktori.

  • Menambahkan izin khusus individu untuk pengguna/grup/lainnya.

chmod "X"755 file

Di mana X adalah mode numerik oktal khusus untuk izin khusus.

  • Jika Anda ingin menambahkan beberapa izin khusus sekaligus, mis. untuk suid(4) dan sgid(2) yaitu 4+2=6 .

chmod "6"755 file

untuk suid(4), sgid(2) dan sticky bit(1), yaitu 4+2+1=7

chmod "7"755 file

  • Menghapus semua izin khusus (hanya berlaku untuk file)

chmod 00"0"755 file

Ya, angka nol di belakang sebelum 4 digit tidak menambahkan nilai apa pun saat mengubah izin untuk file tetapi menambah nilai saat mengubah izin untuk direktori.

Kode numerik di atas akan mengubah izin menjadi 755 dari 7755 hanya untuk sebuah file tetapi jika Anda melakukan hal yang sama untuk sebuah direktori, itu akan menjadi 6755 karena hanya akan menghapus bit lengket untuk yang lain.

Untuk menghapus semua izin khusus untuk direktori.

chmod "000"755 file

  • Demikian pula, untuk menghapus izin suid dan memiliki sgid(2) dan sticky bit(1) yaitu 2+1=3 .

chmod 00"3"755 file

Dan solusi menggunakan huruf(r,w,x,X,s,,t) dan operator(+/-) sudah dibahas dan disetujui di jawaban sebelumnya.


Mengenai:"Anda dapat mengatur (tetapi tidak menghapus) bit dengan mode numerik"

Pada RHEL 7 chmod 0644 $filename tidak menghapus setuid(4),setgid(2) atau sticky(1).

Namun mendahului dengan tambahan 0 berhasil:

chmod 00644 $filename


Ubah + untuk menambahkan izin ke dalam - untuk menghapusnya:

sudo chmod g-s filename

Jika Anda ingin melakukan ini secara terprogram, Anda harus menggunakan beberapa operator bitwise. Biasanya itu

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

di mana S_ISUID adalah 0o4000, sebuah konstanta yang menggunakan bit mode di atas rwx biasa salah satu dari sesuatu seperti 0644 .

Misalnya, dengan python

import os
import stat

def mode_details(m):
    return f"mode={oct(m)} = {stat.filemode(m)}"

mode = os.stat('foo').st_mode
print("old mode", mode_details(mode))

new_mode = mode & ~stat.S_ISUID

os.chmod('foo', new_mode)
print("new mode", mode_details(new_mode))

yang mencetak

old mode mode=0o104654 = -rwSr-xr--
new mode mode=0o100654 = -rw-r-xr--

Untuk menghapus setgid dengan cara numerik perintahnya adalah

sudo chmod 0664 $namafile

Asumsinya di sini adalah izin pada file adalah 664 dan kami tidak mengubahnya. Bit paling kiri pada perintah di atas mewakili setuid(4 ),setgid(2 ) dan lengket(1 ). Sekarang untuk mewakili setuid simbolis ini adalah u+s , setgid adalah g+s dan sticky adalah o+t

Contoh 1:-chmod u+s filenameIni akan mengatur untuk nama file yang disebutkan yaitu rws r_xr_x

Contoh 2:chmod 2770 directoryIni akan menyetel gid untuk direktori yang disebutkan yaitu rwxr_s r_x


Linux
  1. Bagaimana Mengelola Kemampuan File Linux

  2. Cara menemukan File di Linux

  3. Linux – Bagaimana Cara Memeriksa Informasi Struktur Direktori File Unix/linux?

  1. Cara memindahkan file di Linux

  2. Bagaimana Mengganti Nama File di Linux?

  3. Cara Menghitung baris dalam file di UNIX/Linux

  1. Cara Menghapus (Menghapus) File atau Direktori di Linux

  2. Cara Menghapus Direktori di Linux

  3. Cara Membuat File di Linux