我想创建一个可以运行部分特权命令(但不是全部)的组。例如,高级用户可以访问主文件(从一个用户到另一个用户),但不应允许其运行 apt-get 命令。
我怎样才能做到这一点?
答案1
使用此sudoers
机制,您可以为特定用户或组授予特定权限。
要编辑/etc/sudoers
文件,您需要使用visudo
。
例如向用户提供或否定某些特定命令伊戈尔您可以添加行
igor ALL=(ALL) /bin/kill, /usr/bin/, !/usr/bin/apt-get
在此示例中,用户伊戈尔/usr/bin
可以使用 sudo 执行命令中的所有命令/bin/kill
,但不能执行/usr/bin/apt-get
。
命令的路径以逗号分隔,
,并以!
给予或否定获得组的 root 访问权限,对于一组命令,您可以添加以下行
%geeks ALL = (root) /usr/bin/,!/usr/bin/apt-get,!/usr/bin/aptitude,!/usr/bin/dpkg
在这种情况下,你将给予极客apt-get
aptitude
将 /usr/bin 中除和之外的所有命令的 root 访问权限分组dpkg
。
添加到群组极客用户伊戈尔 例如你可以写
# sudo usermod -a -G geeks igor
Linux 继承了 UNIX 的文件所有权和权限概念。这意味着即使没有 root 访问权限,属于同一组的用户也可以在他们之间共享文件,而不能与其他人共享。ls -l
您会在左侧看到类似这样的字符串
-rw-r--r-- 1 igor geeks 1892 Jul 10 18:30 The_not_so_short.pdf
从左到右,该字符串表示-rwxrw-r--
:(第一个位置)不是特殊文件或目录(有一个破折号-
表示该属性关闭),rwx
允许用户自己读写执行(3 个块中的第一个),允许rw-
其所在组的用户读写不执行(3 个块中的第二个),允许r--
其他用户读取、不写入、不执行(3 个块中的第三个)。可以切换每个文件或目录的每个属性。
为这个群体提供可能性仅改变目录无论权限如何,这都很难。它不存在可执行命令,cd
因为每个命令都在子进程中执行,并且只能影响其当前工作目录,而不会影响父进程的工作目录。这里有更好的解释。因此,要更改目录,您需要提供以 root 身份执行的可能性shell
,这意味着您实际上授予了完全权限……
参考文献及进一步阅读:
man sudoers
,man visudo
而且当然man sudo
- 如何仅使用几个命令即可授予某个组的 root 访问权限
- Linux / Unix 命令:sudoers