Sistem operasi: centos 5.2
Deskripsi adegan:
Kami memiliki proyek WEB yang harus dijalankan oleh pelanggan sebagai pengguna biasa (seperti chb), dan kemudian ada tombol di halaman yang dapat dimatikan setelah mengkliknya.
Metode pelaksanaan:
1. Kode JAWA:
Copy kode kodenya sebagai berikut:
boolean statis publik shutDownForLinux() {
mencoba {
Runtime.getRuntime().exec("sudo /sbin/poweroff");
} tangkapan (IOException e) {
kembali salah;
}
kembali benar;
}
2. Ubah /etc/sudoers dan tambahkan informasi berikut di akhir:
chb SEMUA=NOPASSWD:/sbin/reboot,/sbin/poweroff
3. Atur agar Tomcat dimulai secara otomatis saat boot, modifikasi /etc/rc.d/rc.local, dan tambahkan perintah berikut di akhir:
su chb -c "/opt/tomcat/bin/startup.sh"
Deskripsi masalah:
Untuk proses java yang dimulai secara otomatis setiap kali komputer dihidupkan, tombol shutdown pada halaman tidak dapat mengimplementasikan fungsi shutdown. Namun, jika Anda login ke server melalui ssh dengan akun chb saat ini, matikan kucing jantan tersebut secara manual. proses, lalu restart Tomcat, tombol shutdown di halaman Berhasil. Tahukah Anda mengapa ini terjadi? Apakah ini terkait dengan pesanan pemuatan sudo? Atau apakah ini terkait dengan lingkungan shell pengguna chb?
Analisis masalah:
Dengan menganalisis proses JAVA yang dimulai saat boot dan proses JAVA dimulai secara manual, kami menemukan bahwa tty berbeda. Kemudian kami mencari hubungan antara sudo dan tty di Google dan menemukan bahwa sudo memerlukan tty secara default. Saat sistem dinyalakan, tidak ada tty , dan kami menggunakan klien ssh. Masuk ke server, bunuh Tomcat, lalu restart Tomcat. Saat ini, Anda bisa mendapatkan tty sebagai pts, sehingga Anda dapat menggunakan perintah sudo.
Larutan:
Dengan memodifikasi file /etc/sudoers, ubah
Persyaratan default
Beri komentar saja