我在 CentOS 上以 root 用户身份从源代码编译了 Asterisk 11。现在我希望 Asterisk 作为用户 asterisk 组 asterisk 运行。我已取消评论
#AST_USER="asterisk"
#AST_USER="asterisk"
在
/etc/sysconfig/asterisk
我也尝试取消注释
中的相同变量/usr/local/src/asterisk-11.17.1/contrib/init.d/etc_default_asterisk
我重新启动服务星号,甚至以提到的条件重新启动服务器,当我
ps ax | grep [a]sterisk
时,我仍然得到
4457 pts/0 S 0:00 /bin/sh /usr/sbin/safe_asterisk
4459 pts/0 Sl 0:01 /usr/sbin/asterisk -f -vvvg -c
而不是
4457 pts/0 S 0:00 /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
4459 pts/0 Sl 0:01 /usr/sbin/asterisk -f -vvvg -c -U asterisk -G asterisk
我显然添加了用户星号并添加了组星号。
我恳请您告诉我如何继续让星号在星号组中作为星号运行。顺便说一句,如果您添加有关要更改哪些文件和目录的权限的说明,以便根据我的需要运行星号,那就太好了。
非常欢迎提供反馈。
停止星号
首先您需要创建星号用户(如果没有的话)(大多数情况下是在安装时自动创建的) 然后
# useradd -d /var/lib/asterisk/ asterisk
接下来将以下目录(spool、lib 和 run)的所有权授予 asterisk
#chown -R asterisk /var/spool/asterisk/ /var/lib/asterisk/ /var/run/asterisk/
从星号下载的 contrib/init.d/ 目录中复制此文件
~contrib/init.d#cp etc_default_asterisk /etc/default/asterisk
通过取消注释 asterisk 用户来编辑文件 /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"
最后编辑文件/etc/asterisk/asterisk.conf 取消注释运行用户和运行组作为星号
runuser = asterisk
rungroup = asterisk
重新启动星号
#/etc/init.d/asterisk start
这个应该没问题
在
/etc/asterisk/asterisk.conf
中您可以指定任何用户
注意:您可以更改
/var/run/asterisk/
和 /var/spool/asterisk/
文件夹的权限,也可以更改 log
文件夹的权限。
我也遇到了同样的问题。这是 contrib 脚本 /etc/rc.d/init.d/asterisk 中的一个错误
启动 safe_asterisk 守护进程的原始行是
if [ "x$COLOR" = "xyes" ]; then
export TERM=linux
daemon sh -c "$DAEMON $ASTARGS -c" >/dev/null </dev/null 2>&1 &
此行不传递任何提供的参数,即使 $ASTARGS 包含所有必需的内容。甚至 -c 也没有正确传递
如果将此行替换为:
daemon $DAEMON -U asterisk -G asterisk
它将完成绕过问题的工作。
在 CentOS 7/ Asterisk 13 上看到
注意:您拥有 /var/run/asterisk/ 和 /var/spool/asterisk/ 文件夹的更改权限
重新启动时,/var/run/asterisk 权限将重置为 755 root asterisk,并且守护程序将无法将 PID 文件写入该文件夹。 添加以下行: d /var/run/asterisk 0775 根星号 - 到 /usr/lib/tmpfiles.d/var.conf 中的 systemd 文件,以便运行文件夹在重新启动后具有正确的权限。