Linux 的su 与sudo 的区别,查看所有用户

时间:2023-12-24 21:56:43

首先,我们要知道系统当中存在哪些用户。

1、用户名和密码的存储位置

存储帐号的文件:/etc/passwd

存储密码的文件:/etc/shadow

通过/etc/shadow获取的只是密码加密后的Hash散列值,需要解密才能看见

在输入ls -l /etc/passwd /etc/shadow可以看查密码的权限

添加新用户及用户组

使用“useradd ashui”命令给linux系统添加一个新的用户。

使用“passwd ashui”命令给用户“ashui”添加密码。输入两次一样的密码即可完成创建。

使用“groupadd groupTest”命令创建用户组。

使用“usermod -G groupTest ashui”将已有的用户添加到已有的组中。

使用“cat /etc/group |grep group”命令查看是否将刚才的用户添加到组中

1.su

su是最简单的身份切换名,用su我们可以进行任何用户的切换,一般都是su - username,然后输入密码就ok了,但是root用su切换到其他身份的时候是不需要输入密码的。

一般我们切换身份都是切换到root,然后进行一些只有root能干的事,比如修改配置文件,比如下载安装软件,这些都只能是root才有权限干的事,切换到root可以是单纯的su,或者是su -和su - root,后面两个是一样的意思。

为何刚开始只有root能执行sudo,切换到root身份通过visudo查看/etc/sudoers这个配置文件,如果是vim /etc/sudoers是可以查看的,但是不能修改,因为sudoers这个文件是由语法的,只能通过visudo来修改。

1).单个用户的sudoers语法:

如果我要我当前这个用户能执行root的所有操作,那么我只要加一行learnpython ALL=(ALL) ALL。那么如果有很多人需要执行sudo,那不是要写编写很多行啊,这样不是很麻烦,这样就要用到用户组了。

2).利用用户组处理visudo:

看看第二个红色方框那行代码,%wheel代表wheel用户组,如果我们将需要执行root所有操作的用户都加入到wheel用户组,或者我们自定义的用户组,然后添加一行代码,那么就不用一个用户一个用户的添加进来了,这样不是很省事啊。

3).限制用户sudo的权限:

但是经常我们不需要用户有那么大的权限,只要让他们具有他们负责范围的权限就可以了,比如有的有的人来管理密码,我们就只让他能进行密码的管理,而不让他有别的权限,这样就需要权限的控制了。如果我让我当前用户来管理密码,即learnpython这个用户能使用passwd这个命令来帮root修改用户密码,只要加这行learnpython ALL=(root) /usr/bin/passwd,那么learnpython这个用户就可以使用passwd这个命令了:

4).通过别名设置visudo

查看sudoers这个文件的时候,你会看见User_Alias,Host_Alias和Cmnd_Alias这些东西,他们都是一些别名,User_Alias表示具有sudo权限的用户列表,就是第一列参数,Host_Alias表示主机的列表,就是第二列参数,Cmnd_Alias表示允许执行命令的列表,就是第四列参数,还有个Runas_Alias,我初始的sudoers里是没有的,这个表示用户以什么身份登录,也就是第三列参数。

3.总结

了解完su和sudo,是不是发现sudo有太多的好处了。su方式切换是需要输入目标用户的密码,而sudo只需要输入自己的密码,所以sudo可以保护目标用户的密码不外流的。当帮root管理系统的时候,su是直接将root所有权利交给用户,而sudo可以更好分工,只要配置好/etc/sudoers,这样sudo可以保护系统更安全,而且分工明确,有条不紊。

sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。

sudo -i 直接运行sudo命令加-i参数
sudo su 运行sudo命令给su命令提权,运行su命令。
sudo -i 运行结果 PWD=/root
sudo su 运行结果 PWD=/home/用户名(当前用户主目录)

sudo passwd root  给root设置密码

注:su和sudo的区别是:

  1) su的密码是root的密码,而sudo的密码是用户的密码;

  2) su直接将身份变成root,而sudo是以用户登录后以root的身份运行命令,不需要知道root密码.