用户管理
用户和组账号的概述
概念
用户
包含一个名和密码,人在计算机中的体现方式,包含root、普通用户、程序用户
组
用户的集合,批量管理用户群权限,包含基本组、附加组(一个用户只能属于一个基本组,但是可以属于多个附加组)
权限
限制用户访问资源(文件、app、进程、硬件等)
UID:每个用户账号都有一个数字标识(身份证),root(0)、普通用户(500-60000)、程序用户(1-499)
GID:每个组账号的唯一身份标识root(0)、普通组账号(500-60000)、程序组账号(1-499)
用户和组的文件
账号文件
/etc/passwd
例如:mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
用户名:密码占位符:UID:GID:全名:家目录:登陆shell解释器
密码占位符:可能是以
密文的字符串代表
或者X
密码占位符Uid: 用户id
gid:一个用户可以属于一个基本组和多个附加组,此处gid代表基本组id
登陆shell解释器:用户默认的的解释器,
默认情况用户使用
/bin/bash
作为shell则可以登录系统,
若修改为/sbin/nologin
(禁止登陆),一般程序用户不让登录
密码文件
/etc/shadow
root:$6yAplCGeqW9eS9uONTOVrvs/GClCohFbWO6DEl.SuCR4F502CdR.XSgd1:17827:0:99999:7:::
用户名:MD5加密的密码字串信息:上次修改密码到现在的时间:密码最短有效天数:密码最长有效天数:提前几天警告用户密码将要过期:在密码过期多少天后禁用账户:账号失效时间(默认为空,表示永久)保留字段
密码最短有效天数:0表示不限制,如果设置为5那么只有过了5天才能更改
密码最长有效天数:表示过了99999天之后必须改密码
提前几天警告用户密码将要过期: 过了99999-7天就要开始警告
密码字串信息:
!!
表示未初始化密码,新建用户的默认状态
密码字符串:修改密码后的状态``!!
+加密字符
或*
+加密字符串表示密码被锁定,不能登陆空:登陆不需要密码,只能本地登录(无需密码)
组账号文件
当创建一个用户的同时,会生成其用户名相同的组(基本组)
/etc/group
mysql:x:27:zzy
组名:密码占位符:GID:成员列表
组密码文件,很少使用
/etc/gshadow
postdrop:!::
用户及组账号的管理
用户的管理
默认创建用户文件目录在/home/用户名下
增
useradd [选项] 用户名
useradd -d /ls/ -s /sbin/nologin -g 500 -u 888 ls
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
删
userdel -r 用户名
删除用户的同时也将家目录一并删除
改
usermod 选项 用户名
修改根目录usermod -d /abc zs
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
为用户设置密码
passwd 用户名
passwd 选项 用户名
选项:
-d 清空用户的密码(不用密码登录)
-l 锁定用户
-u 解锁用户
-S 查看用户锁定状态
更改用户的shell解释器:chsh -s 解释器目录 用户名
查
查看账号信息
grep 用户名 /etc/passwd
显示用户UID和所属组
id 用户名
w
查看当前主机的登陆情况
组的管理
增
groupadd 组名
选项-g可指定GID
删
groupdel 组名
改
gpasswd 选项 用户名 组名
选项:
-a 将单个用户添加到某个组
-M 将多个用户添加到某个组,用户之间用,
隔开
-d 将某个用户在某个组中删除
查
查看用户属于哪个组
groups 用户名
查看组信息
grep 组名 /etc/group
管理目录及文件的属性
ls -ld 目录或文件位置
drwxr-xr-x. 4 root root 4096 6月 12 16:32 .
文件类型、权限、inode数量、属主、属组、大小、日期、文件名
第一个字符:文件类型,d目录、b块设备文件、c字符设备文件、l链接文件、-普通文件
第2-4个字符:属主对文件的权限
第5-7个字符:属组对文件的权限
第8-10个字符:任何用户对文件的权限访问权限:读取(r)、写入(w)、执行(x)
属主:拥有该文件的用户
属组:拥有该文件的组账号
权限的表示
r:读取,查看内容,也可以用4表示
w:写入,写入(删除、更改、移动等)内容,也可用2表示
x:执行,执行此文件或cd到此目录,也可用1表示
设置文件或目录的权限
语法:chmod [ugoa][+-=] [rwx] 文件或目录
r=4,w=2,x=1
举例:chmod g-x, o-r 文件或目录
选项:-R 表示递归权限,目录下的子目录子文件继承父级目录的权限
语法:chmod 775 文件或目录
设置目录或文件的归属
选项-R 递归可将其子目录子文件继承父级目录的归属
设置其属主
chown 属主 文件或目录
设置其属组
chown :属组 文件或目录
设置其属主和属组
chown 属主:属组 文件或目录
umask文件反权限
umask查看系统的默认权限反掩码值,文件最大权限为666,目录最大权限为777
umask手动更改文件权限的反掩码值,更改后创建文件或目录验证反掩码值
chattr锁定文件
锁定文件,不得移动删除
chattr +i 文件路径
解锁文件
chattr -i 文件路径
案例
添加用户及分组
sudo useradd zzy -m -U
设备用户密码
sudo passwd zzy
给用户添加sudo权限
获取sudo分组组号 (默认为27)
cat /etc/group | grep sudo
赋予用户sudo分组
sudo usermod -G 27 zzy
修改默认shell
sudo chsh zzy -s /bin/bash
tail /etc/passwd 查看账号文件
tail /etc/shadow 查看密码文件
useradd -d /tmp/u01 u01 新建用户u01并指定家目录为/tmp/u01,指定基本组为u01
tail /etc/passwd 验证创建的用户u01
tail /etc/shadow 验证创建的用户u01
passwd u01 为u01设置密码
123123
123123
passwd -S u01 查看用户状态
usermod -L u01 锁定用户u01
passwd -S u01 查看用户状态
passwd -u u01 解锁用户u01
passwd -S u01 查看用户状态
chsh -s /sbin/nologin u01 更改u01的登陆shell为/sbin/nologin
su - u01 登陆u01,发现不能登陆
chsh -s /bin/bash u01 更改u01的登陆shell为/bin/bash
su - u01 成功登陆u01
exit 退出会话
userdel -r u01 删除u01用户
tail /etc/passwd 验证无u01用户
tail /etc/group 查看组账号文件
groupadd -g 666 g01 创建GID为666的组g01
tail -1 /etc/group 验证创建的组g01
useradd u01 创建三个用户
useradd u02
useradd u03
gpasswd -M u02,u03 g01 将u02,u03添加到g01
gpasswd -a u01 g01 将u01添加到g01
groups u01 查看u01用户属于哪个组
grep g01 /etc/group 查看g01组都包含哪些用户
gpasswd -d u03 g01 将u03用户在g01组中删除
grep g01 /etc/group 验证g01组内成员
cd /tmp 将工作目录切换到/tmp
rm -rf ./* 删除当前目录下的所有文件
mkdir benet 创建目录benet
touch ./benet/1.file 创建benet目录下的文件1.file
ls -ld benet 查看benet目录的默认权限和归属
chmod g-x benet 将benet目录的属组去掉执行权限
ls -ld benet 验证benet目录的权限是否去除属组的执行权限
chmod 744 benet 将benet目录的权限设置为rwxr--r--
ls -ld benet 验证benet目录的权限是否同上
chmod a-r benet 将benet目录的所有人都去掉q读取权限
ls -ld benet 验证benet目录是否还有读取权限
chmod 755 benet -R 设置benet目录权限为rwxr-xr-x,并递归到其子文件子目录
ls -ld benet/1.file 验证benet目录下的子文件的权限是否同上
chown u01 benet/1.file 设置1.file文件的属主为u01
ls -ld benet/1.file 验证1.file文件的属主是否更改为u01
chown u02:g01 benet/1.file 同时设置1.file文件的属主为u02,属组为g01
ls -ld benet/1.file 验证1.file的归属