我一直在谷歌上搜索如何在不使用sudo
.
是否可以在不实际使用的情况下添加安全功能sudo
?
例如:
每当我使用该xxd
命令时。需要额外的输入才能运行该命令,否则它根本不起作用。
我所做的是使用xxd
命令将字符串转换为垃圾十六进制。所以它基本上可以恢复为原始字符串。现在,我想要实现的是xxd -r
,除了只有少数知道密码的人才能运行它之外,没有人必须能够使用它,这样十六进制值就不会恢复为原始字符串。
答案1
为了实现你想要的,我可以提出以下建议:
- 为每个程序创建一个用户。在您的示例中,假设您创建一个用户 uxxd(组 uxxd)。
- 为其提供您想要的密码(例如您的示例 123456)
- 仅将此程序的执行权限授予用户uxxd:
chown uxxd:uxxd xxd
chmod 700 xxd
- 为了更好的安全性,您还可以从用户 uxxd 中删除登录 shell(根据您的系统,您可以将其替换为
/bin/nologin
例如)
现在要启动您的程序,您需要:
su uxxd -c xxd
如果该程序要为启动它的用户创建文件,则该用户可能应该位于 uxxd 组中。这取决于系统上的默认 umask,并且可以更改。
答案2
这么晚才回复很抱歉。
我使用了其他命令而不是 xxd,因为它不支持密码。
我使用 openssl 命令,每次加密密码时都可以在其中输入密码:
openssl enc -aes-128-cbc -a -salt -pass pass:test123
现在,如果我需要解密它。我需要使用:
openssl enc -aes-128-cbc -a -d -salt -pass pass:test123
感谢大家的帮助。
答案3
这不太安全
你可以将其添加到/etc/profile
xxd()
{
if [ $1 = "123456" ]; then
xxd ${@:2}
else
echo "sorry command not available"
fi
}
/usr/bin/xxd()
{
if [ $1 = "123456" ]; then
xxd ${@:2}
else
echo "sorry command not available"
fi
}
您可以将命令运行为 xxd 123456 -r ...
不过,您必须限制对二进制文件的读取访问权限,这样它就无法被复制。
任何用户也可以读取 /etc/profile 并查看密码,您可以将它们放入没有读取访问权限的脚本 xxdcmd.sh 中,并以某种方式运行它。
无论如何,我认为一个好的解决方案是关于拥有用户/组的建议,但我认为找到其他方法会很有趣。
干杯!
PS:这将是您最终想要实现的目标的一个很好的解决方案
gpg -c <filename>
gpg -d <filename.gpg>