Linux的账号与群组
Linux系统中,关于账号和群组,实际记录的是UID和GID的数字;
关于账号有两个非常重要的文件:/etc/passwd 和 /etc/shadow ;
/etc/passwd 文件结构:
账号名称:密码:UID:GID:用户信息说明栏:家目录:shell环境
每一行代表一个账号,有几行就有几个账号;
bin,daemon,adm,nobody等是系统账号;
UID范围设定:0=系统管理员,1~200=系统进程使用 ,201~999=系统用户用来运行服务,不需要登录系统 ,1000+ = 一般用户;
密码为x,真正的密码存放于/etc/shadow;
/etc/nologin可使账号无法登录;
/etc/shadow 文件结构:
账号名称:密码:密码最近变动日期:密码变动最小间隔天数:密码在此天数内需要变动:密码过期前提前警告的天数:密码过期后账号宽限时间:账号失效日期:保留
/etc/group 文件结构:
组名:群组密码:GID:此群组支持的账号名称
群组密码为x,真正密码存放于 /etc/gshadow;
关于群组:有效群组、初始群组
初始群组
/etc/passwd 第四个字段GID即初始群组,当此用户登入系统,就立刻拥有此群组相关权限;
有效群组
groups 查看当前用户的有效与支持群组;
[root@wenzi ~]#useradd zhangsan
[root@wenzi ~]#useradd lisi -G zhangsan
#切换为用户lisi
[lisi@wenzi ~]$groups
lisi zhangsan
第一个群组 lisi 即为有效群组;zhangsan为支持的群组
newgrp 有效群组的切换,如需退出切换后的有效群组,exit
[lisi@web1 ~]$groups
lisi zhangsan
[lisi@web1 ~]$newgrp zhangsan
[lisi@web1 ~]$id
uid=1001(lisi) gid=1000(zhangsan) groups=1000(zhangsan),1001(lisi)
[lisi@web1 ~]$groups
zhangsan lisi
[lisi@web1 ~]$exit
exit
/etc/gshadow 文件结构:
组名:密码:群组管理员账号:加入该群组支持的所属账号
账号管理
useradd:新增账号
useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 新账号名
使用默认值建立一个普通用户 xiaoming
系统会按照默认值自动处理一些操作:
- 在 /etc/passwd 里面建立一行与账号相关的数据,包括建立UID/GID/家目录;
- 在 /etc/shadow 里面将此账号的密码相关参数填入,但尚未有密码;
- 在 /etc/group 里面加入一个与账号名称一致的组名;
- 在 /home 下建立一个与账号名称同名的目录作为用户家目录,且权限为700;
useradd 默认属性见 /etc/default/useradd
centos中预设的群组为和账号同名的群组,并非100;
UID/GID、密码参数等默认属性见 /etc/login.defs
综述,当useradd在建立账号时,至少会参考 /etc/default/useradd 、/etc/login.defs 、/etc/skel*;
passwd:设定密码
修改普通用户密码:passwd 用户名 或 echo "密码" | passwd --stdin 用户名
修改自己密码:passwd
密码规则:
- 密码不能与账号相同
- 密码尽量不要选系统关键词
- 密码超过8个字符
- 密码不要使用个人信息,比如手机号、身份证号等
- 密码不要用简单关系式,比如1+1=2
- 密码尽量大小写、数字、特殊符号组合
chage:密码参数详细显示
建立一个名为agetest的账号,该账号第一次登录系统使用默认密码,但必须要更改密码后用新密码才能登录系统使用bash终端
usermod:修改账号信息
-U:将/etc/shadow中密码栏的叹号!取消,解冻
userdel:删除用户数据
用户数据有:
账号/密码相关:/etc/passwd、/etc/shadow
用户群组相关:/etc/group、/etc/gshadow
用户个人文件数据:/home/账号名、/var/spool/mail/用户名
若想完全删除用户数据,可先用 find / -user 用户名 来查询系统内属于该用户的文件,再加以删除。
id:查询某用户的UID/GID
查询自己UID/GID相关信息:id
某用户UDI/GID相关信息:id 【用户名
groupadd:新增群组
groupmod:修改群组
groupmod 【-g 新GID】 【-n 新组名】 群组名
-g:修改已有的GID数字
-n:修改已有组名
groupdel:删除群组
groupdel 【群组名】
gpasswd:群组管理员
让一个群组有一个管理员,可以管理哪些账号加入、移除群组。
gpasswd 组名
没有任何参数时,表示给予该组一个密码(/etc/gshadow)
gpasswd 【-A 用户名1,…】 【-M 用户2,…】 组名
-A:将该组的控制权交给用户1,即用户1为该群组群管理员;用户1可以不是该组成员。
-M:将用户2加入该群组
gpasswd 【-rR】 组名
-r:将该群组密码移除
-R:将该群组密码栏失效
gpasswd 【-ad】 用户1 群名
-a:将用户1加入该群
-d:将用户1移除该群
案例:
完成以下任务
ACL
ACL在传统 ower / group / other 的权限 r / w / x 之外提供为单一使用者,单一文件或目录来进行 r / w / x 的权限规范。
getfacl:取得某个文件或目录的ACL设定项目 getfacl 目标文件名
setfacl:设定某个文件或目录的ACL规范 setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名
针对特定使用者:
设定规范:setfacl -m u:用户列表:权限 文件或目录
针对特定群组:
设定规范:setfacl -m g:群组列表:权限 文件或目录
针对有效权限:
使用者、群组设定的权限必须要在mask的权限设定范围内才会生效,超出的权限不生效
设定规范:setfacl -m m:权限 文件或目录
使用默认权限设定目录内的文件继承ACL权限:
设定规范:setfacl -m d:[ u / g ]:[用户/群组]:权限 文件或目录
设定一个有用户 / 群组没有任何权限的ACL语法中,权限字段不可留白,应用一个减号[-]。