sudo指令的用法

相对于 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 的运行是这样的流程:

  1. 当用户运行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有运行 sudo 的权限;
  2. 若使用者具有可运行 sudo 的权限后,便让使用者『输入用户自己的口令』来确认;
  3. 若口令输入成功,便开始进行 sudo 后续接的命令(但 root 运行 sudo 时,不需要输入口令);
  4. 若欲切换的身份与运行者身份相同,那也不需要输入口令。
所以说,sudo 运行的重点是:『 能否使用 sudo 必须要看 /etc/sudoers 的配置值,而可使用 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  <==这一行是你要新增的!
....(前面省略)....
有趣吧!其实 visudo 只是利用 vi 将 /etc/sudoers 文件呼叫出来进行修改而已,所以这个文件就是 /etc/sudoers 啦!这个文件的配置其实很简单,如上面所示,如果你找到 76 行 (有 root 配置的那行) 左右,看到的数据就是:
使用者账号  登陆者的来源主机名=(可切换的身份)  可下达的命令
root                         ALL=(ALL)           ALL   <==这是默认值
上面这一行的四个组件意义是:

  1. 系统的哪个账号可以使用 sudo 这个命令的意思,默认为 root 这个账号;
  2. 当这个账号由哪部主机联机到本 Linux 主机,意思是这个账号可能是由哪一部网络主机联机过来的,这个配置值可以指定客户端计算机(信任用户的意思)。默认值 root 可来自任何一部网络主机
  3. 这个账号可以切换成什么身份来下达后续的命令,默认 root 可以切换成任何人;
  4. 可用该身份下达什么命令?这个命令请务必使用绝对路径撰写。默认 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 的支持
上面的配置值会造成『任何加入 wheel 这个群组的使用者,就能够使用 sudo 切换任何身份来操作任何命令』的意思。


如果你想要让 pro3 也支持这个 sudo 的话,不需要重新使用 visudo ,只要利用 usermod 去修改 pro3 的群组支持,让 wheel 也支持 pro3 的话,那他就能够进行 sudo 啰!简单吧!不过,既然我们都信任这些 sudo 的用户了,能否提供『不需要口令即可使用 sudo 』呢?就透过如下的方式:

[root@www ~]# visudo  <==同样的,请使用 root 先配置
....(前面省略)....
%wheel     ALL=(ALL)   NOPASSWD: ALL <==大约在 87 行左右,请将 # 拿掉!
# 在最左边加上 % ,代表后面接的是一个『群组』之意!改完请储存后离开
重点是那个 NOPASSWD 啦!该关键词是免除口令输入的意思喔!


sudo 搭配 su 的使用方式:

很多时候我们需要大量运行很多 root 的工作,所以一直使用 sudo 觉得很烦ㄟ!那有没有办法使用 sudo 搭配 su ,一口气将身份转为 root ,而且还用用户自己的口令来变成 root 呢?是有的!而且方法简单的会让你想笑!我们创建一个 ADMINS 帐户别名,然后这样做:

[root@www ~]# visudo
User_Alias  ADMINS = pro1, pro2, pro3, myuser1
ADMINS ALL=(root)  /bin/su -
接下来,上述的 pro1, pro2, pro3, myuser1 这四个人,只要输入『 sudo su - 』并且输入『自己的口令』后,立刻变成 root 的身份!不但 root 口令不会外流,用户的管理也变的非常方便!这也是实务上面多人共管一部主机时常常使用的技巧呢!这样管理确实方便,不过还是要强调一下大前提,那就是『 这些你加入的使用者,全部都是你能够信任的用户』!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值