Bisakah Anda jelaskan mengapa file kompilasi biner (misalnya, /usr/sbin
) memiliki izin menulis untuk root
pengguna?
Bagi saya, ini dikompilasi. Berarti penulisan langsung tidak ada gunanya dan dapat memaparkan file ke beberapa masalah keamanan.
Sebuah skrip (misalnya bash
file) dapat ditulisi karena pada dasarnya adalah file teks, tetapi mengapa itu sama untuk file yang dikompilasi di mana tidak ada tulisan yang sebenarnya diperlukan sejauh yang saya tahu?
Terima kasih sebelumnya atas tanggapan Anda.
linux
files
permissions
root
t1m0th33
sumber
sumber
root
memiliki izin menulis ke file biner? Jika tidak ada yang lain itu akan membantu ketika meningkatkan paket itu.memmove()
untuk memindahkan bagian terakhir ke ujung dan membuka lubang, kemudian masukkan teks baru ke dalam lubang. Atau Anda dapat menggunakan serangkaianpread()
/pwrite()
untuk melakukan hal yang sama.ETXTBSY
). Sebagai gantinya, biner lama dihapus , dan biner baru ditulis ke file baru dengan nama yang sama. Menghapus file tidak memerlukan izin tulis padanya, hanya pada direktori yang berisi (yaitu,/usr/sbin/
).Jawaban:
Tidak masalah jika file di
/bin
(atau direktori standar lainnya di mana file executable disimpan) dapat ditulis oleh root atau tidak. Pada server Linux yang saya gunakan, mereka dapat ditulis oleh root, tetapi pada mesin OpenBSD saya, mereka tidak.Selama mereka tidak dapat ditulis oleh grup atau oleh "lainnya"!
Tidak ada masalah keamanan, misalnya
Jika seseorang ingin menimpanya, mereka harus menjadi root, dan jika mereka
root
menimpanya, maka mereka jugaHal lain yang perlu dipertimbangkan adalah bahwa root dapat menulis ke file tidak peduli apakah itu dilindungi atau tidak, karena ... root.
Perhatikan juga bahwa "skrip" adalah file biner yang dapat dieksekusi. Sebuah skrip tidak perlu ditulis "karena ini adalah file teks". Jika ada, itu mungkin harus hanya memiliki izin yang sama dengan executable lainnya di direktori yang sama.
Jangan mengubah izin untuk semuanya sekarang! Itu dapat mendatangkan segala macam malapetaka dan berpotensi membingungkan manajer paket yang mungkin memverifikasi bahwa izin diatur dengan benar. Ini juga dapat membuat sistem rentan jika Anda secara tidak sengaja mengubah izin dengan cara yang salah pada aplikasi yang kritis terhadap keamanan.
Asumsikan saja bahwa izin pada executable diatur dengan benar, kecuali Anda menemukan sesuatu yang terlihat sangat aneh, dalam hal ini Anda mungkin harus menghubungi pengelola paket yang relevan untuk memverifikasi daripada mulai mengubah barang.
Dari komentar dan obrolan , ada panggilan untuk beberapa riwayat.
Sejarah izin pada binari di Linux bukanlah sesuatu yang saya ketahui. Mungkin berspekulasi bahwa mereka hanya mewarisi izin dari direktori, atau hanya dari default
umask
Linux, tetapi saya benar-benar tidak tahu.Yang saya tahu adalah OpenBSD menginstal binari di sistem dasar 1 dengan mode izin 555 secara default (
-r-xr-xr-x
). Ini ditentukan dalam fragmen Makefile/usr/share/mk/bsd.own.mk
yang menetapkanBINMODE
ke 555 (kecuali jika sudah ditetapkan). Ini kemudian digunakan ketika menginstal executable selamamake build
di/usr/src
.Saya telah melihat log CVS beranotasi untuk file ini , dan menemukan bahwa baris dalam file ini tidak berubah karena diimpor dari NetBSD pada tahun 1995.
Di NetBSD, file pertama kali dimasukkan ke dalam CVS pada tahun 1993, dengan
BINMODE
set ke 555.Proyek FreeBSD tampaknya telah menggunakan file yang sama persis dengan NetBSD sejak setidaknya tahun 1994 , dan dengan komit kemudian menambahkan petunjuk dalam pesan komit bahwa file lama berasal dari rilis 4.4BSD dari Berkeley Software Distribution.
Di luar itu, CSRG di Berkeley menyimpan sumber-sumbernya di SCCS tetapi repositori mereka tersedia dalam bentuk Git di GitHub 2 . File yang kami berikan perawatan forencic di sini tampaknya telah dilakukan oleh Keith Bostic (atau seseorang yang dekat dengannya) pada tahun 1990.
Jadi itu cerita itu. Jika Anda ingin mengapa , maka saya kira kita harus bertanya kepada Keith. Saya agak berharap melihat pesan komit untuk perubahan yang mengatakan " ini harus 555 karena ... ", tapi tidak.
1 sistem BSD memiliki divisi yang lebih ketat menjadi "sistem dasar" dan "paket pihak ketiga" (port / paket) daripada Linux. Sistem dasar adalah unit yang koheren yang menyediakan lengkap seperangkat fasilitas untuk menjalankan sistem operasi, sedangkan port atau paket dipandang sebagai "software lokal" dan dipasang di bawah
/usr/local
.2 Sebuah repositori GitHub yang lebih komprehensif dari rilis Unix dari tahun 70an dan seterusnya juga tersedia .
sumber
root
.chmod -R
pada/usr
atau/var
, dan kejutan - merekasudo
tidak bekerja atau sesuatu yang lain tidak bekerja.