一、su命令

1.命令格式

  • su  [选项]  [-c  命令]  [用户名]

相关参数与选项

  • -:单纯使用-,代表使用login-shell的变量文件去读取方式登录系统。如果后面没有加用户名,默认切换为root
  • -l:与-类似,也是切换用户,以login-shell方式登录
  • -m:-m与-p相同,表示使用目前的环境配置,而不读取新使用者的配置文件
  • -c:后面加命令,仅执行一次

2.特点

  • 使用su切换账号时一定要输入密码才行,输入的密码是你想要切换的那个账号的密码

3.切换为root

①以non-login shell方式变为root

  • 方式:直接输入su
  • 特点:这种方式登录root,读取的变量设置方式为未登录shell的方式,所以root的配置文件都没有读取,虽然是root,但是执行很多操作不会被修改
  • 第一步:切换为root

Linux(入门基础):80---用户身份切换(su、sudo)

①以login shell方式变为root

  • 方式:su -
  • 特点:这种方式登录root,是以登录的方式变为root,此时bash的环境就位root的环境,读取的配置文件也是root的

Linux(入门基础):80---用户身份切换(su、sudo)

4.借助他人身份执行一次命令,之后恢复为原来的身份

  • 格式:su  -  -c '命令'

案例:使用root查看/etc/shadow文件,只执行一次,然后退出

  • 第一步:以普通用户读取,不能读取,没权限

Linux(入门基础):80---用户身份切换(su、sudo)

  • 第二步:借助root身份读取一次,然后恢复为自己的身份

Linux(入门基础):80---用户身份切换(su、sudo)

5.直接切换为他人用户

  • 格式一:su  -l  用户名
  • 格式二:su  -  用户名

二、sudo命令

1.功能

  • su主要用于切换用户身份
  • sudo主要用于使用其它用户的身份执行命令,执行完命令之后恢复原本的身份。当然,sudo也可以用来直接切换用户

2.命令格式

  • sudo  [-b]   [-u  使用者账号]

相关参数与选项

  • -b:把后续的命令放在后台中让系统自行执行,而不与目前的shell产生影响
  • -u:后面接想要切换的账号,若省略-u,则默认切换为root

3.特点

  • ①sudo使用他人身份执行命令时,输入的是自己的密码,而不是他人的密码

②sudo的时间间隔问题:

  • 如果你第一次使用sudo时,系统会让你输入自己的密码。那么当你再次使用sudo的时候,如果两条命令之间间隔在五分钟之间,系统就不会让你输入密码了(人性化与安全性)

4.sudo搭配su使用

  • ①概念:我们知道sudo输入之后是使用他人的身份执行一次命令,命令执行完之后还是恢复为自己的身份,那有没有方法可以直接切换为他人身份哪?就是使用sudo与su的搭配

②用法:(其实与su的用法是一模一样的,不过就是在su之前加了个sudo而已)

  • sudo su:切换为root
  • sudo  su  -:切换为root
  • sudo su -  root:切换为root
  • sudo su  -  其他用户名:切换为其他用户
  • sudo su  -l  其他用户名:切换为其他用户

5.演示案例

  • 案例一:以一般身份使用sudo查看/etc/shadow的内容(就是切换root身份查看)

Linux(入门基础):80---用户身份切换(su、sudo)

Linux(入门基础):80---用户身份切换(su、sudo)

  • 案例二:切换为sshd用户,在/tmp下建立一个myssh文件,然后再删除

Linux(入门基础):80---用户身份切换(su、sudo)

Linux(入门基础):80---用户身份切换(su、sudo)

6.etc/sudoers文件

  • 概念:一个人是否可以使用sudo与/etc/sudoers文件有关,包含在这个文件中的人才可以使用sudo,并且使用sudo可以执行哪些操作,都在这个文件里记录
  • 文件格式:如下

Linux(入门基础):80---用户身份切换(su、sudo)

文件中的数据被分为三栏,每一栏的意义如下(ALL代表全部)

  • 第一栏:用户账号
  • 第二栏:等号左边代表登陆者的来源主机名(从哪里可以登录到你的计算机),等号右边代表你可以切换的身份
  • 第三栏:代表你可以执行的命令,如果有要求,一定要使用绝对路径

7.visudo命令

  • 功能:/etc/sudoers文件必须使用visudo命令来修改,不能直接通过vi或者其他方式修改
  • 用法:使用roor权限在命令行直接输入visudo就可以进入/etc/sudoers文件进行修改
  • 特点:当你修改完使用visudo修改完/etc/sudoers文件之后,系统还会提示你,/etc/sudoers文件是否有语法错误

8.etc/sudoers文件设置用户

  • 格式:用户名  可以从哪里登录=可以切换为那些用户  可以执行那些命令
  • 演示案例:
  • 例如:我们让person这个用户可以在任何网络主机上面登录(ALL),并且使用sudo时可以切换为任何用户(ALL:ALL),并且可以执行任何命令(ALL)

Linux(入门基础):80---用户身份切换(su、sudo)

9..etc/sudoers文件设置用户组

  • 格式:%用户组名   可以从哪里登录=可以切换为那些用户  可以执行那些命令
  • 特点:设置了之后,在这个用户组里面的所有成员都可以使用sudo
  • 演示案例:下图
  • 例如:我们让group_person这个用户组的成员可以在任何网络主机上面登录(ALL),并且使用sudo时可以切换为任何用户(ALL:ALL),并且可以执行任何命令(ALL)

Linux(入门基础):80---用户身份切换(su、sudo)

10..etc/sudoers文件设置不要密码就可以使用sudo

  • 方法:在可以执行哪些命令之前加上NOPASSWD关键字(没设置之前,在/etc/sudoers中的用户或用户组使用sudo命令,第一次都需要输入自己的密码。加上NOPASSWD之后,该用户使用sudo就不需要输入自己的密码,直接就可以使用sudo了)
  • 注意:用户、用户组都可以设置
  • 案例:下图
  • 将huqiong这个用户设置免密使用sudo的功能

Linux(入门基础):80---用户身份切换(su、sudo)

11./etc/sudoers文件设置用户的限制操作(这里有个安全问题)

  • 案例:我们设置huqiong这个用户只能切换为root,且只能使用passwd命令(一定要使用绝对路径)
  • 第一步:在/etc/sudoers文件中设置下面一行

Linux(入门基础):80---用户身份切换(su、sudo)

  • 第二步:我们测试一下,使用root才可以查看/etc/shadow文件,但是被拒绝了,因为huqiong只能使用passwd命令

Linux(入门基础):80---用户身份切换(su、sudo)

  • 第三步:我们测试一下,修改dongshao这个用户的密码,发现可以修改成功

Linux(入门基础):80---用户身份切换(su、sudo)

  • 第四步:我们只输入passwd(我们知道passwd后面不输入用户名时,默认在修改自己的密码,所以使用sudo passwd,就是在修改root的密码),因此这样会造成不安全的问题,因为这样这个用户就可以修改root的密码了,所以我们要做一下调整(后面代表huqiong不能单独使用passwd,并且不能使用passwd root)

Linux(入门基础):80---用户身份切换(su、sudo)

  • 第五步:设置完测试一下,果然不能修改

Linux(入门基础):80---用户身份切换(su、sudo)

Linux(入门基础):80---用户身份切换(su、sudo)

12./etc/sudoers文件设置用户、用户组别名

  • 概念:有时候,我们需要一下设置十几个用户,或者十几个用户组设置到/etc/sudoers文件中,如果一行一行写,太麻烦,可以使用别名设置
  • 演示案例:下图
  • 我们设置user1,user2,user3三个用户(如果user都是用户组,也是相同的原理)

Linux(入门基础):80---用户身份切换(su、sudo)

  • User_Alias:用户名别名,后面的别名自己设定
  • Cmnd_Alias:设置用户能使用的命令别名,后面的别名自己设定

还有一个上面没有用到

  • Host_Alias:来源主机名别名设置

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2021-05-10
  • 2021-09-30
  • 2022-12-23
  • 2021-12-20
猜你喜欢
  • 2021-10-15
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
  • 2021-12-07
  • 2022-12-23
相关资源
相似解决方案