Saya sudah mendapatkan aplikasi server web saya mulai saat boot menggunakan pemula. Ini adalah skrip pemula:
# web app node upstart file at /etc/init/webapp.conf
description "web application"
start on started mongodb
stop on runlevel [06]
respawn
respawn limit 10 100
env NODE_ENV=production
pre-start script
ulimit -n 2048
end script
exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod
Ini berfungsi dengan sempurna di server Ubuntu 10,04 LTS dan saya sangat senang karenanya.
Namun, saya memiliki skrip shell penempatan yang masuk menggunakan SSH sebagai mainuser
(ini bukan sudoer) dan kemudian akan memperbarui direktori kerja ke versi penyebaran terbaru.
Masalahnya di sini adalah bahwa layanan perlu di-restart sehingga aplikasi memuat file sumber baru. Namun, mainuser
mendapat ...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
... ketika mencoba menghentikannya. Saya harus menjalankan sudo stop webapp
, tetapi pengguna ini tidak dapat melakukan ini karena ia bukan sudoer. Untuk alasan keamanan saya tidak ingin dia menjadi sudoer juga, ditambah saya tidak ingin memasukkan kata sandi sudo.
Jadi, bagaimana cara saya mainuser
menjalankan stop webapp
dan menjalankan start webapp
?
/sbin/stop webapp
saya mengertistop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
. Bagaimana saya mengizinkanmainuser
hanya menjalankan perintah ini?Jawaban:
sudo sangat bisa dikonfigurasi, Anda dapat mengizinkan pengguna ini untuk menjalankan serangkaian perintah terbatas tanpa meminta kata sandi. Baris berikut dalam
/etc/sudoers
harus melakukan apa yang Anda inginkan:sumber
man sudoers
? Saya merasa cukup sulit untuk menguraikan.Unable to connect to system bus
. Lebih lanjut: Izinkan grup non-sudo mengontrol pekerjaan