linux 用户和组

简介: linux 用户和组

在linux中每一个用户都有唯一的uid,linux内核根据uid区分不同的用户,同样每一个用户组,也有唯一的gid,一个组下可以存在多个账户, 如果给group添加上了权限A,那么属于这个组的全部用户都拥有这个权限, 每一个用户都可以加入多个组,但是肯定有一个是它的主要组


与用户和账户相关的文件#


  • /etc/passwd

查看文件内容如下:


[root@ecs-t6-large-2-linux-20190824103606 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
tcpdump:x:72:72::/:/sbin/nologin
dockerroot:x:997:994:Docker User:/var/lib/docker:/sbin/nologin


每行都有七个字段:

  • 字段1: 用户账户名
  • 字段2: 密码的占位符
  • 字段3: UID
  • 字段4: GID
  • 字段5: 用户名全称
  • 字段6: 宿主目录
  • 字段7: 登录shell


/etc/passwd 的第二个字段, 是两个!! , 表示账号被禁用

用户的用户是系统用户, 一般系统用户的登录shell都是 /sbin/nologin ,意思是一登录,就注销, 普通用户的默认的登录shell是 bash

很多时候, 为了安全考虑,安装的软件的运行权限都由 root 移交给普通用户,防止root在运行软件时,病毒获取到root权限

普通用户的UID (user identity)都大于500

超级用户root的UID=0, linux内核通过UID区分当前用户是普通用户还是超级用户,如果将这个/etc/passwd 的第三个字段修改成0, 普通用户转变成超级用户

程序用户的UID 在 1-499 之间


  • /etc/shadow

用于保存密码字串、密码有效期等信息


root:$6$DcAomvBO314te$bXUTg8SDgvH8pPtc2Sgbt5XctXwKOtcHHgM/Hm1vndY1jqaihIg0Vb6ge1Sww.VoQPg950Od7tnZ7OY81UGyy0:18132:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
...
~


这里面的每一行都代表一个用户的密码记录,一共有9个字段

  • 字段1: 账户名
  • 字段2: 经过加密的密码字符串
  • 字段3: 上次修改密码的时间
  • 字段4: 密码的最短有效期, 默认0
  • 字段5: 密码的最长有效期,默认 99999
  • 字段6: 提前多少天警告用户密码将过期,默认7
  • 字段7: 密码过期多少天后禁用这个用户
  • 字段8: 账号失效时间
  • 字段9: 保留字段,未使用


其他文件#


  • /etc/skel
    查看文件内容 cat -a /etc/skel

这个目录中的文件都是隐藏文件, 得添加上选项-a才能显示出来


[root@ecs-t6-large-2-linux-20190824103606 ~]# ll -a /etc/skel/
total 20
drwxr-xr-x.  2 root root 4096 Feb 22  2019 .
drwxr-xr-x. 84 root root 4096 Sep  8 19:53 ..
-rw-r--r--   1 root root   18 Oct 31  2018 .bash_logout
-rw-r--r--   1 root root  193 Oct 31  2018 .bash_profile
-rw-r--r--   1 root root  231 Oct 31  2018 .bashrc


  • .bash_profile:用户每次登录时执行
  • .bashrc:每次进入新的Bash环境时执行
  • .bash_logout:用户每次退出登录时执行


新建用户账户时,会从/etc/skel目录中复制 /etc/skel/ 的文件,到用户的家目录中,这个家目录就是用户每次登录时进入的目录,如果他没有家目录,一登录进去进去的就是根目录

另一个用法就是,公司给新人创建账户时,可能会把公司的规章制度放置到这个文件中,达到人手一份的效果


  • /etc/login.defs

默认定义用户账户属性的文件,如设置密码的加密算法,以及密码的有效性


对账户初始的属性设置

设置普通用户的UID和GID范围等


和组相关的文件#


  • /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:root,adm,daemon
...


四个字段

  • 字段1: 组账户名
  • 字段2: 组密码占位符
  • 字段3: GID
  • 字段4: 组成员

用户至少属于一个组,默认情况下,创建用户时,会自动的创建一个组,组名和用户名一样,这个组就是用户的主要组(查看用户的主要组,在/etc/passwd 的第四个字段中可以看到GID)

  • /etc/gshadow
    存放组账号的密码信息


添加用户#


命令: useradd [选项] [用户名]

  • -u: 指定uid, 默认在当前最大的uid上+1
  • -d: home dir 指定宿主目录, 缺省为 /home/用户名
  • -e: expiredate 指定用户的失效时间
  • -g: 指定用户的主要组 (或GID号)
  • -G: 指定用户的附加组名 (或GID号)
  • -M: no-create-home 不为用户创建并初始化宿主目录
  • -s: 指定用户的登录shell, 默认是 /bin/bash


通过上面的目录介绍, 我们可以看知道,useradd命令至少触发了五个操作 1. /etc/passwd 2. /etc/shadow 3. etc/group 4. /home 5. /etc/skel, 还会创建 /var/spool/mail


账户密码相关命令#


新创建的用户是没有密码的,想登录,就得使用下面的命令给用户创建密码

命令: passwd [选项] 用户名

  • -d: delete 清空用户密码,(远程不可登录)
  • -l: lock 锁定用户账号
  • -S: --status 查看用户的状态(是否被锁定)
  • -u: unlock 解锁用户
  • -stdin: 接受标准输入当成密码


echo '123' | passwd --stdin user


删除用户相关#


命令: userdel [-r] 用户名

-r: remove ,表示连同用户的宿主目录一并删除


其他命令#


命令: usermod [选项] 用户名

  • -l: login 修改用户登录时的名称,(其实就是修改账号)


usermod -l newName oldname


  • -L: 锁定用户,(其实就是在/etc/shadow的第二个字段上添加了一个!)
  • U: 解锁用户


为了更方便的显示用户账号的相关信息

命令: chage [选项] 用户名

常用命令选项

  • -l: list 列出密码失效性的具体信息
  • -d: last day, 设置这个值为0的话,第一次登录后会被强制的修改密码


[root@ecs-t6-large-2-linux-20190824103606 home]# chage -l root
Last password change          : Aug 24, 2019
Password expires          : never
Password inactive         : never
Account expires           : never
Minimum number of days between password change    : 0
Maximum number of days between password change    : 99999
Number of days of warning before password expires : 7


与group相关的命令#


  • 添加用户组
    命令 groupadd [-g GID] 组账号名

如果不指定GID,默认就是当前最大的gid+1

  • 删除组
    命令 groupdel 组账号名
  • groupmod 设置组名和组id
    groupmod [选项]... 组帐号名

常用命令选项

  • -n:修改组名
  • -g:修改组id
  • gpasswd命令

格式:gpasswd [选项]... [用户] [组帐号名]

常用命令选项

  • -a: 向组内添加一个用户
  • -d: 从组内删除一个用户成员
  • -M: 定义组成员列表, 用逗号分隔


gpasswd -M [用户1] [用户2] .. [用户组]


-M 会进行重置操作,也就是说,如果不添加上用户1, 就算原来存在用户1, 也会因为重置而被删除


id 命令#


查询用户的身份标识

命令 : id [用户名]


[root@ecs-t6-large-2-linux-20190824103606 home]# id root
uid=0(root) gid=0(root) groups=0(root)


finger命令#


查询用户账户的详细信息

命令: finger [用户名]


默认没有安装


who w users 查看当前在线的用户的信息#


[root@ecs-t6-large-2-linux-20190824103606 home]# who
root     pts/0        2019-09-08 19:39 (58.56.112.165)
[root@ecs-t6-large-2-linux-20190824103606 home]# w
 20:47:26 up 4 days,  5:18,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    58.56.112.165    19:39    6.00s  0.10s  0.00s w
[root@ecs-t6-large-2-linux-20190824103606 home]# users
root


groups 命令#


查询用户的所属组

命令 : groups 用户名


[root@ecs-t6-large-2-linux-20190824103606 home]# groups root
root : root
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Ubuntu Linux 网络安全
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
本文介绍了Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录。
2777 1
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
|
关系型数据库 MySQL Linux
Linux系统之Mysql数据库用户基本管理
Linux系统之Mysql数据库用户基本管理
123 1
Linux系统之Mysql数据库用户基本管理
|
Linux Windows
OracleVirtualBo界面太小,操作界面对用户不友好?如何使得界面最大化且方便在Windows和Linux环境之间切换应用呢?
OracleVirtualBo界面太小,操作界面对用户不友好?如何使得界面最大化且方便在Windows和Linux环境之间切换应用呢?
257 0
OracleVirtualBo界面太小,操作界面对用户不友好?如何使得界面最大化且方便在Windows和Linux环境之间切换应用呢?
|
运维 Linux Shell
Linux基础知识- 系统随你玩之--文件的用户与用户组
Linux基础知识- 系统随你玩之--介绍文件的用户与用户组并带领大家实际操作
Linux基础知识- 系统随你玩之--文件的用户与用户组
|
Linux Shell 编译器
Linux:关机&重启操作+用户登录和注销+添加用户+指定/修改密码+删除用户+查询用户信息+切换用户+查询当前用户/登录用户+用户组+修改用户的组+用户组和相关文件
Linux:关机&重启操作+用户登录和注销+添加用户+指定/修改密码+删除用户+查询用户信息+切换用户+查询当前用户/登录用户+用户组+修改用户的组+用户组和相关文件
387 0
Linux:关机&重启操作+用户登录和注销+添加用户+指定/修改密码+删除用户+查询用户信息+切换用户+查询当前用户/登录用户+用户组+修改用户的组+用户组和相关文件
|
Linux
linux第四课:改变文件的权限和属性(内含:1.修改权限命令chmod+2.临时切换用户用 sudo+3.chowm:改变文件所有者)
linux第四课:改变文件的权限和属性(内含:1.修改权限命令chmod+2.临时切换用户用 sudo+3.chowm:改变文件所有者)
338 0
linux第四课:改变文件的权限和属性(内含:1.修改权限命令chmod+2.临时切换用户用 sudo+3.chowm:改变文件所有者)
|
安全 Linux Shell
Linux 文件安全,用户访问安全|学习笔记
快速学习 Linux 文件安全,用户访问安全
Linux 文件安全,用户访问安全|学习笔记
|
运维 监控 安全
Linux 认证授权及用户定义及组的类别 | 学习笔记
快速学习Linux 认证授权及用户定义及组的类别
159 0
Linux 认证授权及用户定义及组的类别 | 学习笔记
|
运维 安全 关系型数据库
Linux 用户权限设置和企业级管理实战 | 学习笔记
快速学习Linux 用户权限设置和企业级管理实战
208 0
Linux 用户权限设置和企业级管理实战 | 学习笔记
|
运维 安全 Linux
linux用户和组的管理详解
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 原文地址:[https://www.couragesteak.com/article/81](https://www.couragesteak.com/article/81)
linux用户和组的管理详解
下一篇
无影云桌面