Untuk apa angka pertama dalam argumen chmod 4-angka (seperti `chmod 4555`)?

20

Ketika saya menginstal sebuah program, saya sarankan untuk melakukannya chmod 4555. Oke, saya tahu tentang nilai jika saya hanya menggunakan tiga angka. Sebagai contoh

chmod 555 test-file

akan memberi

-r-xr-xr-x

4 untuk menulis, 2 untuk membaca dan 1 untuk mengeksekusi. Tetapi, ketika saya melakukan ini:

chmod 4555 test-file

itu memberi saya

-r-sr-xr-x

Jadi, xberubah menjadi s. Apa artinya?

Mas Bagol
sumber
1
juga dijelaskan di sini: askubuntu.com/a/550947/72216 ("about the s- flag")
Jacob Vlijm
@JacobVlijm juga menjelaskan lebih dalam dengan bit "spesial" lainnya, di bawah ini
Thomas Ward

Jawaban:

29

Sebenarnya ada 4 set atribut yang dapat Anda kerjakan via chmod.

Special, User/Owner, Group, Dan Othersagar, ketika bekerja dengan chmods empat nomor, dengan nomor pertama adalah bit khusus yang dapat diatur.

chmod 4555 sama dengan yang berikut:

  • Set UID bit - Jalankan file sebagai pemilik tanpa memandang pengguna mana yang menjalankannya
  • Pengguna / Pemilik: Read, Execute
  • Kelompok: Read, Execute
  • Lainnya: Read, Execute

The sdi 'dibaca manusia' string Anda untuk perizinan menunjukkan bahwa SetUIDbit (dijelaskan di bawah) diatur.


Secara efektif, kita dapat memecah chmodargumen izin empat-angka ke dalam deskriptor spesifik sebagai berikut, dan melakukan perhitungan untuk menentukan apa yang akan 4di bagian pertama, 5di bagian berikutnya, dan seterusnya.

Ingatlah bahwa itu ####ada Special User/Owner Groupdan Othersdalam urutan itu.

Untuk Specialatribut (angka pertama dalam chmodargumen empat angka ):

  • Set UID- Jalankan file sebagai pemilik terlepas dari pengguna yang menjalankannya (ditampilkan seperti sdalam string izin yang dapat dibaca manusia untuk Userbagian) = +4 (di --sbawah User/Owner)
  • Set GID- Jalankan file sebagai grup terlepas dari pengguna / grup yang menjalankannya (ditampilkan seperti sdalam string izin yang dapat dibaca manusia untuk Groupbagian) = +2 (di --sbawah Group)
  • Sticky Bit- EFEKTIF PADA DIREKTORI SAJA - Jika diatur, hanya pengguna pemilik direktori dan rootdapat menghapus direktori, dan hanya pemilik file atau rootdapat menghapus file di dalamnya. (ditampilkan seperti tpada string izin yang dapat dibaca manusia untuk Othersbagian) = +1 (di --tbawah Others)

Untuk User/Owner, Groupdan Othersatribut (tiga angka terakhir dalam chmodargumen empat angka ):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(untuk file), atau 'Masukkan Ke / Daftar Item' (untuk direktori) = +1 ( --x)
Thomas Ward
sumber
7

Ini disebut SETUIDbit. jika diatur oleh chmod 4555 test-file(dalam kasus Anda), maka test-filedapat dieksekusi oleh pengguna mana pun seolah-olah pengguna adalah pemilik file.

Ketika SETUIDbit diatur maka ID Pengguna Efektif ( EUID) dari pengguna yang tidak memiliki izin untuk mengeksekusi file sebaliknya (dengan izin normal, misalnya 0744), mengambil EUID dari pemilik file dan dapat mengeksekusi file.

heemayl
sumber