Pertanyaan Bagaimana cara membuat / sbin / shutdown, / sbin / reboot dll. Memerlukan sudo lagi di 16.04?


Untuk alasan apa pun, kita tidak lagi perlu menjadi root (atau menggunakan sudo) untuk berlari /sbin/shutdown, /sbin/reboot dll.

Sepertinya ini karena mereka yang dapat dieksekusi sekarang menjadi symlink /bin/systemctl yang menangani semuanya sebagai pengguna biasa.

Namun, bagaimana jika saya mau shutdown dan reboot untuk meminta otentikasi root lagi? Bagaimana saya bisa mencapai ini?


18
2018-06-19 19:14


asal


Saya kira peraturan polkit. Memodifikasi askubuntu.com/a/570969/158442 sesuai kebutuhan (digunakan pkaction | grep login1 untuk peraturan lain yang menarik) - muru
(contoh aturan untuk mewajibkan hak istimewa admin: askubuntu.com/a/744094/158442) - muru
Bukankah ini hanya jika Anda adalah satu-satunya orang yang masuk. Jika ada orang lain yang masuk ke sistem, Anda akan diminta untuk memasukkan kata sandi root. - ognjen
Itu mungkin bukan jawaban yang Anda harapkan, tetapi perilaku serupa dapat disebabkan oleh pengguna admin lain setelah mengedit '/ etc / sudoers' Anda. Jika ini yang menyebabkan masalah Anda, Anda dapat mengubahnya kembali dengan mengetik sudo visudo dan periksa apakah ada garis dengan path ke executable ini. - Damien


Jawaban:


Systemd memang menangani shutdown, reboot dan perintah lainnya, dan hak akses default yang ditetapkan bersifat permisif. Untuk mengubahnya, Anda perlu membuat aturan Polkit. Membuat .pkla file di /etc/polkit-1/localauthority/50-local.d (mengatakan, confirm-shutdown.pkla) mengandung:

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

Berbagai perintah shutdown, reboot, dll adalah, dalam istilah Polkit, tindakan dalam org.freedesktop.login1, sebagai contoh, org.freedesktop.login1.power-off, org.freedesktop.login1.reboot, dll. Masalah khusus di sini adalah konfigurasi default, yang ada di dalamnya /usr/share/polkit-1/actions/org.freedesktop.login1.policy:

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

Perhatikan bahwa ini memungkinkan pengguna aktif untuk mematikan, reboot, dll.


5
2018-02-18 15:26





Kamu dapat memakai chmod perintah.

  • Jika Anda ingin memberikan akses ke hanya root, Anda dapat menulis:

    chmod 700 directory/to/the/file
    
  • Jika Anda ingin memberikan permisson ke root dan grup sudo maka Anda dapat menulis:

    chmod 770 directory/to/the/file
    
  • Jika Anda ingin mengubah grup file dari sudo ke yang lain (seperti pengguna atau admin) Anda perlu mengetikkan:

    chown owner:group directory/to/the/file
    
  • Jika Anda ingin kembali, jalankan:

    chown root:sudo filedirectory 
    

Catatan: Anda mungkin harus menggunakan sudo ke perintah ini, atau masuk ke akun root


0
2017-08-02 13:40



Perhatikan bahwa mencoba mengubah izin tautan akan mengubah izin dari target (dalam hal ini /bin/systemctl) jadi menjalankan chmod / sbin / shutdown akan berdampak pada semua tautan yang mengarah ke /bin/systemctl sebagai izin untuk bin/systemctl akan diubah seperti yang dikonfirmasi oleh perintah $ ll /bin/systemctl -rwx ------ 1 root root 659848 Jan 18 16:04 / bin / systemctl * - Elder Geek
Jika Anda perlu mengubahnya kembali, izin defaultnya adalah -rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl - Elder Geek


Sebagai mengubah hak akses dari symlink pada sistem Linux tidak mengubah izin dari tautan tetapi sebaliknya file yang dituju (Di Ubuntu setidaknya). Saya akan berpikir cara paling aman untuk mencapai ini adalah dengan menghapus tautan, dan membuat ulang dengan yang diperlukan umask untuk mendapatkan hasil yang Anda inginkan.

Pos terkait lainnya dapat ditemukan sini


0
2018-02-13 19:47





Anda dapat membuat skrip yang memeriksa apakah pengguna menjalankannya dengan izin root atau tidak.
Maka ia akan menjalankan perintah systemctl atau mengembalikan kesalahan.

#! / bin / bash
jika ["$ (whoami)"! = "root"]; kemudian
    echo "Maaf, kamu bukan root."
    keluar 1
lain
    (perintah shutdown sistemctl)
fi

Sumber


-1
2018-06-30 19:56



Apa yang menghentikan pengguna non-root dari hanya melewati skrip ini? - Robie Basak


Coba ubah izinnya di terminal. Anda dapat membuatnya hanya dapat dieksekusi oleh grup tertentu, seperti roda atau admin. Sayangnya (atau mungkin untungnya), file hanya dapat memiliki satu kepemilikan grup sehingga chown tidak akan berfungsi dengan sendirinya. Coba "sudo chown root: roda / sbin / shutdown" dan kemudian "sudo chmod g + x / sbin / shutdown". Ini akan membuat file dieksekusi hanya oleh root dan admin (shudders) dan sudoers akan diminta memasukkan kata sandi mereka.


-1
2017-07-13 23:31



Kelompok "roda" adalah sesuatu dari Arch Linux dan mungkin distro lain, tetapi jelas tidak pada Ubuntu btw. - Byte Commander
Ini tidak efektif. Seorang pengguna hanya dapat mengunduh binari sistemctl dari tempat lain, dan jalankan itu sebagai gantinya. - Robie Basak
@Robie, Anda bisa melakukannya dengan solusi apa saja. Anda bisa menekan tombol power. Solusi saya berfungsi untuk apa yang dia minta. - chevydog