Linux用户切换命令的使用——su、sudo

一. su

  1. su用于用户之间的切换,但是切换前的用户依然保持登录状态。如果是root向普通切换则不需要密码,反之普通用户切换到其它任何用户则都需要密码验证。
  2. su不加任何参数默认切换到root用户,但没有转到root用户根目录下;su 加参数-,表示默认切换到 root 用户,并转到 root 用户根目录下。
  3. su的明显不足在于如果某个用户需要使用 root 权限、则必须要把root密码告诉此用户。
  4. 退出返回之前的用户:exit

切换到git用户

[root@iZ2ze9twtxjrbirmldp9owZ ~]# su git[git@iZ2ze9twtxjrbirmldp9owZ root]$ pwd/root[git@iZ2ze9twtxjrbirmldp9owZ root]$ exitexit[root@iZ2ze9twtxjrbirmldp9owZ ~]#

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

以下操作是使用haha用户登录客户端操作的

[haha@centos6-1 ~]$ suPassword: [root@centos6-1 haha]# pwd/home/haha[root@centos6-1 haha]# exitexit[haha@centos6-1 ~]$ su -Password: [root@centos6-1 ~]# pwd/root[root@centos6-1 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

二. sudo

sudo是为所有想使用root权限的普通用户设计的,可以让普通用户具有临时使用root权限的权利,只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers文件中有配置项才具有使用sudo的权利。

没有配置权限之前,普通用户无法进行 root 权限操作:

[haha@centos6-1 ~]$ pwd/home/haha[haha@centos6-1 ~]$ ll /root/ls: cannot open directory /root/: Permission denied[haha@centos6-1 ~]$

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

没有配置权限之前,不能使用sudo

[haha@centos6-1 ~]$ sudo ls /root/[sudo] password for haha: haha is not in the sudoers file.  This incident will be reported.[haha@centos6-1 ~]$ 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

使用root用户登录配置haha用户的sudo权限,命令行输入 visudo,打开/etc/sudoers 文件。注意,官方不建议直接vi /etc/sudoers对其进行修改

## Allow root to run any commands anywhereroot ALL=(ALL) ALL //在文件中找到这一行haha ALL=(ALL) ALL //并在其下面添加此行,这样haha就可以使用sudo执行root权限的命令了## Allows members of the 'sys' group to run networking, software,## service management apps and more.# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

用haha用户再次登录客户端操作,发现成功了

[haha@centos6-1 ~]$ sudo ls /root/[sudo] password for haha: anaconda-ks.cfg  install.log  install.log.syslog  license  notice[haha@centos6-1 ~]$ 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

sudo的工作过程如下:

1. 当用户执行 sudo 时,系统会主动寻找/etc/sudoers 文件,判断该用户是 否有执行 sudo 的权限2. 确认用户具有可执行 sudo 的权限后,让用户输入用户自己的密码确认3. 若密码输入成功,则开始执行 sudo 后续的命令

  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

/etc/sudoers文件中配置的含义

haha ALL=(ALL) ALL
第一个 ALL 是指网络中的主机,我们可以指定主机名,这样 haha 只可以 在此主机上执行后面的命令。第二个括号里的 ALL 是指目标用户,也就是以谁的 身份去执行命令。最后一个 ALL 是指命令名了。

haha centos6-1=(zaomianbao)/bin/kill //只允许haha用户以zaomianbao用户的身份在centos6-1上执行kill命令haha centos6-1=NOPASSWD:/bin/ls, /bin/cat  //只允许haha用户以root身份在centos6-1上执行ls 、cat命令
  • 1
  • 2
  • 1
  • 2

我们修改haha为第二个形式haha centos6-1=NOPASSWD:/bin/ls, /bin/cat

[haha@centos6-1 ~]$ sudo ls /root/anaconda-ks.cfg install.log install.log.syslog license notice[haha@centos6-1 ~]$ sudo cat /root/anaconda-ks.cfg# Kickstart file automatically generated by anaconda.#version=DEVELinstallcdrom[haha@centos6-1 ~]$ sudo vi /root/anaconda-ks.cfg[sudo] password for haha: Sorry, user haha is not allowed to execute '/bin/vi /root/anaconda-ks.cfg' as root on centos6-1.[haha@centos6-1 ~]$

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

可以看到,haha用户具有ls和cat的权限,但是没有vi的权限

(0)

相关推荐

  • su和sudo su的区别

    su是申请切换root用户,需要申请root用户密码.有些Linux发行版,例如ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码. ...

  • linux下su与sudo

    简短介绍 su与su - su 切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境.su - 切换到root用户,并转到root用户的家目录下,即改变到了root用户的环境. ...

  • Linux 用户切换、修改用户名、修改密码

    一.用户切换 '$':普通用户提示符 '#':root用户提示符 1.普通用户到root: 方式一:命令:su然后输入root密码 此种方式只是切换了root身份,但Shell环境仍是普通用户的She ...

  • sudo以其他用户身份身份执行命令-linux运维命令

    Linux运维管理人员以另一个用户身份执行命令就会用到sudo命令.通过sudo命令,可以让普通用户在执行指定的命令或程序上,拥有超级用户的权限,进行分类,并且有针对性地将不同的命令授予指定的普通用户 ...

  • 运维工作中,Linux用户信息查询命令有哪些

    Linux运维工作中常用的Linux命令很多,用户信息查询命令有哪些?互联网时代发展迅速,Linux运维技术的需求更多推进不少.掌握Linux运维知识是混迹it行业的技能之一.对于运维学习Linux命 ...

  • passwd修改用户密码注意什么?linux运维命令

    passwd命令可以修改用户密码及密码过期时间等内容,是Linux运维管理工作中很常用的命令.普通用户和超级用户都可以运行passwd命令,但普通用户只能更改自身的用户密码,超级用户root则可以设置 ...

  • useradd命令创建用户相关知识-linux运维命令

    useradd命令可用于创建新的用户或者更改用户的信息.创建新的用户或更改用户信息是里Linux系统运维会遇到的工作内容,那么就要求运维人员对基础命令的掌握.学习Linux基础命令对于Linux运维技 ...

  • nmap命令参数选项有什么?Linux运维命令

    nmap命令是一款开放源代码的网络探测和安全审核工具,其设计目标是快速地扫描大型网络.nmap可以发现网络上有哪些主机,主机提供了什么服务(应用程序名称和版本号),并探测操作系统的类型及版本信息.网络 ...

  • 初学Linux基本的命令操作应当记牢

    Linux管理文件和目录的命令命令功能命令功能pwd显示当前目录ls查看目录下的内容cd改变所在目录cat显示文件的内容grep在文件中查找某字符cp复制文件touch创建文件mv移动文件rm删除文件 ...

  • 显示命令及文件路径用什么命令?Linux运维命令

    查看Linux系统路径用什么命令?显示命令及其相关文件全路径的命令有哪些?快速定位文件路径用什么命令?Linux运维学习中,命令是非常重要的.每年学习Linux运维技术的人们越来越多,对于初学者来说, ...

  • 3.1.1 linux用户管理 : 常用查询(debian和RedHat通用) : 用户查询

    3.1.1 linux用户管理 : 常用查询(debian和RedHat通用) : 用户查询