GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara kerja izin file untuk pengguna root?

Akses istimewa ke file dan direktori sebenarnya ditentukan oleh kemampuan, bukan hanya dengan menjadi root atau tidak. Dalam praktiknya, root biasanya memiliki semua kemungkinan kemampuan, tetapi ada situasi di mana semua/banyak dari kemampuan tersebut dapat dihapus, atau sebagian diberikan kepada pengguna lain (prosesnya).

Singkatnya, Anda telah menjelaskan cara kerja pemeriksaan kontrol akses untuk proses istimewa. Berikut adalah bagaimana kemampuan yang berbeda benar-benar memengaruhinya:

Kemampuan utama di sini adalah CAP_DAC_OVERRIDE , sebuah proses yang memilikinya dapat "melewati file membaca, menulis, dan menjalankan pemeriksaan izin". Itu termasuk membaca dan menulis ke file apa pun, serta membaca, menulis, dan mengakses direktori.

Ini sebenarnya tidak berlaku untuk mengeksekusi file yang tidak ditandai sebagai dapat dieksekusi. Komentar di generic_permission (fs/namei.c ), sebelum akses memeriksa file, katakan bahwa

Baca/tulis DAC selalu dapat diganti. DAC yang dapat dijalankan dapat diganti jika setidaknya ada satu set bit exec.

Dan kode memeriksa bahwa setidaknya ada satu x bit disetel jika Anda mencoba menjalankan file. Saya menduga itu hanya fitur kenyamanan, untuk mencegah menjalankan file data acak secara tidak sengaja dan mendapatkan kesalahan atau hasil yang aneh.

Lagi pula, jika Anda dapat mengabaikan izin, Anda dapat membuat salinan yang dapat dieksekusi dan menjalankannya. (Meskipun itu mungkin membuat perbedaan dalam teori untuk file setuid dari suatu proses mampu mengesampingkan izin file (CAP_DAC_OVERRIDE ), tetapi tidak memiliki kemampuan terkait lainnya (CAP_FSETID /CAP_FOWNER /CAP_SETUID ). Tetapi memiliki CAP_DAC_OVERRIDE memungkinkan pengeditan /etc/shadow dan hal-hal seperti itu, jadi kira-kira sama dengan hanya memiliki akses root penuh.)

Ada juga CAP_DAC_READ_SEARCH kemampuan yang memungkinkan untuk membaca file apa pun dan mengakses direktori apa pun, tetapi tidak untuk mengeksekusi atau menulisnya; dan CAP_FOWNER yang memungkinkan proses melakukan hal-hal yang biasanya hanya diperuntukkan bagi pemilik file, seperti mengubah bit izin dan grup file.

Mengganti sticky bit pada direktori hanya disebutkan di bawah CAP_FOWNER , jadi sepertinya CAP_DAC_OVERRIDE tidak akan cukup untuk mengabaikan itu. (Ini akan memberi Anda izin menulis, tetapi biasanya di direktori lengket Anda tetap memilikinya, dan +t membatasinya.)

(Saya pikir perangkat khusus dihitung sebagai "file" di sini. Setidaknya generic_permission() hanya memiliki pemeriksaan tipe untuk direktori, tetapi saya tidak memeriksa di luar itu.)

Tentu saja, masih ada situasi di mana bahkan kemampuan tidak akan membantu Anda mengubah file:

  • beberapa file di /proc dan /sys , karena itu bukan file sebenarnya
  • SELinux dan modul keamanan lain yang mungkin membatasi root
  • chattr +i yang tidak dapat diubah dan hanya menambahkan +a flag pada ext2/ext3/ext4, keduanya bahkan menghentikan root, dan juga mencegah penggantian nama file, dll.
  • sistem file jaringan, di mana server dapat melakukan kontrol aksesnya sendiri, mis. root_squash di peta NFS mengakar ke siapa pun
  • FUSE, yang saya anggap bisa melakukan apa saja
  • dudukan hanya baca
  • perangkat hanya-baca

Persis seperti yang Anda perhatikan untuk izin default:

  • Baca &tulis:
    Secara default, pengguna Root dapat mengakses file apa pun di sistem. Anda dapat menghapus akses ini dengan mengubah atribut seperti yang dijelaskan di sini:chattr. Ini kemudian ditautkan ke kemampuan.

  • Jalankan:
    Pengguna root tidak memiliki izin eksekusi kecuali setidaknya salah satu bit eksekusi disetel.


myFile.txt diperoleh dengan chmod 000 myFile.txt .

0 no permission
1 execute
2 write
3 execute + write
4 read 
5 read + execute
6 read + write
7 all

--------- berarti tidak ada izin untuk pengguna, grup, dan lainnya.

Pengguna root memiliki tidak dibatasi kemampuan untuk memodifikasi file ini. Baca/tulis diberikan. Untuk mengeksekusi file ini, pengguna root harus tetap membuatnya dapat dieksekusi. (chmod 100 , 010 atau 001)


Linux
  1. Linux – Bagaimana Cara Mengatur Izin File Default Untuk Semua Folder / File Di Direktori?

  2. Bagaimana cara membuat sudo meminta kata sandi root?

  3. Bagaimana cara menulis file ke USB tanpa menjadi root?

  1. Cara Mengatur Hak Istimewa Sudo untuk Pengguna di Linux

  2. Bagaimana cara memaksa izin khusus untuk file/folder baru di server file Linux?

  3. Cara menemukan file .pid untuk proses tertentu

  1. Cara memeriksa file besar di konsol

  2. Bagaimana Internal Sudo Bekerja?

  3. Jika Saya Mengubah Izin Pada File Tar, Apakah Itu Berlaku Untuk File Di Dalamnya?