基础教程

    在使用Linux系统中,有时候还需要做身份切换,这是为什么?

1. su命令用法

  1. su是最简单的身份切换命令,可以进行任何身份的切换。
  2. [su ]命令将身份切换到root,但是需要输入root密码,以non-login
    shell的方式读取变量,这种方式很多原本的变量不会改变,尤其是path,由于没有变成root的环境,因此很多root惯用的指令只能用绝对路径来执行。
  3. [su – 或 su -l
    username]命令将身份切换到特定用户,但是需要输入该用户密码,不加用户名表示切换到root用户,输入root密码。
  4. [su – -c
    指令]命令已root用户执行命令,且执行完毕后恢复原本的身份。
  5. 使用root切换到任务用户,不需要输入密码。
  • 使用普通账号:系统日常操作的好习惯

    虽然使用root对系统进行各种操作不受权限等方面的限制,但却存在重大的安全隐患,假如有人不小心输入的命令
    rm -rf
    /
    。因此为了安全,一般都建议尽量以普通用户身份来进行系统日常操作,而在需要用户超级权限来管理和配置系统时才需要切换到
    root用户。
  • 用较低权限启动系统服务

    相对于系统安全,我们必须要以某些系统账号执行某些程序。如MySQL,我们则可以新建一个mysql账号来专门执行MySQL服务或程序。这样可以最大限度的保证系统安全。
  • 系统安全策略限制
      为了系统安全,禁止远程以root账户登录系统是基本的安全策略手段

2. sudo命令用法

  1. 相对su命令,sudo的执行仅需要输入用户自己的密码即可,甚至可以设定不需要输入密码即可执行命令,并非所有人都能够执行sudo,且仅有规范到/etc/sudoers内的用户才能够执行sodu命令。
  2. [sudo 指令 或 sudo -u username 指令]表示以某用户的环境执行命令,
    不加用户表示以root用户的身份执行。
  3. sudo执行流程:
    3.1 当用户执行sudo时,系统在/etc/sudoers档案中搜索该使用者是否具有
    sudo执行权限;
    3.2
    若使用者具备可执行的sudo权限后,便让使用者【输入自己的密码】来确认;
    3.3
    若密码输入成功,便开始执行sudo后续的指令(root执行sudo时无需输入密码);
    3.4 若切换者的身份与执行者相同时,也无需输入密码。
  4. sudo执行失效为5分钟,超过5分钟需要重新输入密码。

   
基于以上考虑,在日常应用中都是使用普通账户进行登录和常用操作。如果需要维护系统或安装、更新软件时,则需要切换到root身份进行操作。而常用的方式主要有两个:

3. visudo与/etc/sudoers

若要非root用户执行root权限,则root需要先使用visudo命令编辑/etc/sudoers文档,让该账号用户全部或部分root权限。为什么要使用visudo,这是因为/etc/soduers具有语法限定,如果设定错误会造成设置失效,因此才使用visudo命令去编辑,编辑结束离开文件时,系统会去检测文件的语法。
编辑步骤如下:

  1. 输入root账户下输入visudo,或非root账户具备sudo权限的账户输入:sudo
    visudo。
  2. 进入编辑模式,在root行下面新增一行:
    root ALL=(ALL) ALL
    test ALL=(ALL) ALL
    上面一行四个组件的意思是:
    2.1 系统的哪个账号可以使用 sudo 指令,默认为 root 这个账号。
    2.2 这个账号由哪部主机关联到本 Linux
    主机,意思是这个账号可能是由哪一部网绚主机关联过来,,
    这个设定值可以指定客户端计算机(信任用户的意思)。默认root可以来自任何一部主机。
    2.3
    这个账号可以切换到什么身份来下达后续的指令,默认root用户可以切换到任何身份。
    2.4
    可用该用户下达什么指令,这些指令务必使用绝对路径撰写,预设root用户可以切换任何身份执行任何指令。
  3. 退出保存成功即可。
  • su:可以切换到指定的用户,如果切换到root,则需要知道root的密码
  • sudo:提前设置好sudo权限,执行以sudo
    命令
    ,则可以以root身份执行命令,相比于su而言,可以保证root密码不会泄漏。

4. sudo搭配su使用方式

很多时候需要执行很多root工作,所以一直使用sudo很麻烦,有没有办法使用sudo搭配su,一口气将身份切换到root用户,且用自己的密码切入root。答案是有的,即:[sudo
su -]然后输入当前用户密码即可切换到root用户。

su

    su全称为:switch
user,其主要功能为进行任何身份的切换,其常用用法如下所示:

基本用法

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

常用选项如下所示:

选项 解释
-,-l 切换身份的同时初始化HOME/SHELL/USER/LOGNAME/PATH等变量
-c command 仅执行一次指定的命令,而后恢复原来的身份
-m 使用当前的环境设置而不读取新用户的配置文件
-s SHELL 运行指定的SHELL,仅支持/etc/shells中支持的SHELL

su注意事项

  • 若要完整切换到新用户的环境,必须要使用su – username或su -l
    username。这种功能类似于Windows注销当前用户再登录到指定用户
  • su -,-l:如果后面不指定用户名,则默认切换至root账户。
  • 使用root切换到任意其他账户,不需要输入密码,而反过来则需要输入密码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注