有没有一个好的方法是像普通用户一样启动守护进程?
我想在我的家庭服务器上放一些脚本来启动和停止像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
但是我认为我们还是错过了一些东西。 你为什么需要这个脚本? 这只是改变守护进程运行的用户吗?