Artikel ini terutamanya memperkenalkan prinsip asas kawalan kebenaran dalam sistem Linux.
Model KeselamatanDalam sistem Linux, semua operasi kami pada dasarnya adalah proses mengakses fail. Untuk mengakses fail, kita perlu mendapatkan kebenaran akses yang sepadan terlebih dahulu, dan kebenaran akses diperoleh melalui model keselamatan dalam sistem Linux.
Untuk model keselamatan dalam sistem Linux, kita perlu mengetahui dua perkara berikut:
Perhatikan bahawa MAC dan DAC tidak saling eksklusif adalah model keselamatan paling asas dan biasanya merupakan mekanisme kawalan akses yang paling biasa digunakan yang mesti dimiliki oleh Linux MAC ialah mekanisme keselamatan yang dipertingkatkan yang dibina pada DAC dan tergolong dalam modul Pilihan. Sebelum akses, sistem Linux biasanya melakukan semakan DAC terlebih dahulu. Jika ia gagal, operasi akan gagal secara langsung jika ia lulus semakan DAC dan sistem menyokong modul MAC, ia kemudian melakukan semakan kebenaran MAC.
Untuk membezakan keduanya, kami memanggil sistem Linux yang menyokong MAC SELinux, yang bermaksud bahawa ia adalah sistem yang dipertingkatkan keselamatan untuk Linux.
Di sini, kita akan bercakap tentang model keselamatan DAC dalam sistem Linux.
Model Keselamatan DACKandungan teras DAC ialah: Dalam Linux, proses secara teorinya mempunyai kebenaran yang sama seperti pengguna yang melaksanakannya. Semua yang terlibat adalah berpusat di sekitar teras ini.
Kawalan Maklumat ID Pengguna dan KumpulanMaklumat pengguna, kumpulan, kata laluan
Simpan maklumat pengguna dan kumpulan melalui /etc/passwd dan /etc/group, dan simpan kata laluan serta maklumat perubahannya melalui /etc/shadow, dengan satu rekod setiap baris.
Pengguna dan kumpulan masing-masing diwakili oleh UID dan GID Seorang pengguna boleh tergolong dalam berbilang kumpulan pada masa yang sama Secara lalai, setiap pengguna mesti tergolong dalam GID dengan UID yang sama dan nama yang sama.
Untuk /etc/passwd, setiap medan rekod ialah nama pengguna: Kata laluan (disulitkan dan disimpan dalam /etc/shadow): UID: GID (UID lalai): Komen penerangan: Direktori rumah: Log masuk shell (program pertama yang dijalankan )
Untuk /etc/group, medan setiap rekod ialah: Nama kumpulan: Kata laluan (biasanya tiada kata laluan kumpulan): GID: Senarai pengguna ahli kumpulan (senarai UID pengguna dipisahkan koma)
Untuk /etc/shadow, medan setiap rekod ialah: Nama log masuk: Kata laluan yang disulitkan: Masa pengubahsuaian terakhir: Selang masa minimum: Selang masa maksimum: Masa amaran: Masa tidak aktif:
Contoh
Berikut adalah contoh maklumat pengguna dan kumpulan. Maklumat kata laluan dalam /etc/shadow disulitkan dan disimpan, tiada contoh diberikan.
Maklumat kawalan kebenaran failJenis Fail
Jenis fail dalam Linux adalah seperti berikut:
Kumpulan Kawalan Akses
Terbahagi kepada tiga kumpulan untuk kawalan:
Keizinan boleh dikonfigurasi
Nilai kebenaran biasa (tetapi bukan semua) diberikan di bawah, termasuk:
Contoh
Anda boleh menyemak jenis fail dan kebenarannya melalui ls -l, dan mengubah suai kebenaran melalui chmod.
Sebagai contoh,
Dalam output, aksara pertama menunjukkan jenis fail, termasuk fail biasa (-), fail direktori (d), fail soket (s), fail paip (p), fail aksara (c), dan fail blok (b ) , fail pautan (l); Bahagian -rwxr-xr-x bermula dari aksara kedua mewakili bit kebenaran fail, dengan jumlah 9 bit.
Untuk fail /usr/bin/qemu-i386, maksud kawalan kebenaran ini ialah:
Kebenaran ditetapkan untuk ujian/, ujian2/, ujian3/:
Keizinan proses
Untuk proses, atribut berikut berkaitan dengan kebenaran akses fail:
Contoh
Kita boleh menggunakan ps dan atas untuk memilih dan melihat proses dengan euid dan ruid. Atau gunakan bahagian atas untuk melihat euid dan ruid proses
Contoh dilihat melalui atas:
Masukkan bahagian atas dahulu untuk mendapatkan sesuatu seperti berikut
Di sini, pilihan -d digunakan untuk memanjangkan kekerapan penyegaran bahagian atas untuk memudahkan operasi. Seperti yang dapat dilihat di sini, hanya medan PENGGUNA mewakili id pengguna yang berkesan bagi proses yang sepadan.
Buka pilihan paparan id pengguna baca:
a. Semasa arahan atas sedang berjalan, masukkan f, dan anda akan melihat baris yang serupa dengan yang berikut:
b. Masukkan c untuk menghidupkan suis paparan nama pengguna sebenar.
c Akhir sekali, tekan Return untuk kembali ke atas, dan anda akan melihat pilihan id pengguna sebenar. Masukkan `o` pada masa ini untuk melaraskan susunan lajur. Akhir sekali, kita dapat melihat output termasuk `id pengguna berkesan` dan `id pengguna sebenar` seperti berikut:
Strategi kawalan kebenaran untuk fail akses prosesPeraturan
Strategi kawalan kebenaran kasar untuk fail akses proses
Untuk proses mengakses fail, perkara yang paling penting ialah euid, jadi atribut kebenarannya semuanya berpusat pada euid.
Ubah suai atribut kebenaran melalui pelaksanaan fail exec
Apabila memanggil fail boleh laku melalui exec:
Seperti berikut:
Ubah suai atribut kebenaran melalui panggilan sistem setuid(uid)
Apabila mengubah suai atribut kebenaran melalui setuid(uid):
Contoh
Beberapa lagi contoh istimewa:
set-user-id
Seperti yang dinyatakan sebelum ini, maksud output ini ialah, untuk fail /usr/bin/sudo,
Selepas tetapan ini, pemilik telah membaca, menulis dan melaksanakan kebenaran, yang tidak berbeza. Tetapi untuk proses pengguna biasa yang tidak tergolong dalam kumpulan akar, ia agak berbeza.
Apabila proses pengguna biasa melaksanakan perintah sudo, ia memperoleh kebenaran pelaksanaan melalui x dalam yang lain, dan kemudian menggunakan s dalam pengguna untuk mendapatkan kebenaran sementara pemilik (root) fail boleh laku sudo, iaitu keizinan super .
Ini juga sebab pengguna biasa boleh melaksanakan banyak arahan dengan keistimewaan pentadbir melalui arahan sudo.
sediakan stick-bit
Selepas tetapan ini, semua orang telah membaca, menulis dan melaksanakan kebenaran untuk direktori /tmp, yang tidak berbeza. Walau bagaimanapun, bit t melekat ditetapkan di bahagian lain, dan fungsinya agak berbeza.
Jika bit melekat tidak ditetapkan dalam direktori, sesiapa yang mempunyai kebenaran menulis ke direktori boleh memadamkan mana-mana fail dan subdirektori di dalamnya, walaupun dia bukan pemilik fail yang sepadan dan tidak mempunyai kebenaran membaca atau menulis selepas sticky bit ditetapkan, pengguna boleh Hanya fail dan subdirektori miliknya boleh ditulis atau dipadam.
Inilah sebabnya sesiapa sahaja boleh menulis fail dan direktori ke direktori /tmp, tetapi hanya boleh menulis dan memadam fail atau direktori yang mereka miliki.
Petik serpihan aplikasi program man untuk menerangkan penggunaan set-user-id dan saved set-user-id
Program lelaki boleh digunakan untuk memaparkan manual bantuan dalam talian Program lelaki boleh dipasang untuk menentukan set-user-ID atau set-group-ID untuk pengguna atau kumpulan tertentu.
Program man boleh membaca atau menulis ganti fail di lokasi tertentu, yang biasanya dikonfigurasikan oleh fail konfigurasi (biasanya /etc/man.config atau /etc/manpath.config) atau pilihan baris arahan.
Program lelaki mungkin melaksanakan beberapa arahan lain untuk memproses fail yang mengandungi halaman manual yang dipaparkan.
Untuk mengelakkan ralat pemprosesan, man bertukar antara dua keistimewaan: keistimewaan pengguna menjalankan perintah man dan keistimewaan pemilik program man.
Urut utama yang perlu difahami: Apabila hanya man dilaksanakan, keistimewaan proses adalah keistimewaan pengguna lelaki Apabila proses anak dilaksanakan melalui man (seperti perintah shell melalui !bash), pengguna beralih kepada pengguna semasa, dan bertukar kembali selepas pelaksanaan.
Prosesnya adalah seperti berikut:
Mari kita lihat apa yang akan berlaku jika manusia memulakan cangkang:
Sebenarnya, cara kami menerangkan cara man menggunakan fungsi setuid tidak betul, kerana program ini mungkin menetapkan-ID-pengguna kepada root Pada masa ini, setuid akan menukar ketiga-tiga uid ke dalam id yang anda tetapkan, tetapi kami hanya perlukan Tetapkan ID pengguna yang berkesan.
Atas ialah kandungan terperinci Prinsip asas kawalan kebenaran Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!