Linux的账号与群组
使用者标识符:UID 与 GID
每一个文件都具有『拥有人与拥有群组』的属性,每个登陆的使用者至少都会取得两个ID ,一个是使用者 ID (User ID ,简称 UID)、一个是群组 ID (Group ID ,简称 GID)。
为什么会有UID和GID?
我们登陆 Linux 主机的时候,输入的是我们的账号,但是其实Linux 主机并不会直接认识你的『账号名称』的,他仅认识ID(ID 就是一组号码啦)。计算机仅认识 0 与1.
当我们有要显示文件属性的需求时,系统会依据 /etc/passwd 与 /etc/group 的内容, 找到UID / GID对应的账号与组名再显示出来
Linux 系统上面的用户如果需要登陆主机以取得 shell 的环境来工作时, 系统都做了什么工作?
1、先找寻 /etc/passwd 里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的UID与GID(在 /etc/group 中) 读出来,另外,该账号的家目录与 shell 配置也一并读出;
2、再来则是核对口令表!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与UID,然后核对一下你刚刚输入的口令与里头的口令是否相符?
3、如果一切都OK的话,就进入Shell控管的阶段!
/etc/passwd 文件结构
每一行都代表一个账号,有几行就代表有几个账号在你的系统中!
账号名称:口令:UID:GID:用户信息说明栏:家目录:shell
/etc/shadow 文件结构
账号名称:口令:最近更改口令的日期:口令不可被变动的天数:口令需要重新变更的天数:口令需要变更期限前的警告天数:口令过期后的账号宽限时间(口令失效日) :账号失效日期
/etc/group 文件结构
组名:群组口令:GID:此群组支持的账号名称
账号管理
新增与移除使用者: useradd
passwd 为用户配置口令
--stdin 用法
echo '111111' | passwd --stdio zhangsan
为张三用户修改密码为111111,--stdin 用来接收管道传来的数据
usermod
userdel 删除用户
userdel [-r] username
-r 连同用户家目录一起删除
id 命令
id 这个命令则可以查询某人或自己的相关 UID/GID 等等的信息,使用 id 就 全部都列出
id username
groupadd 添加群组
groupdel 删除 群组
groupdel groupname
ACL权限管理
ACL简述
ACL 是Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限配置。ACL 可以针对单一使用者,单一文件或目录来进行r,w,x 的权限规范,对于需要 特殊权限的使用状况非常有帮助。
使用者 (user):可以针对使用者来配置权限;
群组 (group):针对群组为对象来配置其权限;
默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范 新数据的默认权限;
ACL的使用
setfacl:配置某个目录/文件的ACL 规范
针对特定使用者的方式
配置规范:『 u:[使用者账号列表]:[rwx] 』
例如针对 user1 的权限规范 rx: setfacl -m u:user1:rx acl_test
若无使用者则默认为文件所有者
针对特定群组的方式
配置规范:『 g:[群组列表]:[rwx] 』
例如针对 mygroup1 的权限规范 rx:setfacl -m g:mygroup1:rx acl_test1
针对有效权限 mask 的配置方式
配置规范:『 m:[rwx] 』
例如针对刚刚的文件规范为仅有 r: setfacl -m m:r acl_test1
getfacl:取得某个文件/目录的ACL 配置项目
getfacl acl_test