linux权限之su和sudo的差别
我们都知道非常多的文件都仅仅有root有权限来改动,那么在我们平时的开发过程中都建议使用一般账号来登录进行开发。还记得前面说到的ssh吗。我们也是将同意root登录设置成no。到必要的时候再切换到root来进行操作,这样就不至于有风险。
那么我们怎样切换身份呢。
1.su
su是最简单的身份切换名,用su我们能够进行不论什么用户的切换,一般都是su - username,然后输入password就ok了,可是root用su切换到其它身份的时候是不须要输入password的。起初我都是用su来切换的,后来老大看见了说我这样的方式切换是不好的。你能够尝试其它的方式来切换。我认为这样切换非常方便啊,那究竟是不好在哪里呢。后面再看另外一种身份的切换方式就知道了。
一般我们切换身份都是切换到root,然后进行一些仅仅有root能干的事,比方改动配置文件。比方下载安装软件。这些都仅仅能是root才有权限干的事。切换到root能够是单纯的su,或者是su -和su - root,后面两个是一样的意思。
单纯使用su切换到root,读取变量的方式是non-login shell,这样的方式下非常多的变量都不会改变。尤其是PATH。所以root用的非常多的命令都仅仅能用绝对路径来运行。这样的方式仅仅是切换到root的身份。
而用su -这样的方式的话,是login shell方式,它是先以root身份登录然后再运行别的操作。
假设我们仅仅要切换到root做一次操作就好了,仅仅要在su后面加个-c參数就好了。运行完这次操作后。又会自己主动切换回我们自己的身份。非常方便。
那么假设有非常多人管理这个主机的话,那不是非常多人都要知道root的password吗,并且可能有的人仅仅是单纯的进行一次root操作就能够了,这个时候,su方式就不是非常好,rootpassword越少人知道越好,越少人知道就越安全,这时就须要另外一种方式了。
2.sudo
相比于su切换身份须要用户的password,常常性的是须要rootpassword,sudo仅仅是须要自己的password,就能够以其它用户的身份来运行命令。常常是以root的身份运行命令。也并不是全部人都能够用sudo:
这里我要查看/etc/shadow这个文件的前三行,可是却发现看不了,提示的错误是说我当前这个用户不在sudoers这个文件,所以sudo是依赖于/etc/sudoers这个配置文件的。
sudo的运行有这样一个流程:
1).当用户运行sudo时,系统于/etc/sudoers文件里查找该用户是否有运行sudo的权限;
2).若用户具有可运行sudo的权限。那么让用户输入用户自己的password,注意这里输入的是用户自己的password。
3).假设password正确。变開始进行sudo后面的命令,root运行sudo是不须要输入password的,切换到的身份与运行者身份同样的时候。也不须要输入password。
以下看看/etc/sudoers这个配置文件:
为何刚開始仅仅有root能运行sudo,切换到root身份通过visudo查看/etc/sudoers这个配置文件,假设是vim /etc/sudoers是能够查看的,可是不能改动,由于sudoers这个文件是由语法的,仅仅能通过visudo来改动。第一个红色方框那行代码,这行代码是什么意思呢。第一列root不用多说,是用户账号,第二列的ALL意思是登陆者的来源主机名,第三列等号右边小括号里的ALL是代表能够切换的身份。第四列ALL是可运行的命令。
1).单个用户的sudoers语法:
假设我要我当前这个用户能运行root的全部操作,那么我仅仅要加一行learnpython ALL=(ALL) ALL。那么假设有非常多人须要运行sudo。那不是要写编写非常多行啊,这样不是非常麻烦,这样就要用到用户组了。
2).利用用户组处理visudo:
看看第二个红色方框那行代码。%wheel代表wheel用户组。假设我们将须要运行root全部操作的用户都加入到wheel用户组,或者我们自己定义的用户组。然后加入一行代码。那么就不用一个用户一个用户的加入进来了,这样不是非常省事啊。
3).限制用户sudo的权限:
可是常常我们不须要用户有那么大的权限。仅仅要让他们具有他们负责范围的权限就能够了。比方有的有的人来管理password,我们就仅仅让他能进行password的管理,而不让他有别的权限,这样就须要权限的控制了。
假设我让我当前用户来管理password。即learnpython这个用户能使用passwd这个命令来帮root改动用户password。仅仅要加这行learnpython ALL=(root) /usr/bin/passwd,那么learnpython这个用户就能够使用passwd这个命令了:
可是假设仅仅是运行sudo passwd命令,改动的就是root的password,当然我们不希望普通用户能具有改动rootpassword的权限,那么在visudo的时候就须要将命令的參数限制好。如改成这样:
[root@localhost ~]# visudo
learnpython ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
4).通过别名设置visudo
查看sudoers这个文件的时候。你会看见User_Alias。Host_Alias和Cmnd_Alias这些东西,他们都是一些别名,User_Alias表示具有sudo权限的用户列表,就是第一列參数。Host_Alias表示主机的列表。就是第二列參数。Cmnd_Alias表示同意运行命令的列表,就是第四列參数。还有个Runas_Alias。我初始的sudoers里是没有的,这个表示用户以什么身份登录。也就是第三列參数。
所以假设有几个password管理员的话就能够加上例如以下代码:
[root@localhost ~]# visudo
User_Alias PWMNG = manager1, manager2, manager3
Cmnd_Alias PWCMD = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
PWMNG ALL=(root) PWCMD
5).sudo搭配su
从上面来看。我们都仅仅是切换到别的用户然后运行命令,接着就切回到我们自己的用户了。假设我们要像su那样直接切换到root。然后干自己想干的。这个时候,就要将命令改动成/bin/su -。例如以下:
[root@localhost ~]# visudo
User_Alias ADMINS = user1, user2, user3
ADMINS ALL=(root) /bin/su -
当然这个是须要谨慎了,由于这样用户user1。user2,user3等就直接切换到root了,切换后他们就是老大了。
有没有发现,当我们连续使用sudo的时候,在一定时间内是不用再次输入我们的password,这个事实上是系统自己设定的,在五分钟之内运行sudo仅仅须要输入一次password就能够了。
3.总结
了解完su和sudo,是不是发现sudo有太多的优点了。su方式切换是须要输入目标用户的password。而sudo仅仅须要输入自己的password,所以sudo能够保护目标用户的password不外流的。当帮root管理系统的时候,su是直接将root全部权利交给用户。而sudo能够更好分工,仅仅要配置好/etc/sudoers,这样sudo能够保护系统更安全,并且分工明白,有条不紊。
linux权限之su和sudo的差别的更多相关文章
- CentOS用户权限管理--su与sudo
Linux权限管理--su与sudo 1.su用来切换登录的用户,比如当前用户为chen,可以用su zhu,并输入用户zhu的登录密码,就可以切换到用户zhu.如果一个普通用户想切换到root用户, ...
- chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组
对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...
- chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息
对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...
- 《linux就该这么学》课堂笔记08 用户权限、特殊权限、隐藏权限、su、sudo
1.文件的读.写.执行权限可以简写为 r w x,亦可分别用数字4.2.1来表示 2.文件的特殊权限 2.1.SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限( ...
- 『学了就忘』Linux权限管理 — 54、sudo授权
目录 1.什么是sudo授权 2. sudo授权说明 3.sudo命令的使用 示例1 示例2 示例3 1.什么是sudo授权 在Linux系统中,/sbin/和/usr/sbin/两个目录中的命令只有 ...
- Linux su和sudo命令的区别,并获得root权限
su(superuser) su表示切换用户,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-"后表示也切 ...
- Linux 下以其他用户身份运行程序—— su、sudo、runuser
本文综合分析了Linux系统下,如何使用runuser命令.su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较. 一.su 命令临时切换用户身份 SU:( Switch ...
- 07 Linux su和sudo命令的区别
一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...
- Linux命令--su与sudo
su(switch user)命令的作用:切换用户,一般是普通用户与root用户之间的切换.例:>su #输入su命令Password: #提示输入密码 ...
随机推荐
- 把H5打包成IOS APP其实可以很简单!签名?越狱?都不需要!
很多小伙伴都在开发自己的app, 有的实现实现比较简单,就是一个h5页面,然后想要打包成app发布出去. 这个想法很单纯 打包生成个app这个是很简单的,网上一堆打包工具,分分钟可以完成 BUT…… ...
- 多项式与三角函数求导——BUAA OO 第一单元作业总结
第一次作业 需求简要说明 针对符合规定的多项式表达式输出其符合格式规定的导函数多项式,格式错误输出WRONG FORMAT! 带符号整数 支持前导0的带符号整数,符号可省略,如: +02.-16> ...
- DW1000 用户手册中文版 附录2 IEEE-802.15.4 MAC层
由于已经在wode中排版无法直接复制到博客中,故本节博客发布使用了图片. 论坛可下载PDF http://bphero.com.cn/forum.php?mod=viewthread&tid ...
- BZOJ5465 : [APIO 2018] 选圆圈
假设最大的圆半径为$R$,以$2R$为大小将地图划分为一个个格子,那么每个圆只需要检查圆心在附近$9$个格子内部的所有圆. 在当前圆的半径不足$\frac{R}{2}$时重构网格,那么最多重构$O(\ ...
- tf.contrib.slim arg_scope
缘由 最近一直在看深度学习的代码,又一次看到了slim.arg_scope()的嵌套使用,具体代码如下: with slim.arg_scope( [slim.conv2d, slim.separab ...
- ASP.NET C# 实现实时用户在线
public static class UserOnline { /// <summary> /// 获取或设置在线列表 /// </summary> public stati ...
- CentOS 7.3/Linux .net core sdk 安装
执行下列命令,安装.NET Core SDK(微软官方教程地址 https://www.microsoft.com/net/learn/get-started/linuxcentos) 点开链接,选择 ...
- swust oj 986
哈夫曼译码 1000(ms) 10000(kb) 1997 / 4186 通常要求根据给定的编码本对密文进行解码.现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码.(建立哈夫曼树以及编码.主函 ...
- Windows下搭建Redis集群
Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...
- 记录 制作校园网登陆脚本 python编写 附源码
‘’‘ 首先我们分析一下 1.需要本机的IP 使用 socket 获取 2.需要向服务器提交的数据 构造请求数据 并分析数据可替换 3.检测登陆成功 检测登陆是否成功 ’‘’ 获取IP 这样会返回 本 ...