Jika saya melakukan root tanpa sistem (tidak ada modifikasi yang dilakukan untuk /system
mempartisi) perangkat Nexus, apakah saya dapat mengatur kemampuan pada executable tanpa mengubah biner kernel yang asli?
Saya sering ingin mengatur file tanpa batasan dari terminal saya (harus CAP_DAC_READ_SEARCH
) . Namun, saya juga ingin tidak menggunakan superuser.
Hal-hal yang diperlukan adalah alat untuk mengatur tutup di sepanjang dukungan kernel untuk menggunakannya (tidak bergantung pada hal-hal ruang pengguna lainnya) .
Masalahnya adalah, saya tidak memiliki perangkat seperti itu. Jadi saya tidak tahu apakah itu akan berhasil Nexus 5X Nexus 6P Nexus 9 Pixel C
.
rooting
root-access
security
file-system
kernel
pengguna2284570
sumber
sumber
/system/bin/ping
perintah tidak setuid pada perangkat samsung asli saya, menyarankanCAP_NET_RAW
. Namun, saya tidak akan me-root perangkat yang sebenarnya dan saya tidak tahu alat mana yang dapat saya gunakan untuk melihat informasi yang relevan, jadi saya tidak bisa memeriksa.Jawaban:
Meskipun pertanyaannya sudah lama, pertanyaan itu terus muncul di atas pertanyaan (tag saya) yang Belum Dijawab . Jadi saya pikir saya harus menjawab ini :)
DUKUNGAN AOSP UNTUK KAPABILITAS:
Pertanyaan khusus tentang perangkat Google, saya belum pernah menggunakan perangkat Google. Namun yang dapat saya katakan dengan pasti adalah bahwa kemampuan Linux (proses) harus telah diaktifkan pada sebagian besar perangkat (jika tidak semua) berjalan serendah Android 1.6. Referensi ditemukan dalam
init
dansystem_server
, keduanya komponen yang sangat utama dari AOSP. Di Android 4.2, misalnya,installd
- komponen inti lainnya - dibuat untuk berjalan dengan kemampuan yang menurun.Kemampuan filesystem adalah salah satu Peningkatan Keamanan utama di Android 4.3 yang menghapus
set-uid
/set-gid
dari binari sepertirun-as
, mengatur kemampuan file pada mereka. Ini menyebabkan perubahan revolusioner dalam perjalanan rooting Android.Dukungan untuk kemampuan Ambient ditambahkan di Android 8 yang mencegah penggunaan kemampuan file:
Banyak
init
layanan bergantung pada mereka misalnyastoraged
, termasuk saya sendirisshd
dandnscrypt-proxy
layanan.DUKUNGAN KERNEL UNTUK KAPABILITAS:
Datang ke bagian kernel, membangun kernel tanpa kemampuan bukanlah opsional:
Dan:
Versi kernel umum tertua pada repositori Android adalah 2.6.39 yang mencakup dukungan untuk kemampuan file juga.
Dukungan untuk kemampuan sistem file di sisi kernel pasti telah tertunda dari beberapa OEM tetapi mereka harus beralih, karena jika tidak fungsionalitas akan rusak. Misalnya
surfaceflinger
( komposer permukaan Android ) tidak akan berfungsi tanpa kemampuan file sejak Android 7.1.Mainline Linux kernel 4.3 telah ditambal di Sep'15 untuk kemampuan Ambient (proses), di- backport ke Android kernel 3.18 dan 4.1 di 2016. Jadi mereka tentu saja merupakan bagian dari kernel.
KESIMPULAN:
Pada distro Linux, sangat sedikit program yang memanfaatkan kemampuan Linux. Meskipun ada
pam_cap
, sebagian besar (atau semua?) Distro masih menggunakanset-uid
padasu
,sudo
,ping
,mount
,passwd
dan sebagainya. Tetapi pada kemampuan Android sangat terintegrasi dalam kerangka dan layanan inti. Menghapusnya membutuhkan pengeditan ratusan atau mungkin ribuan baris dalam AOSP dan sumber kernel. Tidak masuk akal bahwa OEM (terutama Google, yang mengembangkan AOSP dan kernel Linux yang dimodifikasi untuk Android) tidak menggunakan fitur keamanan bebas biaya ini ketika sudah tersedia di kernel Android. Ini adalah fitur murni yang terkait OS, tidak memerlukan dukungan perangkat keras tambahan. Jadi, telepon apa pun dari produsen mana pun harus memiliki kapabilitas yang didukung.PERTANYAAN:
Ya, Anda harus.
Saya telah menggunakan
capsh
,getcap
,setcap
,getpcaps
darilibcap
dannetcap
,pscap
darilibcap-ng
tanpa masalah. Tapi saya lebih suka kemampuan Ambient, itu mudah dikonfigurasikan dan tidak bergantung pada fitur sistem file seperti Atribut yang Diperpanjang seperti dalam hal kemampuan file. Anda juga dapat menggunakanlistxattr
,getxattr
,setxattr
danremovexattr
alat-alat darixattr_syscall_wrapper
memanipulasisecurity.capability
atau xattr lain secara langsung.Dari komentar Anda:
Ping Android tidak memiliki
set-uid
maupunCAP_NET_RAW
. Ini menciptakan soket non-RAW khususIPPROTO_ICMP
yang - tidak sepertiIPPROTO_RAW
- tidak memerlukan hak istimewa.REFERENSI LEBIH LANJUT:
Selain 10+ referensi yang diberikan di atas, berikut adalah beberapa bagian lain dari kode AOSP yang mendukung dan memanfaatkan kemampuan Linux:
libc
,init
,trusty
(OS)libcap
,libcap-ng
zygote
(apps bercabang dansystem_server
),hostapd
,wpa_supplicant
,dnsmasq
,logd
,netd
(NetLink
manajer, DNS swasta),debuggerd
(test),sdcard
daemon,performanced
,incidentd
,mtpd
,traced_probes
(perfetto),racoon
(IPSec),wificond
, sejumlah daemon HAL termasukrild
.reboot
(init),dumpstate
,tcpdump
,strace
,iputils
(ping
,traceroute
dll)adbd
memanfaatkan perpustakaan ini untuk menjatuhkan hak istimewa.capability
kelas untuk memberikan / menolak kemampuan ke domain.Ini menyimpulkan bahwa Android sangat tergantung pada kemampuan Linux, itu bukan fitur yang jarang digunakan .
TERKAIT:
sumber