用户和用户组操作命令
账户
后台系统会将用户名转化为ID号
UID为0,代表超级管理员,也就是通常所说的root账号,
1~499之间的ID号系统会预留下来。
这样我们创建的普通用户ID号会从500算起。
Linux的组有基本组与附加组之分,一个用户只可以加入一个基本组中,但可以同时加入多个附加组。
创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中。
查询用户命令
W
可显示开机多久,当前登录的所有用户,平均负载
Who
显示当前登录的所有用户
Last
显示每个用户最后的登录时间
Lastlog
显示每个用户最后的登录时间
id root
显示账户及组信息。
finger root
查询用户信息,侧重用户家目录、登录 SHELL
sudo pwck
检查/etc/passwd 配置文件内的信息与实际主文件夹是否存在,
还可比较/etc/passwd 和/etc/shadow 的信息是否一致,
另外如果/etc/passwd 中的数据字段错误也会提示。
sudo grpck
和 pwck 功能相近,这是检查用户组的。
Groups
newgrp
useradd -g root -u 500
-c 设置账号描述信息,一般为账号全称。
-d 设置账号家目录,默认为/home/用户名。
-e 设置账户的失效日期,格式为YYYY-MM-DD。
-g 设置账户的基本组。
-G 设置账户的附加组,多个附加组中间用逗号隔开。
-M 不创建账户家目录,一般与-s结合使用。
-s 设置账户的登录Shell,默认为bash。
-u 指定账户UID。
usermod -p 123456 root
- 诱导目标用它来改用户的密码,可以在/etc/shadow 中发现明文口令;
正常修改用户的口令最好用 passwd ;
-d 修改账户家目录。
-e 修改账户失效日期。
-g 修改账户所属基本组。
-G 修改账户所属附加组。
-s 修改账户登录 Shell。
-u 修改账户UID。
usermod 不仅能改用户的 SHELL 类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。
usermod 如此看来就是能做到用户帐号大转移;比如我把用户 A 改为新用户 B
- 使用usermod进行用户伪装
userdel
-r 删除账户及相关文件。
groupadd -g
-g 设置组ID号。
passwd -d root
- 当我们清除一个用户的密码时,登录时就无需密码;
passwd 作为普通用户和超级权限用户都可以运行,
但作为普通用户只能更改自己的用户密码,但前提是没有被 root 用户锁定;
如果 root 用户运行 passwd ,可以设置或修改任何用户的密码;
-l 锁定账户,仅root可使用此选项。
--stdin 从文件或管道读取密码。
-u 解锁账户。
-d 快速清空账户密码,仅root可使用此选项。
/etc/passwd 7
root: x: 0: 0: root: /root: /usr/bin/zsh
账户名称:密码占位符:UID:GID:附加基本信息(一般存储账户名全称、联系方式等信息):家目录位置:登录Shell(/bin/bash为可登录系统Shell,/sbin/nologin表示账户无法登录系统)
密码占位符: x ——》 空
/etc/shadow 9
test:!! 6 6 6tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047 : 7: 90: 7: : :
用户名:加密密码: 最后一次修改时间: 最小修改时间间隔:密码有效期: 警告天数:宽限时间:账号失效时间:保留字段
date -d “1970-01-01 18047 days”
在密码串前加上 “!”、"" 或 “x” 使密码暂时失效。
所有伪用户的密码都是 “!!” 或 "",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”,代表这个用户没有密码,不能登录。
/etc/group 4
scanner: x: 134: saned,kali
组账户名称,密码占位符,GID, 组成员信息(注意,这里仅显示基本成员,附加成员不显示)。
/etc/gshadow 4
kaboxer: !: : kali,root
组账号名称,组密码(一般为组管理员密码), 组管理员, 组成员(与/etc/group第四列相同)。
通过 gpasswd组名 的方式可以为组设置密码,
通过 gpasswd -A 账户名称组账户名称 可以为组添加管理员。
login.defs
Linux 用户密码的有效期,是否可以修改密码可以通过 login.defs 文件控制.
对 login.defs 文件修只影响后续建立的用户,
如果要改变以前建立的用户的有效期等可以使用 chage 命令.
ACL
ACL 是 Access Control List 的缩写,
主要用于在提供传统的 owner、group、others 的 read、write、execute权限之外进行细部权限设置。
getfacl filename
1:#file: somedir/
2:#owner: lisa
3:# group: staff
4 :#flags : -s-
5:user : :rwx
6 : user:joe : rwx #effective : r-x
7:group: : rwx #effective : r-x
8: group : cool:r-x
9:mask : : r-x #mask一行即为最大有效访问权限,作用是控制文件的访问权限,其他用户或组设定ACL实际权限都是与mask最大有效权限相与的结果
10: other: :r-x
第一行为文件或目录名称,
第二行为文档所有者,
第三行为文档所属组,
第四行为suid、sgid、sticky权限的标记位,
第五行为文档所有者权限,
第七行为文档所属组权限,
第十行为其他账户权限,
第五、七、十行为系统基本权限,
第六行为通过ACL指令添加的对账户的访问控制权限,
第八行为通过ACL指令添加的对组账户的访问控制权限,
第九行为权限掩码行。
setfacl
-b #删除所有附加的ACL条目
-k #删除默认的ACL
-m #添加ACL条目
-x #删除指定的ACL条目
-R #递归处理所有的子文件与子目录