默认情况下,salt-master进程在 account 下运行root,首先,这是不必要的,因为从普通用户启动的进程也可以监听两个端口(默认为 4505 和 4506),其次,不方便:当尝试使用自动添加(对于命令salt*)外壳“发誓”关于文件的不可访问性(特别是,它“爬”到其中的日志以获得必要的东西)。
如何“教”salt-master代表非特权用户工作?
默认情况下,salt-master进程在 account 下运行root,首先,这是不必要的,因为从普通用户启动的进程也可以监听两个端口(默认为 4505 和 4506),其次,不方便:当尝试使用自动添加(对于命令salt*)外壳“发誓”关于文件的不可访问性(特别是,它“爬”到其中的日志以获得必要的东西)。
如何“教”salt-master代表非特权用户工作?
首先,您需要更改某些文件/目录的所有权(但绝不是它们的权限!)。
我从debian gnu/linux分发存储库中给出包的名称,它们可能在您的组装/安装中有所不同:
/etc/salt/pki- 包含主键和小键的目录/var/cache/salt,/var/run/salt— 缓存、套接字等/var/log/salt- 日志/srv/salt— 包含状态(states)描述和通过虚拟协议可用的文件的目录salt://所以命令看起来像这样:
其次,您需要在主配置中指定此用户。
/etc/salt/master.d在目录中创建一个任意名称并以后缀.conf(例如,/etc/salt/master.d/user.conf)结尾的文件,并在其中输入以下行:准备好!现在你可以重启salt-master进程了。
发现的问题:
salt*,某些文件/目录的所有权可能会变回。即,更新后,最好再次运行上述命令。每次执行任何命令时
salt*,日志中都会添加如下一行:总的来说,没关系,不会出错。但是,首先,这些行“污染”了日志,使得很难找到真正有用的信息,其次,当尝试使用自动完成(对于命令
salt*)时,命令行上会弹出相同的消息。目前,我发现只有一种方法可以删除这条消息——只需删除构成它的行(幸运的是,你不需要[重新]编译任何东西)。
它们位于salt-common包所拥有的文件中-
/usr/lib/python2.7/dist-packages/salt/grains/core.py(路径在您的构建/安装中可能不同)。这是补丁:如何“打”补丁,这里就不说了。茶,所有的读者都是程序员,他们应该可以做这么原始的动作。