13.4.2 【Linux】sudo

sudo命令允许用户以其他用户(通常是root)的身份执行命令,需要用户自己的密码。只有在/etc/sudoers文件中被授权的用户才能使用sudo。visudo是安全编辑此文件的工具,确保设置语法正确。例如,可以通过visudo让特定用户或wheel群组成员拥有sudo权限,或者限制用户只能执行特定命令。从CentOS7起,默认已开放%wheel群组的sudo权限。

相对于 su 需要了解新切换的使用者密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可。sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够执行sudo , 而是仅有规范到 /etc/sudoers 内的用户才能够执行 sudo 这个指令。

事实上,一般用户能够具有 sudo 的使用权,就是管理员事先审核通过后,才开放 sudo的使用权的!因此,除非是信任用户,否则一般用户默认是不能操作 sudo 的。

sudo 的指令用法

由于一开始系统默认仅有 root 可以执行 sudo ,因此下面的范例我们先以 root 的身份来执行,等到谈到 visudo 时,再以一般使用者来讨论其他 sudo 的用法吧! sudo 的语法如下:

sudo的执行流程是这样的:

1. 当使用者执行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有执行 sudo 的权限;

2. 若使用者具有可执行 sudo 的权限后,便让使用者“输入使用者自己的密码”来确认;

3. 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);

4. 若欲切换的身份与执行者身份相同,那也不需要输入密码。

sudo 执行的重点是:“能否使用 sudo 必须要看 /etc/sudoers 的设置值, 而可使用sudo 者是通过输入使用者自己的密码来执行后续的指令串”。由于能否使用与 /etc/sudoers有关, 所以我们当然要去编辑 sudoers 文件。不过,因为该文件的内容是有一定的规范的,因此直接使用 vi 去编辑是不好的。 此时,我们得要通过 visudo 去修改这个文件。

visudo 与 /etc/sudoers

除了 root 之外的其他帐号,若想要使用 sudo 执行属于 root 的权限指令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该帐号能够使用全部或部分的root 指令功能。为什么要使用 visudo 呢?这是因为 /etc/sudoers 是有设置语法的,如果设置错误那会造成无法使用 sudo 指令的不良后果。因此才会使用 visudo 去修改, 并在结束离开修改画面时,系统会去检验 /etc/sudoers 的语法就是了。

一般来说,visudo 的设置方式有几种简单的方法,下面我们以几个简单的例子来分别说明:

假如我们要让 vbird1 这个帐号可以使用 root 的任何指令,基本上有两种作法,第一种是直接通过修改 /etc/sudoers ,方法如下:

上面这一行的四个元件意义是:

1. “使用者帐号”:系统的哪个帐号可以使用 sudo 这个指令的意思;

2. “登陆者的来源主机名称”:当这个帐号由哪部主机连线到本 Linux 主机,意思是这个帐号可能是由哪一部网络主机连线过来的, 这个设置值可以指定用户端计算机(信任的来源的意思)。默认值 root 可来自任何一部网络主机

3. “(可切换的身份)”:这个帐号可以切换成什么身份来下达后续的指令,默认 root 可以切换成任何人;

4. “可下达的指令”:可用该身份下达什么指令?这个指令请务必使用绝对路径撰写。 默认root 可以切换任何身份且进行任何指令之意。

那个 ALL 是特殊的关键字,代表任何身份、主机或指令的意思。所以,我想让 vbird1 可以进行任何身份的任何指令, 就如同上表特殊字体写的那样,其实就是复制上述默认值那一行,再将 root 改成 vbird1 即可。

II. 利用 wheel 群组以及免密码的功能处理 visudo

上面的设置值会造成“任何加入 wheel 这个群组的使用者,就能够使用 sudo 切换任何身份来操作任何指令”的意思。 你当然可以将 wheel 换成你自己想要的群组名。接下来,请分别切换身份成为 pro1 及 pro2 试看看 sudo 的运行。

如果你想要让 pro3 也支持这个 sudo 的话,不需要重新使用 visudo ,只要利用 usermod 去修改 pro3 的群组支持,让 pro3 用户加入 wheel 群组当中,那他就能够进行 sudo。

从 CentOS 7 开始,在 sudoers 文件中,默认已经开放 %wheel 那一行,以前的CentOS 旧版本都是没有启用的。

III. 有限制的指令操作:

比方说,系统上面的 myuser1 仅能够帮 root 修改其他使用者的密码时,亦即“当使用者仅能使用 passwd 这个指令帮忙 root 修改其他用户的密码”时,你该如何撰写呢?可以这样做:

上面的设置值指的是“myuser1 可以切换成为 root 使用 passwd 这个指令”的意思。其中要注意的是: 指令字段必须要填写绝对路径才行!否则 visudo 会出现语法错误的状况发生! 此外,上面的设置是有问题的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯西极限存在准则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值