我是系统管理新手。我们建立了一个实验室,其中有服务器和客户端计算机。客户端计算机具有 LDAP 用户,该用户具有中央服务器中所有用户的工作区。因此,每当用户登录时,他的工作区将通过客户端计算机中的 NFS 服务安装,并且当他注销时,他的所有工作将保存到服务器上。
现在,我想为服务器中的本地用户提供有限的 root 访问权限。我希望该本地用户能够查看所有 LDAP 用户的主目录,而不能查看其他任何内容。我相信我正在服务器中寻找轮用户。我还认为我应该在 visudo 文件中进行一些更改,以允许对服务器中的本地用户进行有限的 root 访问。
user1, %operator ALL= /home/users
我尝试在本地用户 user1 的 visudo 文件中添加上述命令。我还将用户添加到轮组中,如下所示。
usermod -G 10 user1
但是,我没有看到任何变化。为什么我的工作方法没有达到预期效果sudo
?
由于这种方法似乎不起作用,我问:允许用户读取其他用户的主目录
答案1
有几件事:
该命令
sudo
用于将您自己提升到某个命令或一组命令的更高级别的凭据,而不是用于获取对您 (1) 不是所有者、(2) 已读取的组中的目录的访问权限对该目录的权限,或者(3)该目录没有向世界开放的其他权限。该文件
/etc/sudoers
包含给定系统的所有规则,并规定哪些用户、用户组可以以提升的方式运行哪些命令,如下所示root
通常为 )或某些其他用户帐户。你通常会这样做不是想直接编辑这个文件,虽然可以,但最好不要这样做。该命令
visudo
是编辑文件的规定方式/etc/sudoers
。如果您想查看用户有权访问哪些 sudo 凭据,最简单的方法是成为该用户并运行命令
sudo -l
。$ sudo -l Matching Defaults entries for saml on this host: env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User saml may run the following commands on this host: (ALL) ALL (root) NOPASSWD: /usr/lib/jupiter/scripts/bluetooth, (root) /usr/lib/jupiter/scripts/cpu-control, (root) /usr/lib/jupiter/scripts/resolutions, (root) /usr/lib/jupiter/scripts/rotate, (root) /usr/lib/jupiter/scripts/touchpad, (root) /usr/lib/jupiter/scripts/vga-out, (root) /usr/lib/jupiter/scripts/wifi
车轮通道
我相信您指的是用户组wheel
,这是一种授予用户成为 root 权限的旧方法(据我所知)su -
。这篇文章很好地讨论了这个组的使用,标题为:管理您的 Linux 系统。
授予访问权限/home/<user>
?
据我所知,如果不以您试图限制的其他方式授予该用户更高的权限,则没有系统的方法可以做到这一点。我想说,如果您不信任该特定用户以这种方式进行访问的责任,那么他们可能不是从事这项工作的合适人选!
团体
例如。假设我有 2 个学生和 1 个助教。学生(用户 1 和用户 2)助教(用户 3)。
所以这些组如下:
- 1级
- vbox用户1
因此,当我以上述任何用户 (1-3) 身份登录系统时,我的组将如下所示:
$ groups
users vboxusers class1
该组还需要设置在学生的主目录中:
$ ls -l /home/user1 | head -3
total 37784
drwxrwxr-x 2 saml class1 4096 May 16 22:02 alsa
drwxrwxr-x 31 saml class1 4096 Mar 26 12:09 apps
这只是一个想法,这种方法有问题,但鉴于您提供的信息是“一种方法”!
答案2
现在,我想为服务器中的本地用户提供有限的 root 访问权限。
这听起来是个坏主意。
首先,存在数据隐私问题 - 如果您不信任该用户拥有完全的 root 权限,为什么您信任他拥有您用户的数据?
其次,即使您以某种方式设法授予该用户有限的根访问权限/home
(我认为这是不可能的),现在有几种方法可以让他获得您可能不期望的完全根访问权限:
他可以创建一个符号链接
/
:cd /home ln -s / evil-symlink
现在他可以像 root 一样访问根文件系统的内容
/home/evil-symlink/
,因为它位于/home
.他可以
setuid
在里面创建可执行文件/home
。只需复制/bin/bash
到/home/bash
, dochmod u+s /home/bash
,您就拥有了自己的root
shell。
无论我能想到什么权限,它们将用户限制到某个目录的唯一方法是chroot
,根目录可以突破chroot
.
答案3
首先,你做错了什么:
user1, %operator ALL= /home/users
这允许以任何用户身份user1
运行目录中的任何命令。/home/users
如果该目录中没有可执行程序,则该规则实际上不执行任何操作。如果那里有可执行程序,则规则允许user1
运行它们。
您不能用于sudo
授予用户访问文件的权限,只能授予以其他用户身份执行命令的权限。
看允许用户读取其他用户的主目录寻找一种方法来完成您想做的事情。