作为万维网数据启动守护进程

有没有一个好的方法是像普通用户一样启动守护进程?

我想在我的家庭服务器上放一些脚本来启动和停止像proftpd,mysql和samba这样的服务。 我试过这样,但没有运气。

sudo -u root -S /etc/init.d/proftpd start </ home / name / password

我假设你正试图给www-data用户启动和停止某些守护进程的能力,但是你不想改变守护进程运行的用户。 你可以用sudo轻松做到这一点。 首先,运行visudo来安全地编辑/etc/sudoers 。 现在,定义一个命令别名,列出您希望www-data用户能够控制的守护进程的所有init脚本。 别名的名称是任意的。 我不知道debian上init脚本的确切名称。 总的来说,这条线看起来像这样

Cmnd_Alias WEBDAEMONS /etc/init.d/proftpd, /etc/init.d/mysql, /etc/init.d/samba

接下来,授权www-data用户在安装了sudoers文件的任何服务器上以root身份运行这些命令,而不使用密码。 这应该看起来像

www-data ALL = (root) NOPASSWD: WEBDAEMONS

最后,保存文件并退出visudo。 此时,您应该能够以www-data用户身份login,并使用sudo运行放在命令别名中的命令,而无需input密码。 你可以用下面的东西来testing它:

billy@example:~$ sudo -i -u www-data bash
[sudo] password for billy:
www-data@example:~$ sudo /etc/init.d/proftpd restart
Restarting proftpd
www-data@example:~$ exit

如果你的守护进程不能和start-stop-daemon一起玩,你可以使用sudo -u www-data / path / to /命令

尝试像这样:

 start-stop-daemon --start --chuid www-data 

详细信息在man start-stop-daemon(8)

启动 – 停止守护进程手册页

请注意,在ProFTPd的情况下,你应该只是把:

 User www-data 

在你的proftpd.conf文件中。

ProFTPd用户指令文档

对于MySQL,把:

 user = someusername 

/etc/mysql/my.cnf

mysqld用户选项文档


对于密码位,我假设你正在尝试input你的sudo密码?

这不是一个好办法。

更好的方法是通过visudo/etc/sudoers添加这样的行:

 MYDAEMONS = /home/user/bin/startproftpd, /home/user/bin/startmysql youruser ALL = (root) NOPASSWD: MYDAEMONS 

但是我认为我们还是错过了一些东西。 你为什么需要这个脚本? 这只是改变守护进程运行的用户吗?