具有 sudo 访问权限的用户的安全性

具有 sudo 访问权限的用户的安全性

在大多数用户可以sudo访问其他用户 ID 的 UNIX 环境中,如何保护我的密码列表(例如在不同的数据库中)?

我有一个脚本(main.sh),其中包含以下内容$HOME

$ cat main.sh

mysql --skip-column-names -hmysql_host -umy_user -pmy_password -ADmysql_db << EOF >> /home/my_user/mysql.log
select current_date;
EOF

当另一个用户(another_user)尝试时sudo su - my_user,他/她就能看到我的 MySQL 数据库密码。

即使我输入密码.bashrc并通过脚本中的某些变量访问它,他/她也能够在文件中看到我的密码.bashrc

我怎样才能保护我的 MySQL 密码不被该用户知道another_user

答案1

因为每个拥有 root 权限的人都可以根据定义访问服务器上的所有文件 - 不,你不能。如果你不信任拥有 root 权限的人,那么你不应该从该服务器运行任何敏感文件。

不过,您仍然可以保护您的 MySQL 服务器。您可以将特定帐户用于特定操作,这样,如果您有一个执行查找的脚本,则用于该操作的帐户就不能用于删除操作。您可以只允许从一个 IP 地址访问帐户,这样,即使有人获得了您的密码,他们仍然只能从那台机器使用它。或者您可以将其设置为让脚本/cron 作业在 MySQL 服务器上运行,并让它连接到另一台服务器以获取所需的数据,例如通过使用无密码 SSH 密钥。

即使您不担心其他 sudo 用户,您也应该考虑这些事情 - 因为即使您相信服务器上所有具有 root 权限的用户都没有恶意,您仍然不能确定他们不会犯导致服务器受到损害的错误,并且您不希望任何第三方攻击者不受限制地访问您的数据库。

答案2

当您授予某人 sudo 访问权限时,您就默认信任他们。如果您不信任他们,则不要授予他们不受限制的 sudo 访问权限,或使用允许他们运行的命令列表来限制他们的访问权限。

相关内容