Linux学习Day7:用户身份与文件权限

  Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全的则是一系列复杂的配置工作。在Linux系统中,root用户作为系统管理员拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户、启动/关闭服务进程、开启/禁用硬件设备等。但是俗话说“能力越大,责任越大”,因此,在使用root管理员身份管理系统时一定要秉持谨慎的态度,特别是在生产环境下,一旦执行了错误的命令可能会直接毁掉整个系统。

一、用户身份与能力


  Linux系统的管理员之所以是root,并不是因为他的名字叫root,而是因为该用户的身份证号码UID(User IDentification)的数值为0。在Linux系统中,UID就相当于我们的身份证号码一样具有唯一性,因此可以通过用户的UID来判断用户身份。注意:UID是不能冲突的。在RHEL7系统中,用户身份有下面这些:

  •   管理员UID为0:系统的管理员用户。
  •   系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏的范围。注意:在RHEL5/6系统中,系统用户的UID为1~499。
  •   普通用户UID从1000开始:是由系统管理员创建的用于日常工作的用户。

  为了方便管理属于同一组的用户,Linux系统还引入了用户组的概念。通过使用用户组号码GID(Group IDentification),我们可以把多个用户加入到同一组中,从而方便为组中的所有用户统一分配权限或指定任务。

  另外,在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而这个基本用户组只有该用户一人。如果该用户以后被归纳入其他用户组,则这个用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组。

  1、useradd命令

  用于创建新的用户,格式为"useradd  [参数]  用户名"。

  默认情况下,使用该命令创建用户时,用户的家目录存放在/home目录下,Shell解释器为/bin/bash,且默认创建一个与该用户同名的基本用户组。这些默认设置也可以根据下表中的参数进行修改。

参数 作用
-d 指定用户的家目录
-e 账户的到期时间,格式为YYYY-MM-DD
-u 指定用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户组同名的基本用户组
-s 指定该用户的默认Shell解释器

  实验:创建一个普通用户linuxer,并指定家目录的路径、用户的UID以及Shell解释器。 

[root@linuxprobe ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxer
[root@linuxprobe ~]# id linuxer
uid=8888(linuxer) gid=8888(linuxer) groups=8888(linuxer)

  注意:一旦用户的解释器被设置成/sbin/nologin,则表示该用户无法登录到系统中。

   2、groupadd命令

  用于创建用户组,格式为“groupadd  [参数]  群组名”。

  为了更加高效的指派系统中各个用户的权限,常常会把几个用户加入到同一个用户组里,这样便可以针对一类用户统一分配权限。

  实验:创建一个名为tony的用户组。

[root@linuxprobe ~]# groupadd tony

  3、usermod命令

  用于修改用户的属性,格式为“usermod  [参数]  用户名”。

  其实,在Linux系统中创建用户也就是修改配置文件的过程。用户信息保存在/etc/passwd文件中,可以直接编辑文本来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息。usermod命令的参数以及作用如表所示:

参数 作用
-C 填写用户账户的备注信息
-d  -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户,禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID

   实验1:将用户linuxprobe加入到root用户组中。

[root@linuxprobe ~]# usermod -G root linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)   //扩展组列表出现root用户组

  实验2:修改linuxprobe用户的UID号码值。

[root@linuxprobe ~]# usermod -u 6666 linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=6666(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)

  4、passwd命令

  用于修改用户密码、过期时间、认证信息等,格式为“passwd  [参数]  用户名”。其中,root管理员可以直接修改其他所有用户的密码,且不需要校验旧密码。passwd命令的参数以及作用如下表所示:

参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户的密码,如echo "new password" | passwd --stdin username
-d 使该用户可以免密登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称

  实验1:修改用户自己的密码,以及使用root管理员修改其他用户的密码。

[root@linuxprobe ~]# passwd
Changing password for user root.
New password:          //此处输入密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:     //再次输入密码
passwd: all authentication tokens updated successfully.
[root@linuxprobe ~]# passwd zhangsan    //修改zhangsan用户密码
Changing password for user zhangsan.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

  实验2:锁定用户,以及解锁用户。

[root@linuxprobe ~]# passwd -l zhangsan   //锁定zhangsan用户
Locking password for user zhangsan.
passwd: Success
[root@linuxprobe ~]# passwd -S zhangsan   //查看zhangsan用户是否被锁定
zhangsan LK 2020-03-02 0 99999 7 -1 (Password locked.)
[root@linuxprobe ~]# 
[root@linuxprobe ~]# passwd -u zhangsan   //解锁用户
Unlocking password for user zhangsan.
passwd: Success
[root@linuxprobe ~]# passwd -S zhangsan
zhangsan PS 2020-03-02 0 99999 7 -1 (Password set, SHA512 crypt.)

  5、userdel命令

  用于删除用户,格式为“userdel  [参数]  用户名”。在执行用户删除命令时,该用户的家目录默认会留下来,此时可以使用-r参数将其家目录删除。userdel命令相关参数及其作用如下表所示:

参数 作用
-f 强制删除用户
-r 同时删除用户及用户的家目录

   实验:删除lisi用户,以及家目录。

[root@linuxprobe ~]# id lisi
uid=1002(lisi) gid=1002(lisi) groups=1002(lisi)
[root@linuxprobe ~]# userdel -r lisi
[root@linuxprobe ~]# 
[root@linuxprobe ~]# id lisi
id: lisi: no such user

猜你喜欢

转载自www.cnblogs.com/xuliang-daydayup/p/12394635.html