13.4.2 【Linux】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 会出现语法错误的状况发生! 此外,上面的设置是有问题的。

相关推荐
戴西软件3 小时前
戴西CAxWorks.VPG车辆工程仿真软件技术解析(上)——安全仿真体系的自动化构建
运维·网络·数据库·人工智能·算法·安全·自动化
数据百晓通3 小时前
2026 智能体重构数据治理:全链路 AI、云生态、场景嵌入赛道解析
大数据·运维·人工智能
LuDvei4 小时前
怎么把数据上传到云端
运维·服务器
奇特認4 小时前
数据库MySQL 1.安装环境部署
linux·运维·服务器
小小龙学IT4 小时前
Day 26-27 项目实战:从零构建一个高并发聊天室(epoll + 线程池)
linux·服务器·c语言·开发语言·网络
光源【时光寸寸又逢君】4 小时前
回放时间定位问题
运维·服务器
风静如云4 小时前
Yocto:关于Layer
linux
无足鸟ICT4 小时前
【RHCA+】for循环
linux
翼龙云_cloud4 小时前
阿里云国际代理商:Redis缓存实例配置和性能优化 从参数调优到持久化
运维·redis·阿里云·缓存·云计算
雨声不在4 小时前
vm.mmap_rnd_bits 引发 ASAN CPU 100% 问题解析
linux·服务器·网络