Steffi Ma Asked: 2018-07-22 02:30:54 +0800 CST2018-07-22 02:30:54 +0800 CST 2018-07-22 02:30:54 +0800 CST 如何写访问默认的 /etc/init.d 772 我正在尝试在 Ubuntu 16 中安装Proteios软件。该软件的要求之一是 (*) 对 $SERVICE_PATH 的写入权限(默认 /etc/init.d) 我怎样才能做到这一点? ubuntu sysvinit 2 个回答 Voted Best Answer telcoM 2018-07-22T03:18:25+08:002018-07-22T03:18:25+08:00 说明说安装脚本应该以 root 身份运行:此时它应该具有对所有内容的完全写入权限。 如果软件没有以root身份运行,/etc/init.d安装后仍然需要访问,这是很不寻常的,但如果确实需要,可以安排: 1.) 创建一个组。你可以随意命名它。选项-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 而不会用于其他任何内容,因此它不需要过多关注安全性或标准约定——这是一个危险的假设。 如果事实证明该软件只想修改自己的启动脚本,但这样做的方式是仅对脚本本身的写访问权是不够的(例如,它想在创建新文件之前备份旧文件) ,那么我可能不会向真实添加权限/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 操作其他系统服务。 Kusalananda 2018-07-22T03:06:25+08:002018-07-22T03:06:25+08:00 先决条件是对($SERVICE_PATH默认情况/etc/init.d下)和对$CATALINA_HOME. 该文档没有说明您应该以哪个用户身份运行命令,但该用户需要拥有这两个路径,是对这些路径具有写入权限的组的一部分,或者在运行需要的命令时切换到 root 帐户写入这些路径。 例如,文档说要config在$CATALINA_HOME/webapps/proteios/WEB-INF. 为此,配置文件必须可由编辑文件的用户写入。 没有明确说明需要写入这些路径的其他步骤,但我的猜测是运行提到的install,update和init脚本可能需要这个(说明确实说以 root 身份运行这些)。
说明说安装脚本应该以 root 身份运行:此时它应该具有对所有内容的完全写入权限。
如果软件没有以root身份运行,
/etc/init.d
安装后仍然需要访问,这是很不寻常的,但如果确实需要,可以安排:1.) 创建一个组。你可以随意命名它。选项
-r
使用分配给系统组的 GID 编号范围创建它,因此它不会与与普通用户关联的组混淆:2.) 将需要写入权限的用户添加
/etc/init.d
到该组:3.) 将组所有权分配
/etc/init.d
给新组。如果多个用户需要这个,只需根据需要多次重复此步骤:4.)分配组写访问权限:
5.) 确保在该目录中创建的所有新文件默认归该
proteios
组所有:我宁愿先在一个废弃的虚拟机中完成所有这些,看看这个 Proteios 软件实际上想要做什么
/etc/init.d
。该软件似乎有一个内置假设,即安装 Proteios 的计算机将仅用于 Proteios 而不会用于其他任何内容,因此它不需要过多关注安全性或标准约定——这是一个危险的假设。如果事实证明该软件只想修改自己的启动脚本,但这样做的方式是仅对脚本本身的写访问权是不够的(例如,它想在创建新文件之前备份旧文件) ,那么我可能不会向真实添加权限
/etc/init.d
,而是尝试通过在其他地方(例如/opt/proteios/etc/init.d
)创建具有适当权限的目录来重定向应用程序,添加到 Proteios 启动脚本的开头和使用 Proteios 的任何用户的环境,然后从自定义目录中创建的(每个)Proteios 启动脚本创建符号链接回到真实的
/etc/init.d
:这样,Proteios 可以随意修改自己的文件,但不能修改其他系统服务。如果它想添加其他以前未知的启动脚本,管理员将需要为它们创建符号链接,如果这些脚本需要在启动时实际启动。这应该可以防止用户通过 Proteios 操作其他系统服务。
先决条件是对(
$SERVICE_PATH
默认情况/etc/init.d
下)和对$CATALINA_HOME
.该文档没有说明您应该以哪个用户身份运行命令,但该用户需要拥有这两个路径,是对这些路径具有写入权限的组的一部分,或者在运行需要的命令时切换到 root 帐户写入这些路径。
例如,文档说要
config
在$CATALINA_HOME/webapps/proteios/WEB-INF
. 为此,配置文件必须可由编辑文件的用户写入。没有明确说明需要写入这些路径的其他步骤,但我的猜测是运行提到的
install
,update
和init
脚本可能需要这个(说明确实说以 root 身份运行这些)。