linux用户和组账户

Linux多用户多任务操作系统,可以多用户同时登陆做不同的事情,这就是多用户多任务
Windows也是多用户多任务操作系统,但是远程只能登陆一个,Linux可以登录多个,多个同时做不同的事情。
一、用户和组的关系及类型
二、用户和组的相关文件详解
三、用户、组操作
四、用户和组账户查询

一、用户和组的关系
1.每个账户有一个唯一的UID(用户的id)
账户就是Linux中的用户名,Linux中必须有用户名和密码才能登陆。Linux内核看id不看名字,如果手工将两个用户的uid改成一样的,Linux内核就认为这两个用户就是一个用户,uid相同时,权限就是一样的。在计算机中,两个用户名可以一样,但是一般不设置成一样的,一般情况下,用户名不要相同,uid也不要相同。
2.每个组也有一个唯一的GID(用户组的id)
组是方便对用户权限的简单设置。
3.多个账户可以属于同一个组
4.一个用户可以加入不同的组,但是一定有一个组是主要组(也叫基本组),其他的都是次要的。
linux用户和组账户
二、用户和组的相关文件(重要)

和账户相关文件:/etc/passwd、/etc/shadow
和组相关文件:/etc/group、/etc/gshadow
账户宿主(家)目录中文件来源:新建用户帐号时,从 /etc/skel 目录中复制而来
如果创建用户时有家目录,直接进入家目录,否则进入根目录,正常情况下,用户都应该有家目录
默认定义账户的属性文件:
/etc/login.defs //密码加密算法,有效期等属性
1.用于保存用户的帐号基本信息
文件位置:/etc/passwd
每一行对应一个用户的帐号记录,多少行代表多少个用户,一行中用:分割,共7个字段,都要记住。如果这个文件删除了,就不能登系统了,删一行少一个用户。
linux用户和组账户
字段1:用户帐号的名称 //用户名
字段2:密码占位符“x” //表示有密码,但是密码不在这个文件,密码在另外一个文件, 如果把x删除,用户就没有密码了,就可以空密码登陆了。Passwd u1给u1换密码。
字段3:用户帐号的UID号 //管理员的uid为0,0为管理员,Passwd u1给u1换密码。
字段4:所属基本组帐号的GID号 //基本组的gid
字段5:用户全名 //自己随便写,可以写用户名对应的人的姓名,电话什么的,也可以不写是空的
字段6:宿主目录 //家目录,普通用户的家目录可以不在home下,可以改
字段7:登录Shell信息 //登录成功自动启动的shell,默认的一般是/bin/bash,/sbin/nologin注销,一登录就注销,回到登录界面,再登录注销,表示该用户不可以登录,不正常。如果想创建一个用户但是不想让它登录,可以将它的shell设置为/sbin/nologin,也可以设置为/bin/fdse,这个也是不能登陆的。
Passwd的很多用户都是不能登陆的,这些用户是Linux安装时自动创建的用户,称为程序用户,这些用户可以指定运行程序的时候,指定用什么用户去运行,如果不指定的话,用当前用户去运行。为什么用不同的用户运行呢?管理员运行程序时,如果程序有漏洞,就有可能通过这个漏洞得到管理员的密码,比较危险,为了安全,创建普通用户,用普通用户去运行程序,但是这些程序只是运行程序,不用远程登录,所以将它们设置为不可登录的。

用户账户:管理员,非管理员
超级用户root
程序用户
普通用户//可以通过这些用户远程登录
UID (User Identity,用户标识号)
超级用户root的UID为0 相同uid用户一样,一般uid都是唯一的
程序用户的UID1-499 //范围不用记,没有用,可以改
普通用户的UID大于等于500

2.用于保存密码字串、密码有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录,也是:分割,九个字段
linux用户和组账户
linux用户和组账户
字段1:用户帐号的名称,这个用户名和passwd的用户名一样记住
字段2:加密的密码字串信息 //密码的密文,该字段用$分割算法记住
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0 //随时可以改密码
字段5:密码的最长有效天数,默认值为99999 //永久有效
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户,一般是0 //宽松的时间
字段8:帐号失效时间,默认值为空 //宽松的时间也过去之后
字段9:保留字段(未使用)
加密算法
1 MD5
2a Blowfish
5 SHA-256
6 SHA-512

3.组相关的文件
/etc/group文件
组帐号:
主要组(私有组,基本组)
次要组(附属组)
GID: (Group Identify,组标识号)
也是:分割,四个字段
linux用户和组账户
字段一:组账号名
字段二:密码占位符 //组密码在/etc/gshadow文件中,一般情况下不设置组密码
字段三:gid
字段四:组成员列表,但是当u1用户在u1组内时,组成员列表里没有u1

Linux组帐号
主要组(私有组)
与用户相关的默认组,在/etc/passwd文件的第四个字段定义
一个用户必须属于一个组,这个组就是主要组。
次要组(附属组)
用户可以同时属于其他的组,在/etc/group文件的第四个字段定义
用户的主要组的名称和GID相关

用户至少属于一个组(主要组)
用户也可以属于多个组(除了主要组其他都是次要组)
默认情况下,创建用户时,会自动创建一个组,组名和用户名一样,这个组就是这个用户的主要组,

/etc/skel/*文件(隐藏文件)(公司必读文件可以放在这个目录下)(其实就是脚本)
新建用户帐号时,这个文件会复制到用户宿主目录中
主要控制用户初始配置文件
.bash_profile:用户每次登录时执行,改了只会影响一个用户
.bashrc:每次进入新的Bash环境时执行
.bash_logout:用户每次退出登录时执行
/etc/profile 所有用户每次登录时会执行,改了影响所有用户

.bash_profile:.bashrc .bash_logout:这三个文件在每个用户家目录下都有。

/etc/gshadow文件(可以不用管)
保存组帐号的密码信息
/etc/gshadow文件的应用极少,知道有这个文件即可
linux用户和组账户

/etc/login.defs文件
对账户初始的属性设置
设置普通用户的UID和GID范围等

cat /etc/login.defs
linux用户和组账户

三、添加与删除用户(其实就是通过命令对配置文件进行创建或修改)
useradd命令
格式:useradd [选项]… 用户名
常用命令选项
-u:指定 UID 标记号,不用考虑范围,无所谓,不指定当前最大加一
-d:指定宿主目录,可以不在home下缺省为 /home/用户名,指定的目录是不存在的,自 动创建
-e:指定帐号失效时间
-g:指定用户的基本组名(或GID号),不指定时,默认的创建一个组,这个组和用户名一 样
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell,默认/bin/bash

useradd命令在后台到底做了哪些工作
linux用户和组账户
改文件/etc/passwd
添加/etc/shadow,/etc/group文件内容
在/home创建目录
将整个文件复制到家目录
还会创建邮箱文件

创建的用户默认没有密码,不能登录,要设置密码**才可以登录
创建用户可以不创建家目录
passwd命令:管理密码
格式:passwd [选项]… 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录,空密码,如图:

linux用户和组账户
-l:锁定用户帐号,锁定的有!!
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号,没有!了
–stdin:接收标准输入作为密码,实现非交互,一般设密码要输入两次例如
linux用户和组账户

Cat /etc/shadow如图:
linux用户和组账户

字段二有!的说明锁定了,禁用的,

root用户可以修改所有用户密码,不要求复杂性
普通用户只能改自己的密码,要求复杂性(长度,大小写混合等要求)

普通用户要先输入正确的旧密码,才能修改新的密码,且新密码符合复杂度要求
管理员不用输入旧密码
!!禁用的
锁定!!有了,解锁没有!!了

!!没密码,不能登录

userdel命令
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录(家目录)一并删除
一般不删除家目录,防止重要文件被删除
linux用户和组账户
修改用户参数
usermod命令:修改用户账号
格式:usermod [选项]… 用户名
常用命令选项
-l(小写):更改用户帐号的登录名称,例如: usermod -l u1oo u1将u1改为u100
-L:锁定用户账户!锁定原理是破坏字段二(结果去/etc/shadow看),!的数量和位置都无 关,加了!就破坏了密文就可以了
-U:解锁用户账户(结果去/etc/shadow看)
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s如下:
-u:指定 UID 标记号,不指定当前最大加一
-d:指定宿主目录,缺省为 /home/用户名,指定的目录是不存在的,自动创建
-e:指定帐号失效时间
-g:指定用户的基本组名(或GID号),默认的创建一个组,这个组和用户名一样
-G:指定用户的附加组名(或GID号)
-s:指定用户的登录Shell,默认/bin/bash

修改用户密码相关参数
chage命令
格式:chage [选项]… 用户名
功能:查看用户的密码信息
常用命令选项
-l:列出密码时效的具体信息,从1970 j 1开始计算的
-d:设置密码什么时候改过,,如果改为0,用户就会在下一次登录时被强制改密码,新员 工必须改密码就可以这样设置,例如:先创建一个用户useradd u2,在改密码 为123456 passwd u2,设置为0,chage -d 0 u2 ,然后在另一个会话登录u2 ,如图:
linux用户和组账户
linux用户和组账户

groupadd命令
格式:groupadd [-g GID] 组帐号名
功能:创建组
linux用户和组账户
一般的顺序是,先创建组再创建用户,创建用户时一般要指定组

groupdel命令:删除组
格式:groupdel 组帐号名
linux用户和组账户
groupmod命令
用途:设置组名和组id
格式:groupmod [选项]… 组帐号名
常用命令选项
-n:修改组名
-g:修改组id

gpasswd命令
用途:设置组帐号密码(极少用)、添加/删除组成员
格式:gpasswd [选项]… 组帐号名
常用命令选项
-a:向组内添加一个用户
-d:从组内删除一个用户成员,让用户不属于这个组
-M:定义组成员列表,以逗号分隔,相当于重置
linux用户和组账户
linux用户和组账户

查询
id命令

用途:查询用户身份标识
格式:id [用户名]//看用户是否存在
linux用户和组账户

chfn命令
用途:修改用户的备注信息,/etc/passwd第5字段
who、w、users命令
用途:查询已登录到主机的用户信息,在线的
linux用户和组账户
groups命令
用途:查询用户所属的组