Di linux, hak-hak istimewa dari akar berada pada satu titik dibagi menjadi "kemampuan", sehingga Anda bisa mendapatkan daftar lengkap dari hak-hak istimewa root dengan melihat ke dalam dokumentasi yang: man 7 capabilities
.
Untuk menjawab pertanyaan Anda, sebuah perintah akan membutuhkan menjalankan sebagai root ketika membutuhkan salah satu dari hak istimewa ini, dan non-skrip yang dapat dieksekusi tidak memiliki kapabilitas yang relevan yang diatur dalam metadata file-nya (mis. Jika skrip python membutuhkan kapabilitas, maka kapabilitas perlu berada di interpreter python ditentukan dalam baris shebang).
Perhatikan bahwa beberapa perintah yang memerlukan akses root tidak memerlukan sesuatu seperti sudo
karena mereka memiliki bit SUID yang diatur dalam executable-nya. Bit ini menyebabkan executable dijalankan sebagai pemilik (biasanya root) ketika dieksekusi oleh siapa saja yang memiliki akses eksekusi. Contohnya sudo
sendiri karena mengubah pengguna adalah tindakan istimewa yang perlu dilakukan.
EDIT: Saya perhatikan dari pertanyaan Anda bahwa Anda mungkin memiliki gagasan bahwa Anda dapat menentukan apakah suatu perintah akan membutuhkan akses root sebelum menjalankannya. Bukan itu masalahnya. Suatu program kadang-kadang mungkin memerlukan hak akses root dan kali lain tidak, dan ini bisa menjadi keputusan yang dibuat oleh program karena data itu diberikan selama runtime. Ambil contoh, memanggil vim
, begitu saja tanpa argumen, dan kemudian melalui serangkaian penekanan tombol dan menempel, menyuruhnya untuk menulis sesuatu ke file yang tidak memiliki izin untuk menulis, atau mungkin menjalankan perintah lain yang dengan sendirinya akan memerlukan hak akses root. Apa-apa tentang perintah sebelum dieksekusi dapat menunjukkan bahwa pada akhirnya akan memerlukan akses root. Itu adalah sesuatu yang hanya dapat ditentukan pada titik ia mencoba melakukan sesuatu yang mengharuskannya.
Bagaimanapun, berikut adalah beberapa contoh dari halaman referensi yang dirujuk tentang hak istimewa root:
- Melakukan manipulasi proses UID (setuid (2), sewenang-wenang (2), setresuid (2), setfsuid (2));
- Memotong file membaca, menulis, dan menjalankan pemeriksaan izin. (DAC adalah singkatan dari "kontrol akses diskresioner".)
- Abaikan izin untuk memeriksa pengiriman sinyal (lihat kill (2)). Ini termasuk penggunaan operasi KDSIGACCEPT ioctl (2).
- Lakukan berbagai operasi terkait jaringan:
- konfigurasi antarmuka;
- administrasi IP firewall, penyamaran, dan akuntansi;
- memodifikasi tabel routing;
- Ikat soket ke port khusus domain Internet (nomor port kurang dari 1024).
- Muat dan keluarkan modul kernel (lihat init_module (2) dan delete_module (2));
- Atur jam sistem (settimeofday (2), stime (2), adjtimex (2)); mengatur jam (perangkat keras) waktu nyata.
- Lakukan serangkaian operasi administrasi sistem termasuk: quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2), dan setdomainname (2);
- Gunakan reboot (2) dan kexec_load (2).
- Gunakan chroot (2).
- Naikkan nilai proses bagus (bagus (2), setpriority (2)) dan ubah nilai bagus untuk proses sewenang-wenang;