gpt4 book ai didi

linux - Upstart - 无法读取/etc/shadow 除非 sudo

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:51 25 4
gpt4 key购买 nike

Upstart 的以下脚本中,我无法在 pre-script 阶段读取 /etc/shadow,除非我使用$(echo mypass | sudo -S cat/etc/shadow | grep myusername)

如果我提供我的 sudo 通行证,该脚本可以正常工作,但我想知道是否有一种方法可以做到这一点而不必在 conf 文件中写入我的通行证?

节点示例.conf

description     "Starting Node with Upstart and Forever"

start on filesystem or runlevel [2345]

stop on runlevel [06]

expect fork

respawn

respawn limit 5 30

console output

setuid myusername

env HOME=/home/myusername

env ARGS_FILE=/etc/shadow

. /etc/shadow

script

cd $HOME

exec forever start -a -l /tmp/forever.log -o /tmp/forever.stdout.log -e /tmp/forever.stderr.log --watch --watchDirectory /home/myusername/myapp/server /home/myusername/myapp/server/server.js

end script

pre-start script

ori='myusername:$6$P...'

# cur=$(echo mypass | sudo -S cat /etc/shadow | grep myusername) -> this works

cur=$(cat $ARGS_FILE | grep myusername) -> this doesn't work

if [ "$ori" = "$cur" ]

then encfs code

else rm -rf somefile

fi

end script

最佳答案

shadow 只能由 root 访问是有充分理由的:任何可以更改它的人都可以轻松获得 root 访问权限。给定一些时间,甚至可以计算出旧的 MD5 密码。底线:除非绝对必要,否则不要摆弄 /etc/shadow。基本上,这减少了更改密码的需要。

我不太确定你想要达到什么目的,但是做一个 grep $username/etc/passwd 应该给你所有你需要的信息除了散列密码。

而且 upstart 脚本不必以 root 身份运行。以任何用户身份运行守护进程都很好。这是使用 setuid 实现的节(有一个相应的 setgid)。因此,您以 root 身份安装该服务并让它放弃特权。

另一种选择是使用 user-job .确保你 enable user-jobs .

无论你做什么:不要摆弄 /etc/shadow!

关于linux - Upstart - 无法读取/etc/shadow 除非 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26690204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com