Apakah ada cara untuk memungkinkan pengguna untuk menjalankan perintah hanya 2 hari

13

Bagaimana cara memberi izin perintah sudo untuk waktu tertentu? apakah ada cara untuk memberikan hak untuk melakukan perintah tertentu selama 2 hari hanya dalam file sudoers.?

Abbas Kapasi
sumber

Jawaban:

18

File sudoers tidak mendukung pembatasan berdasarkan waktu tetapi ada metode yang mudah. Buat file dengan perubahan Anda di /etc/sudoers.d/(dengan sudo visudo -f /etc/sudoers.d/yourfile):

Tambahkan ke file (contoh:) file.shberikut ini

mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile

Dan ini akan menonaktifkan perubahan Anda:

 sudo at -f file.sh 2pm + 2 days

Contoh:

at -f file.sh 2pm + 2 days
warning: commands will be executed using /bin/sh
job 4 at Thu Oct 15 14:00:00 2015

Dalam hal ini, file akan dipindahkan pada pukul 14:00 2 hari setelah Anda mengeluarkan perintah. The at pengguna memiliki beberapa pilihan (Anda dapat menggunakan waktu, hari, minggu, bulan, tahun, kata kunci seperti berikutnya atau menambah / kurangi berjangka waktu). Lakukan beberapa tes dengan opsi untuk memastikan Anda memahaminya (Sesuatu untuk dipertimbangkan: itu penting jika Anda memulai atsebelum atau setelah 14:00 pada hari itu sendiri.)

atjuga selamat dari reboot jadi alat yang bagus untuk digunakan untuk hal-hal semacam ini. Dan Anda dapat beralih akses ...

sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 2 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 4 days
sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 6 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 8 days

dan membuat pengguna menjadi gila (wtf sekarang saya bisa melakukan ini).

README di /etc/sudoers/:

# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.

Jika saya membaca ini dengan benar itu tidak akan menjalankan file dengan "." di mana saja dalam nama. Jadi mvperintah 1 saya menempatkan "." di depan membuatnya juga tidak terlihat. Jika diasumsikan dengan benar, Anda dapat menempatkan "." dimana saja. Hati-hati dengan "~", yang digunakan sebagai fitur "cadangan" oleh editor seperti gEdit.


attidak diinstal secara default. Untuk memasang

sudo apt-get install at
Rinzwind
sumber
Thanx, saya sudah memikirkannya tetapi situasinya adalah beberapa pengguna menggunakan file untuk tujuan mereka sendiri sehingga tidak mungkin untuk membuat cadangan dan mengembalikan file sudoers setiap kali karena pengguna lain juga memodifikasi file sudoers yang sama sehingga ketika saya mengembalikan file lama semua perubahan yang dilakukan oleh pengguna ohter akan hilang ...
Abbas Kapasi
2
Bagaimana dengan Tuan ini? Oh dan mungkin saya sarankan beberapa pengguna Anda untuk juga menggunakan sudoers.d dengan nama file mereka sendiri. Tampaknya jauh lebih baik daripada mengedit sudoers.
Rinzwind
@AbbasKapasi membuat file baru di /etc/sudoers.dyang tidak akan digunakan oleh pengguna Anda yang lain.
muru
Saya pikir perintah yang digunakan di seluruh jawaban seharusnya mv, bukan cp.
Cthulhu
3
dimana kamu melihat cp? peluit polos
Rinzwind