我的服务器上有数百个用户需要启动相同的脚本(https://sourceforge.net/projects/igcc/)在他们登录时自动进行。我应该在他们每个人的主目录中放置一份脚本副本吗?
答案1
将脚本放在用户的主目录中并没有帮助,您仍然需要某种方法来运行它。
将脚本(或其链接)放在某个合理的目录中,然后让全局 shell 启动文件之一运行该工具(如果用户位于给定组中)。要在登录时运行,您可以在大多数系统上使用/etc/profile
或 文件/etc/profile.d/
。然后你可以用这样的方法测试组成员身份:
if id | grep -qwF specialgroup; then
/path/to/specialtool
fi
Linuxid
上的 会打印类似的内容...groups=1000(blah),4(adm),20(dialout),24(cdrom),25(floppy)...
并grep -w
查找全字匹配。只要您的组名称仅包含编程语言意义上的“单词字符”,即a-zA-Z0-9_
,这应该有效。如果他们不这样做,那么你就必须做一些不同的事情。
如果不是 GNU/Linux 系统,您可以使用 , 或者您的系统拥有的任何内容id
。groups
(当然,您也可以将脚本放在某个位置,PATH
这样您就不需要在登录脚本中嵌入完整路径。)
答案2
(无法评论,没有足够的代表......)
从评论交换中我想说,您需要将脚本设置为该组用户所拥有的(并相应地更新 ugo 权限),然后在其 .bashrc (或基于操作系统的任何等效文件)中附加一行启动所说的脚本。
顺便说一句,这似乎是一个很棒的工具。
答案3
您尝试为这些用户运行的似乎是一个 shell,而不是您希望在他们的 shell(例如 bash)变为交互式之前运行的脚本。
在这种情况下:错误的施工地点!您只需使用命令将他们的 shell 设置为该值即可chsh
。man chsh
详情请参阅。
请注意,如果不合适请忽略,因为由于某种原因您必须使用 C++ 解释器:
顺便说一句,看到 igcc 已经五年没有被触及了,从那以后又出现了多个 C++ 标准:绝对不是您想要使用的 C/C++ REPL,当您可以拥有紧贴反而。