我正在考虑以普通用户身份在系统启动时运行命令。目前,为此,我使用如下语法:
su -c 'command with some arguments' user
但我认为在 ~/.rc.local 中拥有一个每个用户的 rc.local 文件可能会有所帮助,该文件会在启动时自动以用户身份运行。我想出的代码是这样的:
awk -F":" '{ if ($3 >= 1000) print $1, $6 }' /etc/passwd | while read u h
do
[ -x "$h/.rc.local" ] && su -c "cd $h; ./.rc.local" $u
done
这将被添加到 /etc/rc.local。它搜索每个非系统用户的主目录(即,uid >= 1000),如果文件存在并且可执行,它会 cd 到用户主目录并以用户身份执行该脚本。
对我来说,这似乎消除了任何安全风险来源,因为它将以用户而不是 root 身份执行脚本,但我最近被提醒我缺乏安全知识,所以我提出了这个问题:这是一个坏主意?
现在,我只会在我的家用电脑上运行它,而我的家用电脑只有一个非系统用户。几年后,我的女儿在电脑上获得了自己的帐户,但除此之外,完全陌生的人无论如何也无法访问它。
那么,是否有任何我忽略的潜在安全漏洞?此外,是否有更优雅的方式来编写该命令?