17.sudo 用户管理
17. sudo 用户管理
实验要求:
1. 了解Linux系统中用户管理机制;
2. 为指定用户添加特殊权限。
实验器材:
软件:
1.安装了RHEL6的vmware虚拟机。
硬件:
1. PC机一台。
背景知识:
1.Sudo用户管理
在 Linux 系统中,管理员往往不止一人,若每位管理员都用 root 身份进行管理工作,根本无法弄清楚谁该做什么。所以最好的方式是:管理员创建一些普通用户,分配一部分系统管理工作给他们。
我们不可以使用 su 让他们直接变成 root,因为这些用户都必须知道 root 的密码,这种方法很不安全,而且也不符合我们的分工需求。一般的做法是利用权限的设置,依工作性质分类,让特殊身份的用户成为同一个工作组,并设置工作组权限。例如:要wwwadm 这位用户负责管理网站数据,一般 Apache Web Server 的进程 httpd 的所有者是www,您可以设置用户 wwwadm 与 www 为同一工作组,并设置 Apache 默认存放网页目录/usr/local/httpd/htdocs 的工作组权限为可读、可写、可执行,这样属于此工作组的每位用户就可以进行网页的管理了。
但这并不是最好的解决办法,例如管理员想授予一个普通用户关机的权限,这时使用上述的办法就不是很理想。这时您也许会想,我只让这个用户可以以 root 身份执行shutdown 命令就行了。完全没错,可惜在通常的 Linux 系统中无法实现这一功能,不过已经有了工具可以实现这样的功能——sudo。Sudo 是 Unix/Linux 平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的"权力" 让他们执行一些只有超级用户或其他特许用户才能完成的任务,(主要体现为命令),比如:运行一些像 mount,halt,su 之类的命令,或者编辑一些系统配置 文 件 , 像 halt , su 之 类 的 命 令 , 或 者 编 辑 一 些 系 统 配 置 文 件 , 像 /etc/mtab ,/etc/samba/smb.conf 等。这样以来,就不仅减少了 root 用户的登陆次数和管理时间,也提高了系统安全性。
sudo 通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可由数据库中所列的一些不同的命令来识别。为了获得某一特权项,有资格的用户只需简单地在命令行输入 sudo 与命令名之后,按照提示再次输入口令(用户自己的口令,不是root 用户口令)。例如,sudo 允许普通用户格式化磁盘,但是却没有赋予其他的 root 用户特权。
sudo 权力分配方法,在配置文件/etc/sudoers 按照如下约定格式添加一行信息。
用户名 主机名=(运行用户名) 可运行命令
例1. smb ALL=(ALL) /usr/sbin/useradd
例2. smb ALL=(ALL) NOPASSWD:/usr/sbin/useradd
实验步骤:
1.切换到普通用户;在终端中输入命令"su - smb",smb 用户为 root 用户创建的一个普通用户(也可以使用前面创建的 win 用户进行实验) 使用; "useradd xw"添加一个人用户,如图 3-158 所示。表明 smb 用户没有添加新用户的权限。
图3-158
在 smb 用户添加 xw 用户的界面
2. 为 smb 用户添加 useradd 添加用户权限;首先切换回 root 用户,打开配置文件"vim /etc/sudoers",在文件末尾添加 119 行内容"保存""退出",如下内容如图 3-159 所示;
图3-159
修改配置文件/etc/sudoers
3. 切换回普通用户 smb,使用命令"su – smb",然后使用"sudo useradd xw" 命令添加用户"xw",输入 smb 用户密码,通过"ls /home"命令查看 home 目录产生已产生"xw"的用户目录。
图3-160添加普通用户 xw
4.跳过输入 smb 用户密码的方式为 smb 用户添加 useradd 权限;切换回 root 用户,然后修改/etc/sudoers 文件,在文件末尾添加"smb ALL=(ALL) NOPASSWD:/usr/sbin/useradd","保存""退出",如图 3-156;
图3-161
添加普通用户 xw
5.修改配置文件/etc/sudoers
使用"su - smb",切换回 smb 用户;使用命令"sudo useradd xw1"添加普通用户 xw1,比较第 3 步可以发现,加入"NOPASSWD"参数之后再添加用户时可以跳过输入密码的步骤,如图 3-162;
图3-162
添加 xw1 用户
总结:
通过本实验我们应该熟悉在 Linux 中使用 sudo 命令对普通用户权限进行管理。