su和sudo

旨在阐述CentOS中 su和sudo命令的基本用法和区别

知识储备



1.Linux中通常不建议以root身份直接登陆,太危险了!然而以普通用户身份登陆,在某些时候又受到权限压制,su和sudo就是良好的解决方案;

2.su通常用来临时切换到某个用户身份,来执行一些指令;切换方式有完全切换、不完全切换;

3.sudo通常用来以某个用户身份来执行某些指令,执行完毕后登陆身份还是自身,即supper do!

Su命令精要



su切换方式:

(1) su -l root  完全切换:会重新读取新身份的私人配置文件,环境变量PATH等等;

(2) su root  不完全切换:不会重新读取;

正常情况下,切换到新身份后,会一直保持该身份运行着,除非使用exit命令退出新身份;

几个要点:

  1. 可以使用 su -c command root切换到root身份运行完指令command后自动退出root身份,这点和sudo有点类似哦,详情man su;
  2. 普通用户切换到任何用户都需要输入密码,只有root切换到普通用户无需密码;
  3. su -,su -l,su --login 都表示完全切换,会读取私人的小配置!

sudo命令精要



sudo的功能大致有:

(1)授权指定用户在指定主机上运行指定的命令『who、where、do what』

(2)详细记录用户基于sudo执行命令的相关日志信息

(3)sudo具有时效性认证:即用户第一次执行sudo会要求输入密码验证身份,这个凭据会保存一段时间,默认是5分钟,5分钟内不需要再次输入密码,“检票系统”

sudo命令:

被授权用户应该以sudo命令来运行被授权运行的命令:

su -  不加 默认是su到管理员,需要root密码

sudo [OPTIONS] COMMAND

sudo su -  无需管理员密码 哈哈,理解一下 挺有意思

-l: 查看当前用户可执行的sudo命令;

-k: 清除此前记忆下的“令牌”;

-u USERNAME COMMAND:以指定用户运行COMMAND命令;

sudo的配置文件:/etc/sudoers

前面所说,sudo可以定义哪些用户,在哪些主机上,做哪些指令。这些定义其实保存在配置文件/etc/sudoers上,建议使用专用的编辑器编辑,即visudo命令『有语法检查等功能』

sudo配置文件语法



sudoers配置文件语法很简单,如下

例如,指定普通用户centos,允许在任何主机上以root身份执行fdisk命令

但是,如果要为多个用户、不同组用户指定授权,一条条添加是否显得太过麻烦呢?尤其是当一个用户可以通过sudo执行多条command命令的时候。其实可以使用 别名的方式 来授权,具体用法如下:

例如,指定允许用户centos,用户组apache,允许在任何主机上以root身份执行fdisk,useradd系统管理命令,和wget,ifconfig等网络管理命令。那么该如何定义呢?

几个要点:

  1. 别名的名字,必须而且一定是大写字符串
  2. 别名之间可以相互嵌套,比如说User_Alias A = apache,B 这里的B是另外一个User_Alias
  3. 合理规划好别名,合理嵌套好别名!
  4. 前面提到sudo有“检票系统”,那么一个授权的命令究竟是否需要检票,是根据该命令的标签来决定的,比如下面

这意味着centos这个用户通过sudo 可以在任何主机上以root身份运行fdisk命令(需要检票,出示一次票据后默认可以维持5分钟哦),而运行wget是无需出示票据的

5. 请注意,授权的CMD1 CMD2 这些可sudo执行的命令,建议使用绝对路径!

6. 使用visudo修改后配置文件后,立即生效

练习:



1、授权centos用户可以运行fdisk命令完成磁盘管理,以及使用mkfs或mke2fs实现文件系统管理;

授权前:

修改sudo配置文件:

#visudo
centos  ALL=(root) /sbin/fdisk, /sbin/mkfs.ext4

授权后:

2、授权gentoo用户可以运行逻辑卷管理的相关命令;

和逻辑卷相关的命令有

显示相关pvs、vgs、lvs

扫描相关pvscan、vgscan、lvscan

创建相关pvcreate、vgcreate、lvcreate

编辑sudo配置文件:

#visudo
Cmnd_Alias VGCMDS= /sbin/pvs, /sbin/vgs, /sbin/lvs, /sbin/pvscan, /sbin/vgscan, /sbin/lvscan, /sbin/pvcreate, /sbin/vgcreate, /sbin/lvcreate
centos ALL=(root) VGCMDS

这里遇到的一些问题:

  1. 在定义Cmnd_Alias时,我尝试了/sbin/{vgs,lvs}的写法,发现不能识别,失败!
  2. 在验证的时候,总是不成功,最后发现没有清空凭据,sudo -k
  3. 调查发现vgs、lvcreate等等VG相关命令,其实本质都是指向/sbin/lvm的软链接,但是无需授权/sbin/lvm 也是可以执行这些VG指令的
时间: 2024-10-03 17:46:26

su和sudo的相关文章

linux centos7 中 su、sudo及禁止远程访问root

一. su命令 1.切换用户su - fxq su命令后带"- ",表示环境变量一起切换过去 [[email protected]_46_188_centos ~]# whoami root [[email protected]_46_188_centos ~]# Last login: Tue Aug  8 22:30:12 CST 2017 on pts/0 [[email protected]_46_188_centos ~]$ pwd /home/fxq [[email pro

在Linux系统中应用su和sudo

日常操作中为了避免一些误操作,更加安全的管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root用户身份去执行. 普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将l省略掉,所以此命令常写为su - USERNAME 如果不指定USERNAME(用户名),默认即为root,所以切换到root的身份的命

Linux系统中切换用户身份su与sudo的用法与实例

日常操作中为了避免一些误操作,更加安全地管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root用户身份去执行. 普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将l省略掉,所以此命令常写为su - USERNAME 如果不指定USERNAME(用户名),默认即为root,所以切换到root的身份的命

【linux】su、sudo、sudo su、sudo -i的用法和区别

来源:http://bbs.csdn.net/topics/390938651 sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟.su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为"su 账户名称".如果后面不加账户时系统默认为root账户,密码也为超级账户的密码.没有时间限制.sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而

Linux login & non-login shell 以及su, sudo相关概念

1.login & non-login shell Linux系统自举时,内核会创建init进程,来进行一系列的系统初始化操作.每一个用户登录shell时,无论以伪终端登录:ssh,X11下控制台,还是tty控制台终端,都会读取相关相关的登录配置文件.linux 有两种登录shell:login和nologin: login shell:登录shell时需要完整的登录流程,称为 login shell.何为完整:输入用户名和密码.例如:走tty1-tty6控制终端,或走ssh等伪终端远程登入 n

su root、sudo su、sudo -i的区别

这个su root就是一个切换用户命令,root是用户名,那么你需要输入的就是root账户的密码,但是ubuntu是禁用root登录的,所以给root设了个诡异的密码,它的密码并非你装的时候设的密码,但是可以开启root,不过建议别开启,要用什么root权限做事在前面加sudo就行了.如果你不开启的话根本就没法登,自然sudo root再输入密码无法登录了.而sudo su后面什么都不加默认就转到root了,你机器里就一个root是超级权限.而sudo时是你现在登录的这个用户sudo,密码就是你

su 和 sudo、su root和su - root 区别

su 和 sudo.su root和su - root 区别 su是superuser的前面两字母. su root=sulike you open an interactive shell in root name,then only .bashrc will be sourced. su root和su一样:表示与root建立一个链接,通过root执行命令,其实就是进程的有效用户ID变成了root,unix校验进程的权限都是校验的有效用户ID,进程的实际用户ID还是当前登录系统的用户,主目录

linux 切换用户身份、su、sudo、/etc/sudoers

Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到.这时就需要用su命令临时切换到root身份来做事了. su:substitute['s?bst?tju?t]代替 user su 的语法为: su [OPTION选项参数] [用户] -, -l, --login 登录并改变到所切换的用户环境: -c, --commmand=COMMAND 执行一个命令,然后退出所切换到的用户环境: 用su命令切换用户后,可以用 exit 命令或快捷键[Ctrl+D]可返回原登录用户

Linux实际操作中命令 su 与 sudo 的区别

------------------------------------------------------------------------------------------------ 首先我先做了一些更改操作: 换到root用户的操作=>sudo su输入当前用户的密码: ****** 修改root密码的操作=>passwd 123456 /* root密码已改为123456 */ [email protected] chenwei <www.chenwei.ws>---

实际操作中命令 su 与 sudo 的区别(转)

------------------------------------------------------------------------------------------------ 首先我先做了一些更改操作: 换到root用户的操作=>sudo su输入当前用户的密码: ****** 修改root密码的操作=>passwd 123456 /* root密码已改为123456 */ [email protected]or chenwei <www.chenwei.ws>-