Linux用户管理

Linux用户管理

制作人:全心全意

Linux是一个多用户分时系统,想要使用系统资源,就必须在系统中有合法的账户,每个账户都有一个唯一的用户名,同时必须设置密码。另外,为了更灵活地管理用户和控制文件权限,Linux还采用了用户组(用户的容器)的概念,为系统管理提供了极大的方便。


UID和GID

  用户和用户组就是系统中的标识符
  UID:Linux系统采用一个32位的整数记录和区分不同的用户,意味着系统可记录多达40亿个不同的用户。用来区分不同用户的数字被称为UserID,简称UID。系统会自动记录用户名与UID的对应关系
    Linux中的用户分为3类:
      普通用户:普通用户只能在其家目录、系统临时目录或其它经过授权的目录中操作。通常普通用户的UID大于500,在添加普通用户时,系统默认从500开始编号(一般到65535,也可使用32位的整数,一般不用)
      根用户:根用户也就是root用户,UID为0,也称超级用户,拥有对系统的完全控制权限。使用时要十分小心
      系统用户:系统用户指的是系统运行时必须有的用户,但并不是真实的使用者,例如apache、mysql。用户UID一般在1~499。
  GID:用于区分不同的用户组,每个用户至少属于一个组,也可以同时属于多个组

 

  

在Linux系统中,用来记录用户名和密码的重要文件

用户对应文件:/etc/passwd  影子口令文件:/etc/shadow

用户组对应文件:/etc/group  影子口令文件:/etc/gshadow

 

  /etc/passwd文件

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
......
zq:x:1000:1000:zq:/home/zq:/bin/bash

 

列数 含  义 说    明
1   用户名   UID的字符串标记方式,方便阅读
2   密码   在旧的UNIX系统中,该字段是用户加密后的密码,现已不再使用,而是将密码存放在/etc/shadow中,此处都是一个字母x
3   UID   系统用来区分不同用户的整数
4   GID   系统用来区分不同用户组的整数
5   说明栏   类似于“注释”,现已不再使用
6   家目录   用户登录后,所处的目录
7   登录Shell   用户登录后,所使用的Shell

表 /etc/passwd内容格式说明

 

  /etc/shadow文件

[root@localhost ~]# cat /etc/shadow
root:$6$iZraEWHS7R80eTXu$Gl/NAZeR7ijVLlQWQHhgL7AgiYUXtzrZ75S0VJ0l.gTDy4UWUL64gnnRwUipVNLFMT8Zuo1COb7pL5.AQD3sS/::0:99999:7:::
......
#/etc/shadow文件默认只有root用户才有读的权限,其他用户完全没有读取这个文件的可能。

  

列数 含  义 说    明
1   用户名   UID的字符串标记方式,方便阅读
2   密码   经过加密后的密码,第一个字符为!表示该用户冻结
3   密码的最近修改日   这个数字是从1970年1月1日至密码修改日的天数
4   密码不可修改的天数   修改密码后,几天内不可修改密码,0则随时可以修改
5   密码重新修改的天数   密码使用的天数,到期之前系统会提醒用户修改密码
6   密码失效提前警告的天数   密码到期前几天提醒用户修改密码
7   密码失效宽限天数   密码到期后几天失效
8   账号失效日期   一般为空
9   保留字段   暂无

表 /etc/shadow内容格式说明

 

   /etc/group文件

[root@localhost ~]# cat /etc/group
root:x:0:
......

  

列数 含  义 说    明
1   组名  
2   密码占位符  
3   组ID,GID  
4   以本组为附加组的用户  

表 /etc/group内容格式说明

 

Linux账号管理

  新增用户:useradd

    用法:useradd [选项] 用户名

    -u:指定UID

    -g:指定基本组GID(需要已存在)

    -G:指定附加组,可以有多个,逗号分隔

    -c:指定注释信息

    -d:指定用户家目录(默认为/home/用户名)

    -m:与-k(将/etc/skel下的文件拷贝到新用户的家目录)结合使用,若用户家目录不存在,将创建用户的家目录,不指定也会进行此操作

    -M:创建用户时,不创建家目录

    -r:添加一个系统用户(自动从1-499选取UID,不能登录系统,没有家目录)

拓展:创建用户时,我们会省略一些参数,省略这些参数的默认值存放在/etc/default/useradd文件中

[root@localhost ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home            #如果用户没有指定家目录就在该目录下创建一个与用户同名的目录作为家目录
INACTIVE=-1
EXPIRE=                    #密码的使用期限,没有值代表永不过期
SHELL=/bin/bash        #用户的默认Shell
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

  

  修改密码:passwd

    用法:passwd [用户名]

    --stdin:从标准输入获取密码

    -l:锁定用户账号

    -u:解锁用户账号

    -n:指定密码最短使用期限

    -x:指定密码最长使用期限

    -w:指定警告时间

    -i:指定非活动时间(密码到期几天失效)

    -d:删除用户密码(删除后用户无法登录)

    不指定用户名,修改当前登录用户的密码,普通用户仅能修改自己的密码

    注:不设置密码的情况下,/etc/shadow文件中密码显示为两个感叹号“!!”,说明不允许该用户登录系统

 

[root@localhost ~]# echo "123456" | passwd --stdin zq
更改用户 zq 的密码 。
passwd:所有的身份验证令牌已经成功更新。

 

  检查系统密码文件:pwck

    提出一些警告,检查用户账号完整性,例如缺少家目录

   

  修改帐号和密码的有效期限:chage

    用法:https://ipcmen.com/chage

 

  修改用户:usermod

    用法:usermod [选项] 用户名

    -u:修改UID

    -g:修改基本组GID

    -G:修改附加组GID,默认为覆盖之前的。与-a结合使用可追加附加组

    -c:修改注释信息

    -d:指定家目录(保证目录存在,否则登录时报错)

      -m:如果指定用的家目录存在,就将旧目录改为新目录。一般用于在家目录有自己创建的文件。与-d结合使用

    -s:修改用户登录shell

    -l:修改用户名

    -e:修改用户禁用时间(格式:yyyy-mm-dd)

    -f:修改用户密码到期后几天失效

    -L:冻结账号

    -U:解冻账号

  交互方式修改用户shell:chsh

    用法:chsh 用户名

  交互方式修改用户的注释(finger)信息:chfn

    用法:chfn 用户名

      可指定用户全名、工作地点、工作电话、家庭电话。

 

  删除用户:userdel

    用法:userdel [选项] 用户名

      -r:删除用户时,同时删除用户家目录和该用户的邮件(默认不删除)

 

用户组的类别

  私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组,称为用户的私有组

  基本组:用户默认的组称为基本组。基本组可以是私有组

  附加组或额外组:默认组以外的其它组称为附加组或额外组

 

  添加用户组:groupadd

    用法:groupadd [选项] [用户组]

      -g:指定GID

      -r:添加一个系统用户组(自动从1-499选取GID)

 

  修改用户组:groupmod

    用法:groupmod [选项] 用户组

      -g:修改GID

      -n:修改组名

 

  删除用户组:groupdel

    用法:groupdel 用户组 

 

  组密码管理:gpasswd

    用法:gpasswd 组名

    注:一般在用户临时切换基本组(newgrp)时使用,临时生效,可使用exit退出

    临时切换基本组:newgrp

      用法:newgrp 组名

        此时创建文件的属主时用户本身,属组时用户临时指定的基本组

 

检查用户信息

  查看用户的UID和所属组

    语法:id [选项] [用户名]

      -u:仅显示UID

      -g:仅显示基本组GID

      -G:显示所有的组GID(基本组+附加组)

      -n:不显示ID,显示用户名或组名,需要与u/g/G结合使用

[root@localhost ~]# id            #查看当前用户的UID及所属组
uid=0(root) gid=0(root) 组=0(root)

[root@localhost ~]# id zq        #查看zq用户的UID及所属组
uid=1000(zq) gid=1000(zq) 组=1000(zq),10(wheel)

[root@localhost ~]# id -u
0
[root@localhost ~]# id -un
root

  

  查看用户的所属组

    语法:groups [用户名]

[root@localhost ~]# groups zq      #查看zq用户的所属组
zq : zq wheel

 

  查询系统当前在线的用户

    语法:users

[root@localhost ~]# users 
(unknown) root

  显示了当前登录用户的所有用户,(unknown)表示图形化没有进行登录

    语法:who

[root@localhost ~]# who
(unknown) :0           2020-04-28 16:36 (:0)
root     pts/0        2020-04-28 16:37 (172.16.1.80)

  第一列显示的是用户名,第二列是用户登录的终端,第三列是用户登录的时间(若远程登录,同时显示IP或主机名)

    语法:w

[root@localhost ~]# w
 16:51:59 up 2 days, 17 min,  2 users,  load average: 0.01, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    172.16.1.80      10:10    7.00s  0.11s  0.00s w

   显示比who更加详细的信息,第一行显示当前时间,系统运行时间,已登录的用户数量和系统负载。

    第一列:登陆系统的用户名

    第二列:用户登录终端

    第三列:若远程登录,显示IP或主机名

    第四列:用户登陆时间

    第五列:用户闲置时间

    第六列:与终端相关的当前所有运行进程消耗的CPU时间总量

    第七列:当前WHAT列所对应的进程消耗的CPU时间总量

    第八列:用户当前运行的进程

 

  检索用户的相关信息

    语法:finger [选项] [用户名]

[root@localhost ~]# finger zq
Login: zq             			Name: zq
Directory: /home/zq                 	Shell: /bin/bash
Last login 四 4月 30 13:54 (CST) on pts/0
No mail.
No Plan.

#==注释信息===========================
登录名    全称
家目录    登录shell
最近一次登录时间
邮件
计划任务 

 

用户的切换

   切换用户:su

    语法:su [-] [用户名]

[root@localhost ~]# su        #切换到root用户

[root@localhost ~]# su -        #切换到root用户并使用新的环境

[root@localhost ~]# su - zq     #切换到zq用户并使用新的环境

  

 

相关内容:

  Linux文件管理

  Linux文件权限管理

posted @ 2020-04-27 17:23  全心全意_运维  阅读(471)  评论(0编辑  收藏  举报