Linux 基础教程 43-su和sudo命令

执行流程

  • 1、当用户执行sudo时,系统会在/etc/sudoers文件查找该用户是否有执行sudo的权限。
  • 2、若用户拥有执行sudo权限后,则输入用户自身的密码确认
  • 3、若密码确认成功,即可执行sudo后面的命令
  • 4、若切换身份与执行者身份相同,则无需要输入密码
      基于以上流程,能否使用sudo则要看/etc/sudoers中的设置

4. sudo搭配su使用方式

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

基础命令:groupadd  添加用户组

参数说明:

groupname – 组名

实例:# groupadd user

说明:添加一个叫user的用户组

su

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

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切换到任务用户,不需要输入密码。

基础命令:passwd  修改密码

1、 非root用户,不能修改其他用户的密码

如: # su – user1

        # passwd user2  –会有错误提示

基本用法

   
sudo主要功能是以其他用户身份执行命令,而要输入的密码也仅仅是当前用户身身的密码而非root账户密码,类似于Windows系统中的以管理员身份运行。其常用用法如下所示:

sudo [选项] [命令]

常用选项如下所示:

选项 解释
-b 在后台执行指定的命令
-u 以指定用户身份运行,如不指定则默认为root
-e 编辑文件而不是运行命令

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. 退出保存成功即可。

基础命令:usermod  修改用户账户信息

常用参数说明:

-c 修改用户账号的备注文字

-d 修改用户登录是的目录

-e 修改账号的有效期限

-g 修改用户所属的群组

-G 修改用户所属的附加群组

-l 修改用户账号名称

-L 锁定用户密码,使密码无效

-s 修改用户登入后所使用的shell

-u 修改用户ID

-U 解除密码锁定

实例1 : # usermod -l nuser lwan

说明:将用户lwan改名为nuser

实例2: # usermod -d /usr/userdir/lwan lwan

说明:将用户lwan的主目录修改为/usr/userdir/lwan

实例3: # usermod -g user2 lwan

说明:将用户lwan改为user2组

实例4: #usermod -L newuser1

说明:锁定账号newuser1

实例5: # usermod -U newuser1

说明:解除锁定账号newuser1

补充:usernod可以用来修改用户账户的各项设定,不允许改变正在线上的使用者账号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序

基础命令:sudo  以其他身份执行命令

说明:sudo可以让用户以其他的身份来执行指定的指令,预设的身份是root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码

参数说明:

-b 在后台执行指令

-H 将HOME环境变量设为新身份的HOME环境变量

-k 结束密码的有效期限,也就是下次再执行sudo时需要输入密码

-l 列出目前用户可执行与无法执行的指令

-p 改变询问密码的提示符号

-s 执行指定的shell

实例:[lwan@Test ~]$ sudo ls -l/root

说明:lwan通过sudo的方式切换到root用户执行命令“ls -l/root”

说明事项:

1、 确认系统安装了sudo包 rpm -qa | grep sudo

2、 在授权文件/etc/sudoers中,知名该用户有执行这个命令的权限

/etc/sudoers文件:

1、设置命令类型组:

Cmnd_Alias NETWORKING = /sbin/route,/sbin/ifconfig…

说明:将网络类的命令设置别名为NETWORDING

2、设置用户组可使用的命令:

第一种写法:用户组+机器+命令

%sys ALL = NETWORKING,SOFTWARE,SERVICES…

说明:sys用户组在任意机器(ALL)上面都有NETWORKING等别名的权限

第二种写法:用户+机器+命令

root ALL=(ALL)    ALL

lwan ALL=(ALL)   NOPASSWD: ALL

ckl ALL=NETWORKING

基础命令:su    切换用户

注:root切换其他用户不需要密码,其他用户间切换需要密码

su lwan

路径没有切换到lwan用户的家目录,且环境变量没有加载用户的环境变量

su – lwan

路径切换到lwan的家目录,且加载了该用户的环境变量

查看路径命令:pwd

查看环境变量命令:echo $PATH

作业1 : 用户的/etc/passwd的各个字段含义

作业2 : usermod相关的命令 如lock,unlock,改uid等

作业3 : sudo相关的配置 操作

作业4 : su的用户切换,su的命令 su su-

  • su:可以切换到指定的用户,如果切换到root,则需要知道root的密码
  • sudo:提前设置好sudo权限,执行以sudo
    命令
    ,则可以以root身份执行命令,相比于su而言,可以保证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分钟需要重新输入密码。

/etc/shadow文件

字段说明:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

1、 登录名 是与/etc/passwd文件中的登录名一致的用户账号

2、 口令
字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合(./0-9A-Za-z)中的字符,则对应的用户不能登录

3、 最后一次修改时间
表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日

4、 最小时间间隔 指的是两次修改口令之间所需的最小天数

5、 最大时间间隔 指的是口令保持有效的最大天数

6、 警告时间 表示从系统开始警告用户到用户密码正式失效之间的天数

7、 不活动时间 表示的是用户没有登陆活动但账号仍能保持有效的最大天数

8、 失效时间
给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图