Bisakah root / superuser membaca file saya yang dilindungi baca?


35

Di hosting unix bersama, jika saya memiliki file sensitif-data.txt dan saya mengeluarkan:

chmod 600 sensitive-data.txt

Dapatkah pengguna root masih membaca file saya? Khususnya saya bertanya-tanya apakah aman untuk menyimpan kata sandi saya dalam file hgrc lincah.

MEMPERBARUI

Memutuskan untuk menggunakan ekstensi keyring mecurial karena sangat mudah untuk setup:

pip install mercurial_keyring

dan kemudian tambahkan ke hgrc:

[extensions]
mercurial_keyring =

Namun saya masih tertarik dengan jawaban untuk pertanyaan ini.

Jawaban:


62

Ya, root dapat:

$ echo Hello you\! > file
$ chmod 600 file
$ ls -l file
-rw------- 1 terdon terdon 11 Feb 27 02:14 file
$ sudo -i
# cat file
Hello you!

Bagaimanapun, bahkan jika root tidak dapat membaca file Anda sebagai root, mereka selalu dapat masuk karena Anda tanpa kata sandi:

$ whoami
terdon
$ sudo -i
[sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon

Jadi, rootdapat berubah menjadi nama pengguna lain menggunakan su(atausudo -iu username ) dan kemudian akan dapat melakukan apa saja seolah-olah mereka adalah Anda.


23

Selalu berasumsi bahwa root(dan setiap pengguna / proses lain dengan CAP_DAC_OVERRIDEdanCAP_DAC_READ_SEARCH ) dapat melakukan segalanya kecuali LSM (SELinux, AppArmor atau yang serupa) mencegahnya melakukan hal itu.

Itu juga berarti bahwa Anda harus mengasumsikan bahwa semua penekanan tombol Anda dapat dibaca. Kata sandi tidak benar-benar aman. Jika Anda menginginkan tingkat keamanan yang serius maka Anda harus menggunakan sistem yang sepenuhnya dikendalikan oleh Anda (dan bahkan tidak digunakan oleh orang lain).


Ini sebenarnya masalah saya dengan kemampuan karena mereka sedang diimplementasikan. Karena mereka tidak menentukan target, Anda perlu memiliki jenis penegakan yang menggantikan kemampuan (seperti SELinux) hanya agar hal itu tidak terjadi. Memberi satu pengguna CAP_DAC_OVERRIDEmemberi mereka dalam satu sapuan busuk semua hak istimewa yang mereka butuhkan untuk mengesampingkan mekanisme keamanan lainnya pada sistem. CAP_DAC_OVERRIDEpada dasarnya CAP_DO_WHATEVER_YOU_WANT.
Bratchley

10

Ya root memiliki semua hak istimewa untuk melakukan apa saja

Di sini Anda dapat melihat saya telah membuat uji nama Direktori dan menyentuh file lonston.txt dan mendaftarkan file-file tersebut

root@system99:/tmp# mkdir test && touch lonston.txt && ls -l
total 4
-rw-r--r-- 1 root root    0 Feb 27 16:35 lonston.txt
drwxr-xr-x 2 root root 4096 Feb 27 16:35 test

Kemudian saya telah mengubah izin file dan Direktori ke izin nol menggunakan 000 dan terdaftar untuk melihat izin

root@system99:/tmp# chmod 000 lonston.txt && chmod 000 test && ls -l
total 4
---------- 1 root root    0 Feb 27 16:35 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

Kemudian bahkan saya dapat menulis ke file dan membaca file menggunakan cat

root@system99:/tmp# echo "Yes root have all Privileges than other user's, let we see the permission of user's too" > lonston.txt 

root@system99:/tmp# cat lonston.txt 
Yes root have all Privilages than other user's, let we see the permission of user's too

Bahkan saya bisa masuk ke direktori yang memiliki d --------- (null) 000 izin, bahkan root tidak memiliki Izin Baca atau Tulis.

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test

Bahkan saya dapat membuat file dan folder setelah perubahan izin dari siapa pun

root@system99:/tmp/test# touch /tmp/test/lonston/testdir/babin.txt

root@system99:/tmp/test# ls -l /tmp/test/lonston/testdir/
total 0
-rw-r--r-- 1 root root 0 Feb 27 16:39 babin.txt

Sekarang di sini kita bisa melihat Izin dengan 400

root@system99:/tmp/test# chmod 400 babin.txt

Daftar untuk melihat izin file

root@system99:/tmp/test# ls -l
total 8
-r-------- 1 root root   34 Feb 27 16:42 babin.txt
drwxr-xr-x 3 root root 4096 Feb 27 16:38 lonston

Menggunakan vim saya telah menambahkan 1 baris ke file babin.txt

root@system99:/tmp/test# vim babin.txt

Tetapi saat dalam mode vim ia akan melihat kita W10: Peringatan: Mengubah file yang hanya baca Tapi masih bisa ditulisi

Sekarang kita dapat menampilkan file untuk keluaran

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission

Maka saya harus logout dari pengguna root ke pengguna normal dan terdaftar file yang memiliki nol permisson apa yang di root juga

root@system99:/tmp# exit
exit

Arahkan ke / direktori tmp

sysadmin@system99:~$ cd /tmp/
sysadmin@system99:/tmp$ ls -l
total 8
---------- 1 root root   88 Feb 27 16:36 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

Tetapi ketika membaca file dari pengguna normal kita tidak bisa

sysadmin@system99:/tmp$ cat lonston.txt 
cat: lonston.txt: Permission denied

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied

Itu saja, Semoga Anda mendapatkan kekuatan Pengguna root

Jika Anda berada di Pengguna Normal, jika Anda perlu root privilege, kami perlu menggunakan sudo, ia akan meminta kata sandi sudo

contoh:

sysadmin@system99:/tmp$ sudo cat lonston.txt 
[sudo] password for sysadmin: 
Yes root have all Privilages than other user's, let we see the permission of user's too

Pengguna Sudo memiliki collabration dengan Grup pengguna root sehingga apa yang sudo punya hak istimewa root.

Untuk mengetahui lebih banyak tentang sudo

# man sudoers

Di sini kita dapat melihat mereka telah mendefinisikan sebagai pengguna normal dapat memiliki hak Sudo. Hanya sedikit garis yang telah saya sebutkan di sini.

sysadmin@system99:/tmp$ sudo cat /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Benar-benar kita dapat membaca atau mengedit atau menghapus file bahkan root Tidak memiliki izin baca.


2
Mengapa jawaban ini memiliki sedikit upvotes? Ini mencakup hampir semua kasus yang dapat terjadi dengan contoh.
Foo Bar

8

Dalam Unix tradisional, root sangat kuat. Secara khusus, root dapat membaca file apa pun, dan bahkan mengintip apa yang program Anda lakukan secara internal. Jika data benar - benar sensitif, simpan hanya salinan yang dienkripsi di sekitarnya (pertimbangkan misalnya Penjaga Privasi GNU untuk ini, tetapi bacalah dokumentasinya dengan cermat sebelumnya), dan jangan pernah mendekripsi di mesin yang tidak di bawah kendali penuh Anda.

(Paranoia luar biasa, tidak pernah cukup ;-)

Serius, pikirkan baik-baik tentang biaya yang dapat ditimbulkan oleh kebocoran data, dan dengan demikian berapa banyak Anda akan siap membayar untuk keamanan. Keamanan yang sempurna tidak mungkin, untuk mendapatkan keamanan yang lebih banyak, biaya mulai meningkat dengan cepat. Tetapi berhati-hatilah agar tidak jatuh ke dalam perangkap tindakan mahal yang benar-benar tidak meningkatkan keamanan ...


3

Juga harus diasumsikan bahwa siapa pun yang mungkin memiliki kesempatan untuk berada di ruangan yang sama dengan perangkat keras dapat membaca atau menulis apa pun yang mereka inginkan. Jika mereka sangat sabar, mereka akhirnya bisa memahami data terenkripsi. Mereka tidak memerlukan metode saluran samping jika mereka dapat mengganti perangkat lunak enkripsi.


2

Ya, root dapat membaca file yang diproteksi walaupun pemiliknya tidak bisa (sementara pemiliknya jelas dapat menghapus proteksi dan kemudian membaca kontennya):

echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt

cat: abc.txt: Izin ditolak

su
cat abc.txt

123

Namun di bawah pengaturan normal, root tidak dapat mengakses file yang dilindungi pada sistem file jarak jauh seperti NFS ("root squash").


+1 untuk menyebutkan root squash NFS. Namun, selama root dapat su ke pengguna yang memiliki direktori yang dipasang NFS, root squash masih tidak melindungi.
Jenny D

2

Untuk mencegah root atau orang lain tidak dapat membaca file Anda, Anda perlu mengenkripsi mereka. Enkripsi File adalah pilihan yang sangat nyaman untuk dilihat jika Anda ingin menghindari berurusan dengan manipulasi sistem file yang kompleks.

Opsi Enkripsi:

  1. Enkripsikan file biasa dan cegah semua orang kecuali Anda untuk melihatnya
  2. Enkripsi Skrip Shell dan buat versi terenkripsi dapat dijalankan, tetapi juga mencegah semua orang untuk dapat memodifikasi atau melihatnya

Jika memilih Opsi 1, inilah cara Anda mengenkripsi file Anda:

cat (your-file) | openssl aes-128-cbc -a -salt -k "(specify-a-password)" > (your-file).enc

Untuk mendekripsi file di atas, Anda menjalankan perintah seperti ini:

cat (your-file).enc | openssl aes-128-cbc -a -d -salt -k "(specify-the-password)" > (your-file).dec

- Anda mungkin ingin meletakkan di atas dalam skrip sehingga tidak muncul dalam riwayat Anda. Atau, Anda bisa menghapus " -k parameter " ", yang akan meminta openssl untuk meminta kata sandi.

Jika memilih Opsi 2, cukup salin dan tempel skrip Anda ke situs berikut:

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

Setelah penyerahan skrip Anda ke situs itu, file zip akan langsung dibuat untuk Anda. Salin tautan ke file zip, lalu buka kotak UNIX Anda dan lakukan langkah-langkah ini:

  1. wget tautan ke file zip
  2. unzip file zip yang baru diunduh
  3. cd / tmp / KingLazySHIELD
  4. ./install.sh / var / tmp / KINGLAZY / SHIELDX- (nama-skrip Anda) / home / (nama pengguna Anda) -maksa

Setelah Anda menyelesaikan langkah-langkah sebelumnya, Anda kemudian dapat menjalankan skrip terenkripsi Anda dari mana pun Anda ditentukan untuk menginstalnya di langkah 4 .... yaitu / home / (nama pengguna Anda) / (skrip Anda-terenkripsi). SH

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.