用户账户的权限管理
用户账号:
1、超级用户 :管理员账号 root 默认对本机拥有最高权限的账户,在系统中唯一。
2、普通用户:一般由管理员创建,拥有的权限是受限制的,一般只在自己的家目录中拥有完整的权限。
3、程序用户:普通用户的特殊形式。在安装软件时,部分应用程序需要创建一些账号,来保证程序的正常运行。就会创建一个程序账户(低权限账户)。
程序账户不能登录系统 作用:保证程序正常运行。
UID :用户的标识号,创建用户时候可以指定,可以用系统分配。唯一的,不能重复。
GID :组标识,创建用户的时候可以指定,也可以自动分配,也是唯一的,不能重复。
不同用户通过UID区分:
管理员用户UID:0
普通用户:1000
程序用户:1-999
判定一个用户是否为管理员,以uid为标准,uid=0的是管理员
fu:x:1000:1000:fu:/home/fu:/bin/bash
字段1:用户账号的名称
字段2:用户密码的占位符。无实意
字段3:用户的uid
字段4:用户的gid号
字段5:用户全名,一般和字段1一致
字段6:用户的家目录所在的位置
字段7:用户登录的shell,shell默认的解释器是bash,只有是/bin/bash才可以登录系统。
/sbin/nologin /bin/false,表示不可以登录系统。
一般程序用户的 shell 是/sbin/nologin/bin/false。
/etc/passwd 保存的是用户的信息
/etc/shadow 保存的是用户的密码和账户有效期(加密保存)
root: 6 6 6SuJ/b/.LajcTU7.1SVkuaSgemZKK2RGRB0472IYMTUkjFn.i0yoMKba8c.EcRzttYQEjo8G4ilThCTu/WgU3Pv9AMsJ5ewfL/3Wusp/::0:99999:7:::
字段1 :用户的账号名称
字段2 :用户密码 MD5加密方式 * 表示不能登录系统 !! 表示密码为空 不是真空,什么都没有才是空
字段3 : 上次修改密码的时间。时间是从1970-1-1到2024-5-21
字段4 : 密码的最短有效天数,0表示无限制
字段5 : 密码的最长有效天数 99999表示不限制
字段6 : 提前多少天告诉用户,密码将会过期,默认七天
字段7 : 密码过期之后多少天会禁用此用户
字段8 : 账号的失效时间,失效了多久,为空表示永不失效
字段9 : 保留字段,用户自定义,二次开发使用
如何添加用户、创建用户:
useradd
-u 指定 uid号。已被占用的uid不能被指定。
[root@localhost home]# useradd -u 666 qwe
45 qwe:x:666:2001::/home/qwe:/bin/bash #cat /etc/passwd
-d 指定用户家目录位置。(一般不使用)
-e 指定用户的账户失效时间,格式yyyy-mm-dd
-M 创建用户时,不建立家目录
-s 创建用户时指定用户的登录shell
[root@localhost ~]# useradd -u 888 -e 2024-9-9 -s /bin/bash qaz
创建 uid为 888 过期时间为2024年9月9日 shell脚本路径/bin/bash
用户创建密码
passwd 用户名
-d 清空指定用户的密码。(慎用!)
-l 锁定用户,无法登录
[root@localhost ~]# passwd -l qaz
锁定用户 qaz 的密码 。
passwd: 操作成功
-u 解锁用户
[root@localhost ~]# passwd -u qaz
解锁用户 qaz 的密码。
passwd: 操作成功
-S 查看用户状态,用户是否被锁定
[root@localhost ~]# passwd -S qaz
qaz LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
修改密码的另一种方式:echo 要修改的密码 | passwd --stdin 要修改的用户名 (免交互式) 密码可视化
[root@localhost ~]# echo 1234 | passwd --stdin qaz
更改用户 qaz 的密码 。
passwd:所有的身份验证令牌已经成功更新。
修改账号属性
usermod
-u 修改用户的uid号
[root@localhost ~]# usermod -u 665 qaz
-d 修改用户的家目录地址(不用)
-e 修改账号失效时间 YYYY-MM-DD
root@localhost ~]# usermod -e 2024-9-5 qaz
-s 修改用户的登录shell
usermod -s shell路径 用户名
-L 锁定用户
[root@localhost ~]# passwd -S qaz
qaz LK 2024-05-21 0 99999 7 -1 (密码已被锁定。)
-U 解锁用户
[root@localhost ~]# usermod -U qaz
[root@localhost ~]# passwd -S qaz
qaz PS 2024-05-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
删除账户
userdel 用户名 只删除用户不删除家目录
userdel -r 用户名 删除用户同时删除用户家目录
组账号
/etc/group 组账号信息
/etc/gshadow 保存组账号的额外信息
groupadd 添加组账号
groupdel 组名称
添加或者删除组成员 (添加可以一次性多个删除只能一个一个删除)
gpasswd
-a 向组内添加用户 gpasswd -a lzl hpc
-d 从组中删除用户 gpasswd -d hpc lzl
-M 向组中一次多个添加 gpasswd -M hpc,lzl2 lzl
配置文件:
ls -a 查看
[root@localhost ~]# ls -a
. .bash_history .bash_profile .cache .cshrc .esd_auth .lesshst .tcshrc .Xauthority
.. .bash_logout .bashrc .config .dbus .ICEauthority .local .viminfo
/etc/profile 全局配置 (对所有用户生效) source 文件名 (全局生效)/重启
~/.bash_profile 用户登录时会读取的配置,只对自己生效。
~/.bashrc 用户配置文件,只对自己生效,每次新打开一个shell就会读取这个文件
~/.bash_logout 用户退出当前shell的时候会执行的配置文件
每次登录都是shell的一个 子shell 每个之间互相隔离
读取顺序(优先级)
/etc/profile > ~/.bash_profile > ~/.bashrc > ~/.bash_logout
开机读取 登录读取 自定义读取 退出读取
权限管理
查询用户身份标识:
id 用户名 //查询uid gid 所属组
查询已经登录到主机的用户信息:W who users
U:所有者
G:所在租
O:其他用户
A:所有用户 a+x
r 4 读权限 w 2 写权限 x 1执行权限
赋权命令:
chmod 权限 文件名
递归赋权:
chmod -R 目录名
chmod -R 只有一层目录,目录当中的所有都会生效,级联目录只要最后一个会生效。
umask:用来设定文件和目录的默认权限。
文件默认权限:666
目录默认权限:777
创建文件,默认不给执行权限。
创建目录一定要有执行权限,没执行权限就不能切换,不能cd进入目录。
chown : 修改所有者和所有组
前提:用户和租都要存在,要先创建好。
chown 用户名 : 用户名 所有者和所在组一起变(可以不同)===== chown id.id
chown 用户名 文件名/目录名 只修改所有者
chown :用户名 只修改所在组 ========== chown .id
chown -R 目录名 第一层所有的生效,写到最后一层只有最后一层生效
创建用户 useradd
编写shell脚本 login.sh !#/bin/bash
echo " 欢迎你~ "
shell脚本赋权 chmod 777 login.sh
shell脚本更改所有者和所有组 chown nm.nm login.sh
进入用户家目录查看隐藏文件 cd /home/nm
修改隐藏文件中登录读取文件 vim .bash_profile 最后一行加入脚本路径
source 执行 隐藏文件 source .bash_profile
切换用户 su - nm
删除用户 userdel nm