美文网首页
sudo用法简述

sudo用法简述

作者: SRE1 | 来源:发表于2019-06-10 12:55 被阅读0次

su命令:switch user

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

查看帮助文档:man sudo

sudo命令:类似于以管理员身份运行

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

查看帮助文档:man sudoers

授权文件有两类内容:

  • 别名的定义,即为变量;
  • 授权项,可使用别名进行授权,要先定义别名;

授权项(每一行一个授权项)格式:
who where=(runas) commands
user hosts=(runas) commands

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

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

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

sudo命令用法

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

useradd centos
sudo -u centos whoami 管理员可以任何身份运行任何命令
usermod -aG wheel centos  把用户vuser加入wheel组拥有管理员权限;
echo centos |passwd --stdin centos
id centos
su - centos
[fedora@promote ~]$ sudo -l 输入centos用户的密码才能显示;
(ALL) ALL 表示拥有所有权限;
[fedora@promote ~]$ sudo -u root whoami
显示:root

[fedora@promote ~]$ sudo -u root useradd fedora 以root身份添加用户;
[fedora@promote ~]$ tail /etc/passwd

who:用户
username:单个用户;
#uid:单个用户的ID号;
%groupname:组内的所有用户;
%#gid:组内的所有用户;
user_alias:用户别名;

where:主机地址
ip或hostname:单个主机;
NetAddr:网络地址;支持多种表示格式;
host_alias:主机别名;

whom(ranas):以指定用户身份运行
username:单个用户;
#uid:单个用户的ID号;
runas_alias:以指定用户身份运行;

commands:命令
command:单个命令;
directory:指定目录内的所有应用程序;
sudoedit:特殊权限,可编辑sudoers文件,可用于向其它用户授予sudo权限;

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

例如:

[root@promote ~]# echo fedora |passwd --stdin fedora
[root@promote ~]# which useradd
[root@promote ~]# which usermod
[root@promote ~]# visudo 表示编辑/etc/sudoers文件;
(可以使用单个文件放在/etc/sudoers.d目录下)
fedora ALL=(root)   /usr/sbin/useradd, /usr/sbin/usermod

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

[fedora@promote ~]# su - fedora 登录fedora用户;
[fedora@promote ~]$ sudo -l 列出权限;
[fedora@promote ~]$ sudo /usr/sbin/useradd slackware
[fedora@promote ~]$ tail -1 /etc/passwd
[fedora@promote ~]$ sudo -userdel -r slackware 但不能执行此命令;
定义别名的方法

ALIAS_TYPE NAME=item1,item2,...

ALIAS_TYPE:4种,注意书写格式大小写;
User_Alias:用户别名
Host_Alias:很少用,不做说明;
Runas_Alias:很少用,不做说明;
Cmnd_Alias:命令别名

NAME:别名的名称字符,必须使用全大写字母;

例如:

User_Alias USERADMINS=tom,jerry
Cmnd_Alias USERADMINCMNDS=/usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd

USERADMINS   ALL=(root)   USERADMINCMNDS

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

例如:

[root@promote ~]# visudo
User_Alias USERADMINS=tom, jerry
Cmnd_Alias USERADMINCMNDS=/usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd, /usr/sbin/userdel
USERADMINS      ALL=(root)     USERADMINCMNDS

[root@promote ~]# su - tom
[fedora@promote ~]$ sudo -l 第一次要输入密码;查看用户拥有的权限;密码保存5分钟;
[fedora@promote ~]$ useradd user1 不能执行;要以sudo运行命令;
[fedora@promote ~]$ sudo useradd user1 添加用户;
[fedora@promote ~]$ tail -1 /etc/passwd 添加成功;
[fedora@promote ~]$ sudo passwd user1 改密码;授权管理员后也可改管理员密码,是授权的漏洞;要定义不能接root字符串;

[root@promote ~]# visudo
修改其中的Cmnd_Alias指令:禁止修改管理员密码;
Cmnd_Alias      USERADMINCMNDS=/usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-z]*,!/usr/bin/passwd root, /usr/sbin/userdel

验证:

[fedora@promote ~]$ sudo -l
[fedora@promote ~]$ sudo passwd root 显示不允许运行;

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

[fedora@promote ~]$ su - root

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

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

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

[root@promote ~ ]# su - centos
[fedora@promote ~ ]$ sudo su - 要求输入centos密码;

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

使用sudo会记录了日志中;

常用命令标签

NOPASSWD:无需密码执行命令;
PASSWD:需要密码执行命令;

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

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

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

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

例如:

[root@promote ~]# su - fedora
[fedora@promote ~]$ sudo -l 使用sudo命令第一次要输入密码;

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

[root@promote ~]# visudo   使用NOPASSWD标签,表示后面的所有命令都无需密码就可以执行;
fedora ALL=(root)       NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod, PASSWD: /usr/sbin/userdel

[root@promote ~]# su - fedora
[fedora@promote ~]$ sudo -l  无需密码即可执行;

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

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

[root@promote ~]# visudo
fedora ALL=(root)    /usr/bin/su
[root@promote ~]]# su - fedora
[fedora@promote ~]$ sudo -l 输入密码
查看结果:
   (root) /usr/bin/su
[fedora@promote ~]$ sudo su -

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

相关文章

  • sudo用法简述

    su命令:switch user 用户切换:两种,登录式和非登录式(1)登录式切换:su - user,su -l...

  • Java并发目录

    一、简述 线程状态与方法 synchronized 用法 ReentrantLock用法 Semaphore用法 ...

  • Ubuntu常用命令学习 (1)

    su、sudo、sudo su、sudo -i的用法和区别 su、su - 、sudo -i : 用户切换到roo...

  • n的使用

    安装sudo npm install -g n基本用法:在mac下基本都要加sudo,比如 sudo n查看安装列...

  • su、sudo的用法

    1. su命令用法 su是最简单的身份切换命令,可以进行任何身份的切换。[su ]命令将身份切换到root,但是需...

  • su、sudo、sudo su、sudo -i的用法和区别

    sudo:暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不...

  • su、sudo、sudo su、sudo -i的用法和区别

    sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码...

  • 第23课 定时任务上部 2019-04-26

    1、sudo(尚方宝剑)命令的用用法: sudo练习题 : 给oldboy配置sudo可以查看系统的日志 (思考查...

  • Linux常用命令(1)

    一、基本操作相关命令(1)使用帮助查看命令用法:[命令] --help例:sudo --help(查看命令sudo...

  • 一、架构01-简述sudo

    1、定义:sudo: 能够让获得授权的用户以另外一个用户的身份运行指定的命令;格式为"sudo [参数]命令名称"...

网友评论

      本文标题:sudo用法简述

      本文链接:https://www.haomeiwen.com/subject/zxkaxctx.html