如何为特定命令添加密码

如何为特定命令添加密码

我一直在谷歌上搜索如何在不使用sudo.

是否可以在不实际使用的情况下添加安全功能sudo

例如:

每当我使用该xxd命令时。需要额外的输入才能运行该命令,否则它根本不起作用。

我所做的是使用xxd命令将字符串转换为垃圾十六进制。所以它基本上可以恢复为原始字符串。现在,我想要实现的是xxd -r,除了只有少数知道密码的人才能运行它之外,没有人必须能够使用它,这样十六进制值就不会恢复为原始字符串。

答案1

为了实现你想要的,我可以提出以下建议:

  1. 为每个程序创建一个用户。在您的示例中,假设您创建一个用户 uxxd(组 uxxd)。
  2. 为其提供您想要的密码(例如您的示例 123456)
  3. 仅将此程序的执行权限授予用户uxxd:chown uxxd:uxxd xxd chmod 700 xxd
  4. 为了更好的安全性,您还可以从用户 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>

相关内容