sudo命令与su命令解析

createh53个月前 (01-08)技术教程43

sudo命令

我们平时用低权限账号在使用一些高权限命令时,经常会提示Permission denied,一般人可能会切换到高权限账号后再使用高权限命令。实际上,我们可以在使用的命令前加上"sudo" 来提升权限使用命令。

sudo 表示 "superuser do"。 它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令

既然可以切换账号以使用高权限命令,为何还要使用sudo呢?我直接使用root账号登陆不就行。

首先root账号拥有最高权限,没有任何限制,可以删除整个系统的大部分文件,如果使用不当很容易造成系统损坏,或者文件损坏,所以不推荐直接使用root账号。

其次是为了安全,root账号的密码只有最高管理员才能知道,要是每个人都知道很不安全。

那么应该怎么办呢?sudo命令正是为了解决这个问题,虽然你不知道root账号的密码,但是当你需要root账号的权限来完成一些命令时,就可以使用sudo命令了。但是并不是说所有的低权限账号都可以使用高权限命令或者说所有的高权限命令,如果真是这样的话,那低权限账号和高权限账号也没有任何区别了。

sudo命令是只有在/etc/sudoers中的用户才有资格使用sudo命令来完成root账户才能使用的权限

#举个例子
#使用root创建文件
[root@zabbix-01 ~]# mkdir /test
[root@zabbix-01 ~]# touch /test/aaa
#使用liang用户尝试删除,提示没有权限
[liang@zabbix-01 ~]$ rm -rf /test/aaa
rm: cannot remove ‘/test/aaa’: Permission denied
#使用sudo命令,但是/etc/sudoers中没有这个用户,会提示错误
[liang@zabbix-01 ~]$ sudo rm -rf /test/aaa
[sudo] password for liang: 
liang is not in the sudoers file.  This incident will be reported.

下面举例将liang这个账号添加到/etc/sudoers中

#1,切换到root用户下:su – root
#2,给/etc/sudoers文件添加写权限 :chmod u+w /etc/sudoers
#3,编辑/etc/sudoers文件,给普通用户添加使用sudu的的权限:vim /etc/sudoers
#4,找到这行:root ALL=(ALL) ALL, 在这行下面添加 xxx ALL=(ALL) ALL (这里的xxx就是你的普通用户)
#这里解释一下,sudoers下面添加普通用户可以使用sudo命令的格式:
#wangpeng ALL=(ALL) ALL :普通用户wangpeng可以使用sudo命令,但是需要密码
#这里注意!如果想限制只能sudo指定命令时,命令所在的目录要正确
#wangpeng zabbix-01=(root) /bin/ls,/bin/netstat:表示wangpeng用户可以在zabbix-01主机以root的用户身份执行ls与netstat命令
#%java ALL=(ALL) ALL 用户组java的用户可以使用sudo命令,但是需要密码
#wangpeng ALL=(ALL) NOPASSWD:ALL 普通用户wangpeng可以使用sudo命令,不需要密码
#%java ALL=(ALL) NOPASSWD:ALL 用户组java的用户可以使用sudo命令,不需要密码
#wangpeng  ALL=(ALL) NOPASSWD: /bin/ls,/bin/netstat 设置 sudo 指定命令时不需要输入密码
#添加完之后,保存退出
#去除root用户对sudoers文件的写权限:chmod u-w /etc/sudoers

添加好sudo后,再次尝试删除指定文件

[liang@zabbix-01 ~]$ rm -f /test/aaa 
rm: cannot remove ‘/test/aaa’: Permission denied
[liang@zabbix-01 ~]$ sudo rm -f /test/aaa 
[sudo] password for liang: 
[liang@zabbix-01 ~]$ ls /test/
#提示删除成功

su命令

su命令比sudo少了一个do,但是意义是完全不一样的,su表示"swith user",命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码

相关文章

网络常见的 9 大命令,非常实用

1.ping 命令ping 是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping 就是一个测试程序,如果 ping 运行正确,...

命令行参数

用过Unix命令行,都会感受它的强大。Unix like包括Linux发行版、macOS等命令行在大部分情况下比图形化高效太多,很多高手都在用命令行。CUI和GUI尽管专业的程序员通常用CUI, 但G...

11款常用Java编程软件推荐(建议收藏)

大家好,我是mikechen。优秀的Java编程软件可以极大的提升我们的开发效率,所以今天给大家推荐一波必备Java编程软件@mikechen本篇已经收纳于mikechen创作的《阿里架构师进阶专题合...

Linux详解系列2- 这100条常见命令你都用过哪些?

接着上面的文章继续介绍 ,上一篇文章请见:Linux详解系列一:如何安装系统及客户端工具的使用 。本篇主要介绍Linux的目录结构及常见命令部分 。Linux目录结构说明Linux命令集合一.Linu...

全网最完整的免费java教程讲义(一)——java配置和安装

一,安装Java1) 安装JDK要学习和使用java,首先需要安装JDK(Java Developemnt Kit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...