限制linux下某个账号的访问?

限制linux下某个账号的访问?

我已经在我的 Redhat 计算机中创建了一个服务帐户。该帐户的目的是执行我创建的 bash 脚本。

bash脚本主要检查系统属性,如cpuinfo、ifconfig、网络状态、端口、进程、文件权限和设备状态等,

现在,我如何使我的服务帐户仅执行我创建的脚本,除了该帐户不应该执行任何操作,即使有人使用服务帐户凭据登录我的服务器,他们也不应该执行任何操作除了脚本执行之外,还有 ls、cp、mv、date 等基本命令。

答案1

根据您的主题linux下如何限制某个账号的访问,

您将创建该帐户以及为其创建一个新组,例如,组名称可以与帐户名称相同。结果将是只有该用户帐户位于该新组中,并且该组是完全唯一的,系统上没有其他任何帐户具有与该新服务帐户名称和服务帐户组相关的所有者或组权限。然后将 bash 脚本设置为由该服务帐户和服务组名称拥有。此外,将此帐户的登录 shell 设置为/bin/false/bin/nologin

/sbin/nologin 和 /bin/false 之间有什么区别

但请记住,您刚刚创建了一个新帐户,其唯一目的是运行脚本创建的。从安全角度来看,您只是做了一个没有什么价值的额外步骤,现在除了您之外的任何人在不知情的情况下看到这个新服务帐户在后台运行时都会挠头并想知道这到底是什么。

更好的方法是,因为它是您的脚本,所以让它归您所有 -您是一个有效的用户,当绑定到某个正在运行的进程时,每个人都会识别您的帐户- 然后在脚本上使用 setuid 位来授予其执行任务的权限,因为您提到的检查系统属性的大部分内容都需要 root 权限

我曾提到利用 SETUID,但这是不正确的,因为您使用的是外壳脚本,原因可以在这里解释: 允许在 shell 脚本上设置 setuid

但是,如果您编写并编译一个程序来执行您需要的操作,并且该程序的可执行文件归您所有,那么您可以在该可执行文件上利用 SETUID:

正确使用 setuid 位

相关内容