Menjalankan Perintah Bash dengan Keistimewaan Pengguna Super di Java
Apabila melaksanakan arahan bash dengan ProcessBuilder dalam Java, pengguna mungkin menghadapi keperluan untuk menjalankan arahan sebagai root dengan keistimewaan sudo. Untuk mencapai matlamat ini, terdapat pelbagai pilihan yang tersedia.
Satu kaedah melibatkan penggunaan arahan "gksudo", yang tersedia dalam versi Ubuntu yang lebih awal. Walau bagaimanapun, dengan keluaran Ubuntu 13.04, arahan ini telah dialih keluar. Akibatnya, pendekatan alternatif diperlukan.
Menggunakan Runtime.exec()
Pendekatan yang mantap ialah menggunakan kaedah Runtime.exec(). Dengan menghantar tatasusunan rentetan sebagai arahan, pengguna boleh menentukan arahan yang akan dilaksanakan dan sebarang hujah yang diperlukan. Untuk menunjukkan perkara ini, pertimbangkan kod berikut:
<code class="java">import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { String[] cmd = {"/bin/bash", "-c", "echo password| sudo -S ls"}; Process pb = Runtime.getRuntime().exec(cmd); String line; BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream())); while ((line = input.readLine()) != null) { System.out.println(line); } input.close(); } }</code>
Coretan kod ini mempunyai dua aspek penting:
Walaupun penyelesaian ini menawarkan cara melaksanakan arahan dengan keistimewaan sudo, adalah penting untuk menekankan bahawa ia harus digunakan dengan berhati-hati. Pembangun harus meneroka mekanisme alternatif yang lebih selaras dengan amalan keselamatan terbaik.
Atas ialah kandungan terperinci Cara Melaksanakan Perintah Bash dengan Keistimewaan Sudo di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!