linux非root用户执行开机启动程序
程序员文章站
2022-05-10 09:10:00
...
问题
开机启动其他用户的程序或者说非root用户执行开机启动
编写开机启动脚本
编写开机启动脚本apple_tree,放到/etc/init.d,系统启动时会自动执行。
例如,/etc/init.d/apple_tree
启动脚本的内容格式,可参考linux service 。
其中的start做如下定义:
start(){
su - deploy -c ${APPLE_BIN}
}
表示切换到deploy用户,并且环境变量也改变到deploy的环境,然后执行脚本。
如果是做成后台服务,需要修改成如下方式:
start(){
daemon "su - deploy -c 'nohup ${APPLE_BIN}&'"
}
其他问题
“standard in must be a tty”
解决办法:
sudoers中的Defaults选项requiretty要求只有拥有tty的用户才能使用sudo。可以通过visudo编辑配置文件,禁用这个选项:
# Disable “ssh hostname sudo ”, because it will show the password in clear text.
# You have to run “ssh -t hostname sudo ”.
#
# Defaults requiretty