【linux】visudo

碎碎念

visudo命令是用来修改一个叫做 /etc/sudoers 的文件的,用来设置哪些 用户 和 组 可以使用sudo命令。并且使用visudo而不是使用 vi /etc/sudoers 的原因在于:visudo自带了检查功能,可以判断是否存在语法问题,所以更加安全

基本使用

使用sudo visudo后会进入一个文件编辑界面,类似于

这些都是说明,直接用 shfit+g 跳到末尾,可以看到root的权限

就像上面说的,visudo的本质就是进入一个文件,在这个文件中决定哪些用户和组可以使用sudo命令,所以就按照这个思路解析一下这个root

用户的情形

复制代码
root ALL=(ALL) ALL

对于第一个root,这是用户名

第一个ALL,这里应该写的是主机名,用ALL就代表所有的主机都适用这条规则,通常都是设置为ALL,当你处在一个复杂的网络环境中,需要根据不同的主机设置不同的规则的话就可以把ALL改成具体的主机名

比如只对主机 db01 的 myuser 用户允许使用sudo

复制代码
myuser db01=(ALL) ALL

括号中的ALL代表的用户名,也就是说这里设置了ALL就可以以所有user的身份运行命令

假如我要用myuser2的身份运行命令

复制代码
sudo -u myuser2 <command>

这样就可以切换到myuser2,然后再执行命令

有时候括号中会写2个ALL

复制代码
myuser db01=(ALL:ALL) ALL

第二个ALL的意思是可以以任何组的身份运行命令

最后括号外面还有一个ALL,他的意思是可以用sudo运行所有命令

假如你想限定myuser只能够使用sudo运行 /bin/ls 的话,就应该写成

复制代码
myuser db01=(ALL:ALL) /bin/ls

这就是关于用户能否使用sudo的设定

并且使用sudo经常要我们输入密码,如果希望不用输入密码就可以执行sudo的话

可以使用

复制代码
myuser ALL=(ALL) NOPASSWD: ALL

在命令前面增加一个 NOPASSWD:即可

组的情形

和用户一模一样,仅仅有一点不同,那就组的名字前面有一个百分号

比如我想设置mygroup可以在所有主机上,作为所有用户和组,在执行所有命令的时候使用sudo

复制代码
%mygroup ALL=(ALL:ALL) ALL

不需要输入密码:

复制代码
%mygroup ALL=(ALL:ALL) NOPASSWD: ALL
相关推荐
林开落L16 小时前
解决云服务器内存不足:2 分钟搞定 Ubuntu swap 交换区配置(新手友好版)
运维·服务器·ubuntu·swap交换区
初恋叫萱萱16 小时前
深入解析 Rust + LLM 开发:手把手教你写一个 AI 运维助手
运维·人工智能·rust
加农炮手Jinx16 小时前
Flutter for OpenHarmony: Flutter 三方库 icon_font_generator 自动化将 SVG 图标集转化为字体文件(鸿蒙矢量资源全自动管理)
运维·flutter·华为·自动化·harmonyos·devops
我真的想 啸16 小时前
在 Ubuntu 24.04 系统上安装并使用 Codex CLI
linux·ubuntu·arcgis
雨大王51220 小时前
汽车生产智能计划助手如何提升排产效率并降低库存积压?
大数据·运维
嵌入小生00720 小时前
线程(2)/ 线程属性 /相关函数接口--- 嵌入式(Linux)
linux·嵌入式·线程·软件编程·僵尸线程·马年开工第一学·线程属性
以太浮标20 小时前
华为eNSP综合实验之- 3a认证配置案例及解析(AAA认证)
运维·tcp/ip·网络安全·华为·信息与通信
No8g攻城狮20 小时前
【Linux】Linux nano 编辑器全攻略:从入门到精通
linux·运维·编辑器·nano
zl_dfq20 小时前
Linux 之 【网络套接字编程】(固定宽度整数类型、socket常见API、netstat)
linux·网络
2301_8059629321 小时前
arduino IDE如何设置代理
运维·服务器