Linux(用户管用户与用户组管理理)
用户与用户组管理
用户和用户组管理就是添加用户和用户组,针对每个用户设置不同的密码。并对不同的用户分配不同的权限,不同的权限可以限制用户所访问到的系统资源,提高系统的安全性,帮助系统管理员对所使用系统的用户进行追踪。
多用户多任务
Linux 系统是一个多用户多任务的操作系统,所谓多用户多任务,是指支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。
用户
任何一个运维人员想要登录服务器,都必须先申请一个账号,然后对这个账号的身份进入系统,就像我们前面说的wangzhan这个账号。
每个账号都拥有一个唯一的用户名和各自的密码,用户在登录时输入正确的用户名和密码后,就能够进入系统,默认会进入到这个用户自己的主目录。
用户在系统中是分角色的,在Linux当中,由于角色的不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过uid和GID识别的
特别是UID,在运维工作中,一个UID是唯一标识一个系统用户的账号
Linux系统的用户账户:
超级用户root(0)
程序用户(1~499)
普通用户(500~65535)
超级用户:
默认是root用户,其UID和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。
普通用户:
这类用户一般是由具备系统管理员root的权限的运维人员添加的
程序用户:
与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。
用户组
因为我们有时候需要让多个用户具有相同的权限,一般授权很难实现,所以就要使用用户组了,只需要把授权的用户都加入到同一个用户组里,然后通过修改该文件或目录的对应的用户组的权限,让用户组具有符合需求的操作权限,这样用户组下的所有用户对该文件或目录就会具有相同的权限,这就是用户组的用途。
将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。
用户和用户组
A 一个用户可以属于一个用户组,具有此用户组的权限
HR组可以访问/hrfile的文件夹,当user01属于HR组,那么user01就可以访问/hrfile这个文件夹
B 一个用户可以属于多个用户组,此时具有多个组的共同权限
HR可以访问/hrfile的文件夹,运维可以访问/yunweifile的文件夹,当user01同时属于HR组和运维组,那么user01可以访问 /hrfile和/yunweifile
C 多个用户可以属于一个用户组,多个用户都具有此用户组的权限。
属组: 只能有一个
附加组: 可以有多个
创建用户的时候如果没有任何指定,uid是自增的,gid也只自增的,默认的组和用户的名称一致
主组:指用户创建时默认所属的组,==每个用户的主组只能有一个==。创建用户时会同时创建一个和用户名相同的组
例如:添加用户xiaoming,在建立用户 xiaoming 的同时,就会建立 xiaoming 组作为 xiaoming 用户的初始组。
附加组:每个用户只能有一个主组,除主组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。
用户组管理命令
groupadd:创建用户组
语法:
groupadd [选项] 组名
常用选项:
-g GID:指定组ID(默认自动生成)
-r选项: 表示创建系统组,系统会自动分配一个 系统级 GID(通常在
1-999
或1-499
,具体范围取决于发行版)。
groupmod
:修改用户组
语法:
groupmod [选项] 组名
常用选项:
-g 新GID:修改组ID。
-n 新组名:修改组名称。
groupdel
:删除用户组
语法:
groupdel 组名
用户管理
useradd
:创建用户
语法:
useradd [选项] 用户名
常用选项:
-g GID
:指定主组。
-G GID1,GID2
:指定附属组。
-s Shell路径
:指定登录Shell。
-d 家目录
:自定义家目录。
-u UID
:指定用户ID。
-c "注释"
:添加描述。
id
:查看用户信息
语法:
id [用户名]
用户修改命令 usermod
语法:
usermod [选项] 用户名
密码管理命令 passwd
语法:
passwd [用户名]
用户切换命令 su
语法:
su [-] 用户名
用户删除命令 userdel
语法:
userdel [-r] 用户名
相关文件
/etc/passwd 存放用户的账号等相关信息(密码除外)
/etc/shadow 保存用户的密码
/etc/group:组及其属性信息
/etc/gshadow:组密码及其相关属性
/etc/passwd
/etc/passwd文件中每行定义一个用户账号,有多少行就表示多少个账号,在一行中可以清晰的看出,各内容之间又通过”:”号划分了7个字段。
字段1:帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名
字段2:密码占位符x;早期的unix系统中,该字段是存放账户和密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。
字段3:UID;范围是0-65535
字段4:GID;范围是0-65535;当添加用户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。
字段5:用户说明;这个字段是对这个账户的说明
字段6:宿主目录;用户登陆后首先进入的目录,一般与"/home/用户名"这样的目录
字段7:登录Shell 当前用户登陆后所使用的shell,在centos/rhel系统中,默认的shell是bash;如果不希望用户登陆系统,可以通过usermod或者手动修改passwd设置,将该字段设置为/sbin/nologin 即可。大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。
/etc/shadow
字段1:帐号名称
字段2:加密的密码(通常使用shad512加密)
字段3:最近更改密码的时间;从1970/1/1到上次修改密码的天数
字段4:禁止修改密码的天数;从1970/1/1开始,多少天之内不能修改密码,默认值为0
字段5:用户必须更改口令的天数;密码的最长有效天数,默认值为99999
字段6:警告更改密码的期限;密码过期之前警告天数,默认值为7;在用户密码过期前多少天提醒用户更改密码
字段7:不活动时间;密码过期之后账户宽限时间 3+5;在用户密码过期之后到禁用账户的天数
字段8:帐号失效时间,默认值为空;从1970/1/1日起,到用户被禁用的天数
字段9:保留字段(未使用),标志
/etc/group
字段1:组账户名称
字段2:密码占位符x;通常不需要设置该密码,由于安全原因,该密码被记在/etc/gshadow中,因此显示为'x'。这类似/etc/shadow。
字段3:组账户GID号,用户组ID
字段4:本组的成员用户列表;加入这个组的所有用户账号
/etc/gshadow
字段1:组账号的名称
字段2:加密后的密码字符串,这个字段可以空的或者!;如果是空的或有!,表示没有密码
字段3:本组的管理员列表;这个字段也可为空;如果有多个用户组管理员,用,号分隔
字段4:本组的成员列表;加入这个组的所有用户账户;列表中多个用户通过","分隔