用户
用户账号
超级用户:管理员 root 默认对本机拥有最高权限的账户。在系统中是唯一的。
普通用户:一般都是由管理员创建的,拥有的权限是受限制的。一般只在自己的家目录当中拥有完整的权限。可以正常登录系统
程序用户:在安装软件时,有的应用程序需要创建一些账号来保证程序的正常运行,就会创建一个程序账号,程序账号是一些特定的低权限账户,而且这些账户是不能登录系统的。作用:保证程序正常运行。
UID:用户的标识号,创建用户的时候可以指定,也可以系统自动分配。但是唯一,不能重复。
GID:组的标识号,创建用户的时候可以指定,也可以自动分配,但是唯一,不能重复。
根据UID来区分:
管理员的UID:0
普通用户的UID:1000起
程序用户的UID:1-999
判断一个用户是否是管理员,以UID为标准,UID=0就是管理员
/etc/passwd,每行的含义是什么?
root:x:0:0:root:/root:/bin/bash 超级用户
root:表示用户账号的名称
x:表示用户密码的占位符,无实意
0:表示用户的uid号
0:表示用户的gid号
root:表示用户的全名,一般都是用户账号的名称一致
/root:表示用户的家目录所在位置
/bin/bash:表示用户登录的shell,shell默认的解释器就是bash,/bin/bash才可以登录系统。/sbin/nologin、/bin/false不可以登录系统。一般程序用户的shell都是/sbin/nologin、/bin/false
bin:x:1:1:bin:/bin:/sbin/nologin 普通用户
chrony:x:993:988::/var/lib/chrony:/sbin/nologin 程序用户
/etc/passwd 保存的是用户信息
/etc/shadow 保存的是用户密码和账号的有效期
root:$6$I8hgGVEi$n21ZT7VDF5ol5QmzDv9puDmcroot:$6$I8hgGVEi$n21ZT7VDF5ol5QmzDv9puDmcj.eF2gwV4oerEy1KKdHD/:19864:0:99999:7:::
字段1表示用户的账号名称
字段2表示用户的密码,MDS加密的方式。*表示不能登录系统,!!表示密码为空,但不是真空,什么都没有才是真的为空。
字段3表示上一次修改密码的时间。例如19864,表示从1970-1-1到2024-5-21过了19864天。
字段4表示密码的最短有效天数,0表示不限制
字段5表示密码的最长有效天数 99999表示不限制
字段6表示提前多少天告诉用户密码将会过期,默认是7
字段7表示密码过期之后多少天会禁用该用户
字段8表示账号失效了多久,为空表示永不失效
字段9表示保留字段,预留字段,无实意
添加用户,创建用户
useradd
useradd -u 指定uid号,已经被占用的uid号不能被指定。
useradd -d 指定用户的家目录的位置。(一般不动)
useradd -e 指定用户的账号失效时间,格式 yyyy-mm-dd
useradd -M 创建用户时,不建立家目录
useradd -s 创建用户时,指定用户的登录 shell
用户创建密码
passwd
passwd -d 清空指定用户的密码
passwd -l 锁定用户,无法登录
passwd -u 解锁用户
passwd -S 查看用户的状态即用户是否被锁定
修改密码的另一种方式:
echo ld123456 | passwd -- stdin ld
修改账号的属性
usermod
usermod -u 修改用户的uid
usermod -d 修改用户的家目录地址
usermod -e 修改用户的账户失效时间 yyyy-mm-dd
usermod -s 修改用户登录的shell
usermod -L锁定用户
usermod -U 解锁用户
锁定用户的两种方式
passwd -l
usermod -L
解锁用户的两种方式
passwd -u
usermod -U
删除用户
userdel 用户名 只删除用户,不删除家目录
userdel -r 用户名 删除用户的同时删除家目录
组账号
/etc/group 组账号信息
/etc/gshadow 保存组账号的额外信息
groupadd 添加组账号
groupdel 删除组账号
gpasswd 添加或删除组成员
gpasswd -a 向组内添加用户
gpasswd -d 从组内删除用户
gpasswd -M 定义组员的列表,每个用户用逗号隔开
配置文件
/etc/profile 全局配置,对所有用户都生效 source /etc/profile 立即生效
~ /.bash_profile 用户登录时会读取的配置,只对自己生效
~/.bashrc 用户的配置文件,只对自己生效,每一次新打开一个shell就会读取这个文件
~/.bash_logout 用户退出当前shell的时候会执行的配置
每次登录都是shell的一个子shell,每个之间互相隔离
读取顺序:/etc/profile—— ~ /.bash_profile —— ~/.bashrc —— ~/.bash_logout
权限管理
查询用户身份标识:id 作用查询 uid gid 所属组 ;查询已经登录到主机的用户信息
W who users
赋权命令:chmod
递归赋权:chmod -R 只有一层目录。目录当中的所有都会生效,级联目录只有最后一个生效。
umask 作用用来设定文件和目录的默认权限
文件的默认权限是666
目录的默认权限是777
创建文件,默认就是不给你执行权限
创建目录,一定要有执行权限,没有执行权限,你不能cd进入这个目录(目录一定有执行权限)
面试题:我要修改一个文件的默认权限,怎么办?
改umask,如果是文件,怎么改umask都没有执行权限
修改所有者和所在组:chown
前提是用户和组都要存在,要先创建好
chown id :id 或者 chown id.id 所有者和所在组一起变
chown id 文件名/目录名 只修改所有者
chown .id 文件名/目录名 只修改所在组
chown :id 文件名/目录名 只修改所在组
递归 chown -R