GNU/Linux >> Belajar Linux >  >> Linux

Bisakah saya membuat skrip selalu dijalankan sebagai root?

Berhati-hatilah:skrip yang digabungkan dengan setuid berbahaya!

Pertama, silakan lihat pertanyaan/jawaban ini, terutama pada jawaban dan peringatan keamanan ini.

Jika Anda masih ingin menjalankan skrip Anda dengan setuid set, maka Anda dapat menulis program C singkat sebagai pembungkus dan mengatur setuid bit pada biner yang dikompilasi.

Contoh pembungkus:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

Solusi lain menggunakan sudo (disebutkan di sini):

  1. Sebagai root, cegah akses tulis (dan mungkin lainnya) ke skrip Anda:

    chown root /absolute/path/to/your/script.sh
    chmod 700 /absolute/path/to/your/script.sh
    
  2. Verifikasi bahwa tidak seorang pun kecuali root yang dapat mengganti skrip , mis. dengan memodifikasi hak akses folder induk:

    chown root /absolute/path/to/your/
    chmod 755 /absolute/path/to/your/
    
  3. Ubah hak akses sudo di /etc/sudoers dengan visudo :

    ALL    ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
    

    Detail lebih lanjut tentang pengaturan (misalnya membatasi akses ke pengguna atau grup tertentu) dapat ditemukan di halaman manual sudoers.

Setelah itu, semua pengguna dapat menjalankan skrip sebagai root tanpa kata sandi:

sudo /absolute/path/to/your/script.sh

Ini mirip dengan menggunakan solusi pembungkus/setuid di atas.


Cara termudah dan teraman adalah menggunakan bit SETUID dalam izin file. Dengan begitu, izin perintah akan ditingkatkan menjadi izin pemilik file.

untuk mencegah skrip dari edisi, jangan menyetel bit tulis untuk semua orang.


Linux
  1. Bisakah Skrip Bash Dihubungkan ke File?

  2. Bagaimana Cara Membuat Skrip A Sebagai Root Secara Retroaktif?

  3. Bagaimana cara membuat skrip sed ini lebih cepat?

  1. tidak dapat sumber skrip di direktori saat ini

  2. Tidak dapat membuat menuconfig

  3. Bagaimana cara menjalankan skrip bash?

  1. Bisakah file .sh menjadi malware?

  2. Mengapa saya tidak bisa menghapus file ini sebagai root?

  3. Apakah ada file yang selalu ada dan pengguna 'normal' tidak dapat mengaktifkannya?