相对于 su 需要了解新切换的用户口令 (常常是需要 root 的口令), sudo 的运行则仅需要自己的口令即可!甚至可以配置不需要口令即可运行 sudo 呢!由于 sudo 可以让你以其他用户的身份运行命令(通常是使用 root 的身份来运行命令),因此并非所有人都能够运行 sudo ,而是仅有规范到 /etc/sudoers 内的用户才能够运行 sudo 这个命令
[root@www ~]# sudo [-b] [-u 新使用者账号] 选项与参数: -b :将后续的命令放到背景中让系统自行运行,而不与目前的 shell 产生影响 -u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。 范例一:你想要以 sshd 的身份在 /tmp 底下创建一个名为 mysshd 的文件 [root@www ~]# sudo -u sshd touch /tmp/mysshd [root@www ~]# ll /tmp/mysshd -rw-r--r-- 1 sshd sshd 0 Feb 28 17:42 /tmp/mysshd # 特别留意,这个文件的权限是由 sshd 所创建的情况喔!
但是 sudo 默认仅有 root 能使用啊!为什么呢?因为 sudo 的运行是这样的流程:
- 当用户运行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有运行 sudo 的权限;
- 若使用者具有可运行 sudo 的权限后,便让使用者『输入用户自己的口令』来确认;
- 若口令输入成功,便开始进行 sudo 后续接的命令(但 root 运行 sudo 时,不需要输入口令);
- 若欲切换的身份与运行者身份相同,那也不需要输入口令。
- visudo 与 /etc/sudoers
从上面的说明我们可以知道,除了 root 之外的其他账号,若想要使用 sudo运行属于 root 的权限命令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该账号能够使用全部或部分的root 命令功能。为什么要使用 visudo 呢?这是因为 /etc/sudoers 是有配置语法的,如果配置错误那会造成无法使用 sudo 命令的不良后果。因此才会使用 visudo 去修改,并在结束离开修改画面时,系统会去检验 /etc/sudoers 的语法就是了。
1.单一用户可进行 root 所有命令,与 sudoers 文件语法:
假如我们要让 vbird1 这个账号可以使用 root 的任何命令,那么可以简单的这样进行修改即可:
[root@www ~]# visudo ....(前面省略).... root ALL=(ALL) ALL <==找到这一行,大约在 76 行左右 vbird1 ALL=(ALL) ALL <==这一行是你要新增的! ....(前面省略).... |
使用者账号 登陆者的来源主机名=(可切换的身份) 可下达的命令
root ALL=(ALL) ALL <==这是默认值
|
- 系统的哪个账号可以使用 sudo 这个命令的意思,默认为 root 这个账号;
- 当这个账号由哪部主机联机到本 Linux 主机,意思是这个账号可能是由哪一部网络主机联机过来的,这个配置值可以指定客户端计算机(信任用户的意思)。默认值 root 可来自任何一部网络主机
- 这个账号可以切换成什么身份来下达后续的命令,默认 root 可以切换成任何人;
- 可用该身份下达什么命令?这个命令请务必使用绝对路径撰写。默认 root 可以切换任何身份且进行任何命令之意。
那个 ALL 是特殊的关键词,代表任何身份、主机或命令的意思。所以,我想让 vbird1 可以进行任何身份的任何命令,就如同上表特殊字体写的那样,其实就是复制上述默认值那一行,再将 root 改成 vbird1 即可啊!此时『vbird1 不论来自哪部主机登陆,他可以变换身份成为任何人,且可以进行系统上面的任何命令』之意
2.利用群组以及免口令的功能处理 visudo
我们在本章前面曾经创建过 pro1, pro2, pro3 ,这三个用户能否透过群组的功能让这三个人可以管理系统?可以的,而且很简单!同样我们使用实际案例来说明:
[root@www ~]# visudo <==同样的,请使用 root 先配置 ....(前面省略).... %wheel ALL=(ALL) ALL <==大约在 84 行左右,请将这行的 # 拿掉! # 在最左边加上 % ,代表后面接的是一个『群组』之意!改完请储存后离开 [root@www ~]# usermod -a -G wheel pro1 <==将 pro1 加入 wheel 的支持 |
如果你想要让 pro3 也支持这个 sudo 的话,不需要重新使用 visudo ,只要利用 usermod 去修改 pro3 的群组支持,让 wheel 也支持 pro3 的话,那他就能够进行 sudo 啰!简单吧!不过,既然我们都信任这些 sudo 的用户了,能否提供『不需要口令即可使用 sudo 』呢?就透过如下的方式:
[root@www ~]# visudo <==同样的,请使用 root 先配置 ....(前面省略).... %wheel ALL=(ALL) NOPASSWD: ALL <==大约在 87 行左右,请将 # 拿掉! # 在最左边加上 % ,代表后面接的是一个『群组』之意!改完请储存后离开 |
sudo 搭配 su 的使用方式:
很多时候我们需要大量运行很多 root 的工作,所以一直使用 sudo 觉得很烦ㄟ!那有没有办法使用 sudo 搭配 su ,一口气将身份转为 root ,而且还用用户自己的口令来变成 root 呢?是有的!而且方法简单的会让你想笑!我们创建一个 ADMINS 帐户别名,然后这样做:
[root@www ~]# visudo User_Alias ADMINS = pro1, pro2, pro3, myuser1 ADMINS ALL=(root) /bin/su - |