Linux中su和sudo的用法
su -
#su - oldboy //当执行这个命令的时候表示切换到oldboy用户,并且重新读取用户环境相关配置文件,具体的来说就是执行下用户家目录下.bash_profile和.bashrc文件,这个我们成为全切换
su
#su oldboy //执行这个命令的时候系统不读取以上两个文件,所以我们一般称它为半切换,这样切换过去之后,oldboy用户使用的依旧是此前用户的环境配置信息
sudo
#sudo这个命令设计初的主要目的是为了使某些用户具有特定用户的一些特殊的权限,举例说明:比如A,B两个人,A是技术部经理,具有公司服务器上的root权限,B技术还不够成熟,只具有一般用户权限,因为项目原因,B需要具有添加用户的权限,这个时候该怎么办呢?给B管理员权限?那安全性能得到保证吗!对,这时候sudo就派上用场了…
1)sudo这个命令的定义在/etc/sudoers文件里面,这个文件内容的格式如下:
User MACHINE= COMMANDS
root ALL=(ALL) ALL
oldboy ALL=(ALL) /user/sbin/useradd
用户 机器=(授权哪个角色的权利) /user/sbin/useradd
%用户组 机器=(授权哪个角色的权利) /user/sbin/useradd
2)我们可以用vim来打开/etc/sudoers这个文件,但是因为这个文件对系统来说相当重要,所以有一个专门的命令visudo来对这个文件进行编辑,当有一个管理员对这个文件进行编辑的时候,这个文件会被系统加上一个“锁”,意思就是不允许多个管理员同时对其进行编辑,这也是为了系统安全着想
3)举例:比如我们需要oldboy用户可以执行passwd命令,那么我们需要作如下配置:
1)#visudo //打开/etc/sudoers配置文件
2)在配置文件里添加如下行
oldboy ALL=(root) /usr/sbin/useradd
3)#su - oldboy //切换到oldboy用户
4)#sudo /usr/sbin/useradd jack //普通用户oldboy添加用户jack
当然sudoers文件不是这么容易就能玩转的,假设如下情况,当我们想把好多个命令都给oldboy用户使用权限(同理当我们想给很多个用户一个命令的使用权限或者让一个用户在不同的主机上登录时都可以拥有这么命令的使用权限),那么我们改怎么办呢?一行一行的写下去,那岂不是显得我们的linux太笨拙了……
这时候我们可以看一下sudoers的man文档,我们会发现这个真的很牛掰,牛掰到我们可以定义某个用户只能使用某个命令的某一个选项……linux解决上述问题用到了别名
1)下面是对多个用户的格式定义:
User_Alias NAME = gentoo, suse, ubuntu, %mygrp, USENAME //可以加进去一个组,可以加进去另一个用户别名,这里如果是想把组加进去记得要在前面加“%”,不要问为什么,就是这样定义的
2)下面是对多个主机的格式定义:
Host_Alias NAME = 主机名, IP, network/mask, NAME //这里是说后面可以是主机名、IP地址、网段、另外一个别名
3)下面是对以哪个用户的身份运行(多个)的格式定义:
Runas_Alias NAME = 用户, 组, #用户ID, NAME //这里是说后面可以是用户名,组名,用户ID(前面必须加“#”),另外一个别名
4)下面是对多个命令的格式定义:
Cmnd_Alias NAME = 命令, 目录(目录中的所有命令),NAME //这里是说后面可以跟命令,目录下的命令集合,另外一个别名
当不加任何参数执行su命令时,表示要切换到root用户,但这样执行,会遇到一些问题。因为虽然是切换到root用户了,但并没有改变为root用户登录环境,用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,shell类型等。比较规范的操作方法是”su -“。见下面的实例。
实例1:由普通用户oldboy切换到root用户
[oldboy@oldboy ~]$ whoami #→确认当前用户为oldboy
oldboy
[oldboy@oldboy ~]$ su #→不加用户就表示切到root用户。当然也可以使用su root。
Password: #→这里当然就是root用户的密码了。
[root@oldboy oldboy]# env
HOSTNAME=oldboy
USER=oldboy
MAIL=/var/spool/mail/oldboy
PWD=/home/oldboy
HOME=/root
LOGNAME=oldboy
...省略部分无关内容...
#→细心的读者应该已经看到了,如果使用su而不加上“-”这个参数,那么,切换前的用户的相关信息还会存在,这会引起很多麻烦,甚至会出现意想不到的结果。因此,切换用户时,最好是 “su - 用户名”。这是生产场景中标准的切换用户的操作方法。
[root@oldboy oldboy]# exit #→退出当前用户,这个命令也可以用ctrl+d快捷键命令替代。
[oldboy@oldboy ~]$ su - #→带上“-”参数做切换,也可用su - root命令。这是生产场景中的标准操作方法。
Password:
[root@oldboy ~]# env|egrep "USER|MAIL|PWD|LOGNAME" #→切换后的环境变量信息结果。使用egrep过滤包含想查看的字符串的行。
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root
#→这次和上次就不同了,所有的环境变量信息都切换到了root下。因此,请大家在切换用户时一定要加上“su - 用户名”,这里提醒下,不光是切到root呦,切换到其他用户也是一样,呵呵。
su命令总结:
1)普通用户切换到root用户,可使用su -或su - root。必须输入root密码才能完成切换。
2)root用户切换到普通用户,可使用“su普通用户名”的写法。不需要输入任何密码就能完成切换。切换到普通用户后,在执行一些命令如ifconfig时,可能会遭遇到环境变量PATH路径问题而找不到某些系统命令(一般是/sbin,/usr/sbin等下面的命令),这时就需要将普通用户的PATH,配置成root的PATH内容。
3)如果仅希望在某用户下执行命令,而不直接切换到该用户下操作,可以使用 su - 用户名 -c "命令"的方式。
Linux中su和sudo的用法的更多相关文章
- Linux中su和sudo的用法整理
一.为什么会有su和sudo命令? 主要是因为在实际工作当中需要在Linux不同用户之间进行切换.root用户权限最高很多时候需要root用户才能执行一些关键命令.所以需要临时切换为root用户.工作 ...
- linux 下su 和sudo 的用法以及区别
一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...
- linux中su和sudo区别
su切换用户,切换成root用户,要输入root用户的密码 su - 用户名 sudo 涉及到 /etc/sudoers文件 ,内容如下: # User privilege specificatio ...
- Linux 中su和sudo命令的几个注意点
1 su与su - 的区别 1.1命令说明 su对应是是no-login shell的方式进行账号登陆,命令行的变量配置还是切换账号前的变量. su-对应的是login shell的方式进行账号登陆, ...
- Linux中su、sudo、sudo -i的用法和区别
sudo :暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.缺点是每次执行超级用户权限都要在命令前加上 sudo ,优点是在当前终端再使用 sud ...
- Linux系统中切换用户身份su与sudo的用法与实例
日常操作中为了避免一些误操作,更加安全地管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root用户身份去执行. 普通用户切换到root用户的方式有:s ...
- Linux命令--su与sudo
su(switch user)命令的作用:切换用户,一般是普通用户与root用户之间的切换.例:>su #输入su命令Password: #提示输入密码 ...
- 12个 Linux 中 grep 命令的超级用法实例
12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...
- linux中 su 与 su - 的区别
linux中 su 与 su - 的区别 su只是切换了用户身份,shell环境仍然是切换前用户的shell环境 su -是用户和shell环境一起切换成. 备注:1.切换了shell环境会相应的用户 ...
随机推荐
- zabbix监控之邮件报警通知
zabbix官网的操作指南:https://www.zabbix.com/documentation/4.0/zh/manual 首先我们需要创建一个需要被监控的主机,并设置相应的监控项.当监控项收集 ...
- Redis I/O 多路复用技术原理
引言 Redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统. Redis 采用网络 I/O 多路复用技术来保证在多个连接时,系统的高吞吐量(TPS). 系统吞吐量(TPS)指的是系 ...
- Centos7.3 进入救援模式,解决虚拟机开机引导只能看到一个横杠
问题描述:搭建在CAS服务器中的虚拟机开机后只能看到一个横杠,因为开发同事的一些操作使glibc库/lib64/libc.so.6软链接失效 1.libc.so.6 是c运行时库 glibc的软链接, ...
- Linux应用程序设计:用一种讨巧方式,来获取线程栈的使用信息
面对的问题 对于线程的栈空间,相信各位小伙伴都不陌生.它有下面的这几项特性: > 1. 由操作系统分配固定的空间; > > 2. 使用一个栈寄存器来保存实时位置; > > ...
- Go以及调试工具dlv安装及使用
安装go wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz tar -C /usr/local -zxvf go1. ...
- FreeBSD 13.0 正式版发布,已经可以下载
请访问原文链接:https://sysin.org/article/freebsd-13/,查看最新版.原创作品,转载请保留出处. 根据 FreeBSD 13.0 官方发布计划,4 月 9 日 13. ...
- 浅谈:Redis持久化机制(一)RDB篇
浅谈:Redis持久化机制(一)RDB篇 众所周知,redis是一款性能极高,基于内存的键值对NoSql数据库,官方显示,它的读效率可达到11万次每秒,写效率能达到8万次每秒,因为它基于内存以及存 ...
- NCF 如何通过WebApi实现前后端分离
简介 昨天参加了<Best Of Microsoft Build>上海专场 NCF 模块化 WebApi 系统开发 + 容器化部署实战 的小伙伴们,昨天有些没有记住的,今天我在这里给大家把 ...
- vmware workstation linux虚拟机点击suspend会卡死
vmware workstation linux虚拟机点击suspend会卡死, 现象如图, 我测过很多发行版都有这个问题 临时解决方案是关闭suspend功能 sudo systemctl mask ...
- 熬夜讲解vue3组合API中setup、 ref、reactive的用法
1.初识setUp的使用 简单介绍下面的代码功能: 使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上. setUp函数是组合API的入口函数.这个是非常重要的. setUp可以去监听变 ...