答案1
说明说安装脚本应该以 root 身份运行:此时它应该具有对所有内容的完全写入访问权限。
如果软件不是以 root 身份运行,但/etc/init.d
安装后仍需要访问,这很不寻常但如果确实需要的话可以安排:
1.) 创建一个组。您可以随意命名它。 Option-r
使用分配给系统组的 GID 编号范围创建它,因此它不会与普通用户关联的组混淆:
sudo groupadd -r proteios
2.) 将需要写入权限的用户添加/etc/init.d
到该组:
sudo usermod -a -G proteios someuser
3.) 将组所有权分配/etc/init.d
给新组。如果多个用户需要此操作,只需根据需要多次重复此步骤即可:
sudo chgrp -R proteios /etc/init.d
4.) 分配组写访问权限:
sudo chmod -R g+rwX /etc/init.d
5.) 确保默认情况下在该目录中创建的所有新文件都归该proteios
组所有:
sudo chmod g+s /etc/init.d
我更喜欢首先在一次性虚拟机中完成所有这些工作,看看这个 Proteios 软件实际上想要用/etc/init.d
.该软件似乎有一个内置的假设,即安装 Proteios 的计算机将仅用于 Proteios 而不是其他任何东西,因此它不需要太关心安全性或标准约定 - 这是一个危险的假设。
如果事实证明软件只想修改自己的启动脚本,但仅对脚本本身进行写访问是不够的(例如,它想在创建新文件之前备份旧文件) ,那么我可能不是添加权限到 real /etc/init.d
,但尝试通过在其他地方创建具有适当权限的目录(例如/opt/proteios/etc/init.d
)来重定向应用程序,添加
export SERVICE_PATH=/opt/proteios/etc/init.d
到 Proteios 启动脚本的开头以及使用 Proteios 的任何用户的环境,然后从自定义目录中创建的(每个)Proteios 启动脚本创建回到真实目录的符号链接/etc/init.d
:
sudo ln -s /opt/proteios/etc/init.d/* /etc/init.d/
这样,Proteios可以随意修改自己的文件,但不能修改其他系统服务。如果想要添加其他以前未知的启动脚本,并且这些脚本需要在引导时实际启动,则管理员将需要为它们创建符号链接。这应该可以防止用户通过 Proteios 操纵其他系统服务。
答案2
前提是要有写入权限$SERVICE_PATH
(/etc/init.d
默认)和到$CATALINA_HOME
。
该文档没有说明您应该以什么用户身份运行命令,但是该用户需要拥有这两个路径,成为对这些路径具有写访问权限的组的一部分,或者在运行需要的命令时切换到 root 帐户写入这些路径。
例如,文档说要config
编辑$CATALINA_HOME/webapps/proteios/WEB-INF
.为此,配置文件必须可由编辑该文件的用户写入。
没有明确说明需要写入这些路径的其他步骤,但我的猜测是运行提到的install
,update
和init
脚本可能需要这样做(说明确实说以 root 身份运行这些)。