1.su 命令:解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户。

比如从root 管理员切换至普通用户:

[root@Centos test]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@Centos test]# su - centos
Last login: Fri Aug 14 18:37:52 CST 2020 on pts/2
[centos@Centos ~]$ id
uid=1112(centos) gid=1113(centos) groups=1113(centos) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。

当从root 管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证了。

[centos@Centos ~]$ su root
Password:
[centos@Centos ~]$ exit
logout
[root@Centos test]# su - centos
Last login: Fri Aug 14 18:44:20 CST 2020 on pts/2

2.sudo :给普通用户提供额外的权限来完成原本root 管理员才能完成的任务,格式为“sudo [参数] 命令名称”。 

sudo 服务的配置原则:在保证普通用户完成相应工作的前提下,尽可能少地赋予额外的权限。

[centos@Centos ~]$ sudo -l
[sudo] password for centos:
Sorry, user centos may not run sudo on Centos.

sudo 命令具有如下功能:

限制用户执行指定的命令:记录用户执行的每一条命令;

配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;

验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。

如果担心直接修改配置文件会出现问题,则可以使用sudo 命令提供的visudo 命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改sudoers 配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。

注:只有 root 管理员才可以使用visudo 命令编辑sudo 服务的配置文件。

使用 visudo 命令配置sudo 命令的配置文件时,其操作方法与Vim 编辑器中用到的方法一致。

在sudo 命令的配置文件中,按照下面的格式将第90行(大约)填写上指定的信息:谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

[root@Centos test]# visudo
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 centos ALL=(ALL) ALL

在填写完毕后记得要先保存再退出,然后切换至指定的普通用户身份,此时就可以用sudo-l 命令查看到所有可执行的命令了(下面的命令中,验证的是该普通用户的密码,而不是root管理员的密码):

[centos@Centos ~]$ sudo -l
[sudo] password for centos:
Matching Defaults entries for centos on Centos:
!visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User centos may run the following commands on Centos:
(ALL) ALL

测试:

[root@Centos ~]# su - centos
Last login: Mon Aug 17 11:46:10 CST 2020 on pts/2
[centos@Centos ~]$ ls /root
-bash: cd: /root: Permission denied
[centos@Centos ~]$
[centos@Centos ~]$ sudo ls /root
[sudo] password for centos:
[centos@Centos ~]$ sudo ls /root

anaconda-ks.cfg Documents findresults Music Public test

Desktop Downloads initial-setup-ks.cfg Pictures Templates Videos 
一般只能赋予普通用户具体的命令以满足工作需求,这也受到了必要的权限约束。如果需要让某个用户只能使用root 管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统会识别不出来。我们可以先使用whereis 命令找出命令所对应的保存路径。
举例:
[centos@Centos ~]$ exit
logout
[root@Centos ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[root@Centos ~]# visudo
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 centos ALL=(ALL) /usr/bin/cat [root@Centos ~]# su - centos
Last login: Mon Aug 17 11:52:33 CST 2020 on pts/2
[centos@Centos ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[centos@Centos ~]$ sudo cat /etc/shadow
[sudo] password for centos:
root:$6$FItCpf70$FV4ZEntlsWO5jNif2Ndi8cbZWOqRYy

取消密码验证:添加NOPASSWD

[root@Centos ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[root@Centos ~]#
[root@Centos ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
centos ALL=NOPASSWD: /usr/bin/cat
												

12.su 命令与sudo 服务的更多相关文章

  1. su命令、sudo命令、限制root远程登录 使用介绍

    第3周第3次课(4月4日) 课程内容:3.7 su命令3.8 sudo命令3.9 限制root远程登录 3.7 su命令 [root@jimmylinux-002 ~]# su - jimmy     ...

  2. su命令,sudo命令,visudo命令

    一.命令su 语法 : su [-] username后面可以跟 ‘-‘ 也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户. ‘-‘ 这个字 ...

  3. Linux centosVMware su命令、sudo命令、限制root远程登录

    一.su命令 Linux系统中有些事情只有root用户才能做,普通用户不能做,这时候就需要临时切换到root身份了. [root@davery ~]# whoamiroot [root@davery ...

  4. 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 su命令 切换用户 [root@centos_1 ~]# su - xiaobo [root@centos_1 ~]# su - ...

  5. Linux学习总结(六)-su命令 sudo 命令 限制root远程登录

    root 用户拥有至高无上的权利,那么我们运维人员是不是直接在root用户下处理所有问题呢? 答案是否定的,权力越大,责任越大,人是会犯错的,因此我们要在不影响我们的工作情况下,尽量限制我们的权力,以 ...

  6. su和sudo的区别与使用,su命令,linux命令

    su和sudo的区别与使用 一.   使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...

  7. Linux 中 sudo、su命令

    sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟.su : 切换到某某用户模式,提 ...

  8. 禁止用户使用 sudo su 命令进入root 模式

    禁止普通用户通过sudo su命令进入root模式的方法(在root模式下操作): 1. 修改 /etc/sudoers 的权限, 用来写入文件 # chmod 777 /etc/sudoers 2. ...

  9. 每天一个Linux命令(12):su命令

    su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码. 语法: su(选项)(参数) 选项: -c<指令>或--command=<指令>:执行完指定 ...

随机推荐

  1. java的多线程:java安全问题产生的原因与JMM的关系

    一.多线程产生安全问题 1.Java内存模型 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见. 从抽象的角度来看,JMM定义了线程和主内存 ...

  2. Modbus 仿真测试工具 Mod_Rssim 详细图文教程

    Mod_RSsim是一款轻量级的Modbus从机模拟器,它可以模拟ModBusTCP和ModBusRTU的从机,能够同时模拟254个被控站,软件使用简单方便,可以满足一般的主机调试. 官方网站:www ...

  3. Mac M1原生(ARM64)Golang dev&debug

    前言 通过本文最终实现了在M1芯片的Mac mini上的Goland的开发,并通过编译源码解决了无法DEBUG的问题. Go 1.16版将正式支持Apple Silicon M1芯片,即arm64架构 ...

  4. VRay for SketchUp渲染图黑原因及解决方案

    很多人都遇到用Vray for SketchUp云渲染的时候,渲染出来的图片是全黑或者是局部是黑色, 这是什么原因呢? 1.有一种情况是,SketchUp的文件储存机制和其他的软件有些不同,它是把模型 ...

  5. 用 Flutter 搭建标签+导航框架

    前言 在 Flutter 这个分类的第一篇文章总结了下最新的 Mac 搭建 Flutter 开发环境和对声明式UI这个理解的东西,前面也有提过,准备像在 SwiftUI 分类中那样花一些功夫来写一个 ...

  6. 【SpringMVC】SpringMVC 异常处理

    SpringMVC 异常处理 文章源码 异常处理思路 系统中异常包括两类:预期异常和运行时异常,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生. Cont ...

  7. Redis Cluster 集群节点信息 维护篇(二)

    集群信息文件: # cluster 集群内部信息对应文件,由集群自动维护. /data/soft/redis/6379data/nodes-6379.conf 集群信息查看: ./redis-trib ...

  8. ASP.NET Core错误处理中间件[1]: 呈现错误信息

    NuGet包"Microsoft.AspNetCore.Diagnostics"中提供了几个与异常处理相关的中间件.当ASP.NET Core应用在处理请求过程中出现错误时,我们可 ...

  9. Java 多线程读取文件并统计词频 实例 出神入化的《ThreadPoolExecutor》

    重在展示多线程ThreadPoolExecutor的使用,和线程同步器CountDownLatch,以及相关CAS的原子操作和线程安全的Map/队列. ThreadPool主线程 1 import j ...

  10. redis之集群二:哨兵

    回顾 上一篇介绍了Redis的主从集群模式,这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改.但是,我们发现这种集群模式当主节点宕机,主从无法自动切 ...