如何创建具有特定权限的用户帐户?

如何创建具有特定权限的用户帐户?

我想创建一个具有特定权限的unix用户帐户:该用户必须能够安装软件,但不能删除软件。此外,当用户登录时,root 必须收到邮件中的通知。有可能的?

我正在运行 Debian。

答案1

至于将管理权限限制为仅安装软件,可以使用 sudo:只允许用户运行进行安装的包管理工具。大概你在 /etc/sudoers 中需要这样的东西:

Cmnd_Alias SWINST = /path/to/pkg-manager install_action *

power_user hostname= NOPASSWD: SWINST

这允许power_user在计算机上hostname运行/path/to/pkg-manager带有第一个参数install_action和任意附加参数的命令,而无需输入密码(例如对于 Debian,这将转换为/path/to/apt-get install *,对于基于 SUSE 的发行版/path/to/zypper in *)。

有两件事需要记住:

  1. 包管理器必须表现良好,因为它不能允许多个行动在一个命令行上传递给它(例如pkg-manager install foo, remove bar将完全破坏它)。由于包管理器也会处理冲突,即使只是安装也可能导致软件删除,因此如果可能的话,请使用禁用此功能的开关/配置(请参阅下面的 Craig 的评论)。

  2. 您不得允许访问可以从本地文件安装包的低级包维护命令。这将允许用户准备一个权限升级包,安装它,然后你就可以挥手告别你的系统了。相反,您必须确保只能使用该命令安装受信任的软件。

对于桌面系统,现在经常使用PolicyKit基础设施,因此这将是另一种选择。

答案2

是的,可能的,在每行的最后一个选项中/etc/passwd,您为每个用户指定 shell。您可以编写一个包装器,并使用您的包装器(可能是 shell 脚本)来代替默认 shell,例如bash或。csh

您更改默认值:

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

到:

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/yourpath/yourshell.sh

然后你应该把两件事放进去yourshell.sh

  1. 用于邮寄到 root 的命令(mail, mutt command... - 阅读手册)
  2. 生成登录 shellexec /bin/bash -l

答案3

这是我对解决方案的看法:

半特权用户运行一个名为“please-install.sh”的脚本。脚本的参数是包或程序名称。

#!/bin/bash

cat <<__EOF__ | mail -s "please install" root@localhost 

When you get time, please install these programs for me:

  $@

Thanks,

__EOF__

这样做的优点是,高度复杂的神经网络经过专门在问题领域的训练(并且在解决问题的任务中经过了数百万年的进化),可以评估所有安全性和其他实际影响,并以果断和速度对每个请求做出反应。这是应得的。例如:“不,我不会在我们的生产网络服务器上安装该 Bit-Torrent 客户端”。

如果您想变得更奇特,您可以使用 getopt 来允许用户指定优先级选项,例如 -l 或 --low、-h 或 --high、-u 或 --urgent。

相关内容