Tôi đã có ứng dụng máy chủ web của mình bắt đầu khởi động bằng cách sử dụng upstart. Đây là kịch bản mới nhất:
# 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
Điều này hoạt động hoàn hảo trên máy chủ Ubuntu 10.04 LTS và tôi rất hài lòng về nó.
Tuy nhiên, tôi có một tập lệnh shell triển khai đăng nhập bằng SSH mainuser
(đây không phải là sudoer) và sau đó sẽ cập nhật thư mục làm việc lên phiên bản triển khai mới nhất.
Vấn đề ở đây là dịch vụ cần được khởi động lại để các ứng dụng tải các tệp nguồn mới. Tuy nhiên, mainuser
có được một ...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
... Khi cố gắng ngăn chặn nó. Tôi phải chạy sudo stop webapp
, nhưng người dùng này không thể làm điều này vì anh ta không phải là một kẻ lừa đảo. Vì lý do bảo mật, tôi cũng không muốn anh ta trở thành một sudoer, cộng với tôi không muốn chèn mật khẩu sudo.
Vậy làm thế nào để tôi cho phép mainuser
chạy stop webapp
và start webapp
?
/sbin/stop webapp
tôi nhận được stop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
. Làm thế nào tôi sẽ cho phép mainuser
chỉ thực hiện lệnh này?