sudo用法简述

如题所述

第1个回答  2022-06-28

用户切换:两种,登录式和非登录式
(1)登录式切换: su - user , su -l user
(2)非登录式切换: su user -c 'COMMAND'

查看帮助文档: man sudo

以另外一个用户身份执行指定的命令
授权机制:通过sudo的授权文件实现,/etc/sudoers

查看帮助文档: man sudoers

授权文件有两类内容:

谁 通过哪些主机=(以谁的身份) 运行什么命令

查看帮助文档: man visudo
使用visudo编辑/etc/sudoers文件,直接输入visudo命令

注意:用户通过sudo获得的授权,只能以sudo命令来启动;wheel组拥有管理员权限;

格式: sudo [options] COMMAND
-u username:以指定用户的身份运行命令;
-l:列出用户能以sudo方式执行的所有命令;
-k:清除(密码)此前缓存用户成功认证的结果;

示例: fedora ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod

例如:

注释:
fedora:定义的用户
ALL=(root):指定用户,不写表示所有用户;
/usr/sbin/useradd, /usr/sbin/usermod 可运行的命令;

ALIAS_TYPE NAME=item1,item2,...

例如:

示例:
Cmnd_Alias USERADMINCMNDS=/usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-z]*,!/usr/bin/passwd root, /usr/sbin/userdel
注意:Cmnd_Alias授权非常有风险的命名时,如passwd命令,一定要谨慎;

例如:

验证:

例如:
普通用户要su - root,如果root用户没有密码,就不能切换root用户;

但是,授权这个用户能够以sudo的方式运行任何命令:
[fedora@promote ~]$ sudo su - root 表示以管理员身份切换管理员;此时只需要当前用户的密码即可运行管理员命令;

这就是为什么普通用户不需要切换管理员身份,仍然能用root身份运行命令;
在安装系统时,不设管理员密码,但是可以把第一个用户授权以管理员身份运行命令;想用管理员时直接用 sudo su -

例如:centos用户就授权以管理员身份运行;

授权任何用户,这个用户就可以以任何用户的身份,运行任何命令;这又是个安全漏洞;
将来在工作中,尽量以普通用户身份直接登录,但是授权这个普通用户的身份以管理员登录即可;使用sudo就能执行所有命令;

使用sudo会记录了日志中;

标签之后的所有命令都是生效的;

示例:
fedora ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod, PASSWD: /usr/sbin/userdel

注意:在授权需特别谨慎是命令时,要使用sudo方式执行命令需要密码,不但包含passwd命令需要密码,还有包含su命令;

如果能以管理员身份运行su命令,就相当于su到管理员不需要密码;

例如:

可以授权sudo命令中,某个命令执行时不需要密码

注意:NOPASSWD标签后的所有命令都无需密码,所以要把NOPASSWD标签写在无需密码的的命令后面;

如果能以管理员身份运行su命令,就相当于su到管理员不需要密码;
例如:fedora能以管理员身份运行su命令,这个用户就相当于管理员了

此时,普通用户fedora,就以管理员身份登录系统了;所以把用户加入wheel组之前,要慎重考虑;

相似回答