Saya telah membuat skrip bash yang menggunakan kdialog secara eksklusif untuk berinteraksi dengan pengguna. Diluncurkan dari file ".desktop" sehingga pengguna tidak pernah melihat terminal. Ini terlihat 100% seperti aplikasi GUI (meskipun itu hanya skrip bash). Hanya berjalan di KDE (Kubuntu 12.04).
Satu-satunya masalah saya adalah menangani input kata sandi dengan aman dan nyaman. Saya tidak dapat menemukan solusi yang memuaskan.
Skrip dirancang untuk dijalankan sebagai pengguna biasa dan untuk meminta kata sandi saat perintah sudo pertama kali diperlukan. Dengan cara ini, sebagian besar perintah, yang tidak memerlukan hak sudo, dijalankan sebagai pengguna normal. Apa yang terjadi (ketika skrip dijalankan dari terminal) adalah bahwa pengguna diminta kata sandi mereka satu kali dan batas waktu sudo default memungkinkan skrip untuk menyelesaikan, termasuk perintah sudo tambahan, tanpa meminta pengguna lagi. Ini adalah bagaimana saya ingin itu berfungsi ketika dijalankan di belakang GUI juga.
Masalah utama adalah bahwa menggunakan kdesudo
untuk meluncurkan skrip saya, yang merupakan cara GUI standar, berarti bahwa seluruh skrip dieksekusi oleh pengguna root. Jadi kepemilikan file ditugaskan untuk pengguna root, saya tidak bisa bergantung pada ~/
jalur, dan banyak hal lain yang kurang ideal. Menjalankan seluruh skrip sebagai pengguna root hanyalah solusi yang sangat tidak memuaskan dan saya pikir ini adalah praktik yang buruk.
Saya menghargai ide apa pun untuk membiarkan pengguna memasukkan kata sandi sudo hanya sekali melalui GUI sementara tidak menjalankan seluruh skrip sebagai root. Terima kasih.
sudo -s
(huruf kecils
) dan bukansudo -S
(huruf besars
).Ini didasarkan pada jawaban Eric Carvalho yang luar biasa. Saya mempostingnya untuk menguraikan masalah yang saya temui. Khususnya, ketika menggunakan ini, batas waktu sudo yang biasa (misalnya, 15 menit) hilang. Skrip saya, yang memiliki lebih dari 50 perintah sudo sekarang meminta kata sandi pengguna 50+ kali!
Berikut adalah contoh kerja penuh dari semua bagian dari solusi. Ini terdiri dari skrip bash, skrip "myaskpass" seperti yang disarankan Eric, dan file ".desktop". Semuanya harus 100% GUI (tidak ada interaksi terminal sama sekali), sehingga file .desktop sangat penting (afaik).
Dan skrip uji itu sendiri. Yang ini akan meminta kata sandi Anda dua kali saat menggunakan solusi ini. (Biasanya, itu akan meminta hanya sekali karena batas waktu sudo default.)
sumber
sudo -A
ditanyakan ulang kata sandi. Saya akan mencoba mencari tahu ini.Script berikut ini berfungsi melalui baris perintah, file desktop atau klik dua kali, hanya meminta kata sandi, dan pola perintah
sudo -Sp '' <your command here> <<<${sudo_password}
dapat digunakan beberapa kali di mana saja dalam file:sumber