如何写入对默认/etc/init.d的访问

如何写入对默认/etc/init.d的访问

我正在尝试安装蛋白质Ubuntu 16 中的软件。该软件的要求之一是

  • (*) 对 $SERVICE_PATH 的写访问权限(默认 /etc/init.d)

我怎样才能实现这个目标?

答案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,updateinit脚本可能需要这样做(说明确实说以 root 身份运行这些)。

相关内容