目录
本章重点
用户:
useradd添加用户
passwd修改密码
usermod修改用户属性
权限
chmod
chown
用户账号和组账号
概述:Linux基于用户权限对资源访问进控制
-
用户账号及UID范围
Linux用户通过UID识别新建普通用户,分配权限
-
超级用户(全部权限,root):0
-
普通用户(受限权限,在个人家目录中拥有完整权限)
-
centos6:500-60000(范围可调整)
-
centos7:1000-60000
-
-
程序用户(系统自带,第三方软件安装时会创建,不可登录,程序使用)
-
centos6:1-499
-
centos7:1-999
-
-
-
组账号
-
基本组(私有,有且唯一)
-
附加组(共有,可有可无,可有多个)
-
-
UID/GID
-
UID(User IDentity,用户标识号)
-
可使用重复UID创建用户,相当于硬链接,属于同一用户不同名称
-
-
GID(Group IDentity,组)
-
useradd
实际操作:往/etc/passwd中添加了一条用户信息
-
/etc/passwd 用于保存用户名称、用户目录、登录shell等基本信息
-
登录用户名(login name):wang
-
密码(passwd):x
-
用户身份编号(UID):1000
-
登录所在组(GID):1000
-
用户全名或备注(GECOS):wang
-
用户主目录(home directory):/home/wang
-
默认使用shell(shell):/bin/bash
-
/sbin/nologin:表示禁止登录
-
-
-
cat /etc/passwd |tail -n1 查看最后一行记录(最新创建的用户)
-
/etc/shadow 保存密码文件
-
tail -n1 /etc/shadow
-
通常nginx用户才能登录nginx软件,root用户权限过高,缺少安全性
语法:
useradd [选项] 用户名
作用:
-
新建用户(同时生成组信息)
-
修改新建用户的属性
[选项]:
-
-M:不添加家目录
-
-u:指定UID,范围1000-60000
-
-s:修改默认shall类型,指定目录默认/bin/bash,可修改为/sbin/nologin(禁止登录,nologin:程序用户)
-
-d:指定用户的宿主目录位置(与-M一起使用不生效)
-
-e:指定用户的账户失效时间(格式2023-10-30)
-
-g:指定用户的基本组名(或使用GID号)
-
-G:指定用户的附加组名(或使用GID号)
-
-r:创建系统用户,随机(centos6:id<500;centos7:id<1000,系统用户=程序用户)
-
-c:备注信息
补充命令:
-
id 用户名:查看用户id权限(UID、组ID、组)
-
whoami:查看当前登录用户信息
usermod
语法:
usermod [选项] 用户(更改已有用户属性)
-
-l(小L):修改用户名
-
-U:解锁用户账号
-
-L:锁定用户账号
userdel
语法:
userdel -r 用户(删除用户,-r 连同删除用户家目录)
passwd
语法:
passwd [选项] 用户名(修改用户密码)
[选项]:
-
不添加任何字符:更改当前用户密码
-
-d:清空指定用户密码(生产环境中不建议使用)
-
-l:锁定用户账号
-
-S:查看被锁定用户
-
-u:解锁用户账号
扩展:echo 123123 | passwd root --stdin(直接更改密码,不提示更改命令)
-
--stdin:标准输入
chage
语法:
chage [选项] 用户名
[选项]:
-
-d:--lastday 最近日期
-
-E:--expiredate 过期日期
-
-h:--help
-
-I(大i):--inactive INACITVE
-
-l(小L):--list
-
-m:--mindays 最小天数
-
-M:--maxdays 最人天数
-
-R:--root CHROOT_DIR
-
-W:--warndays 警告天数
用户初始配置文件
文件位置:
-
新建用户,从/etc/skel 中复制而来
-
查看:cat /etc/default/Useradd
主要的用户初始配置文件
-
~/.bash_profile(开机时)
-
~/.bashrc(开机时)
-
~/.bash_logout(关机时)
groupadd
语法:
groupadd [选项] 用户 组(给用户添加组)
[选项]:
-
-a:将用户加入组
-
-d:将用户删除出组
-
-M:批量加减
gpasswd
给组添加密码(基本不用)
groupdel
groupdel -r 用户 组(删除用户组)
扩展:
-
finger 用户:查询用户账号的详细信息
-
w [选项] 用户:查询已登录到主机的用户信息
-
whoami:查看当前登录用户信息
-
users:查询所有用户
文件及目录权限
三种权限:
-
r 读:可查看文件内容,显示目录列表
-
w 写:可修改内容,在目录中移动、复制、增减、删除其中文件内容
-
x 执行:可运行程序(对文件),切换目录(对目录),一般对程序运用(绿色)
文件权限,需要区分三类:
-
属主:文件拥有者
-
属组:文件的拥有组
-
其他人:other
例:
-
rwx:属主
-
r-x:属组
-
r-x:其他人
-
-:没有权限
有权限为1,没有为0
r | 0 | 0 | 1 | 001=1 |
---|---|---|---|---|
w | 0 | 1 | 0 | 010=2 |
x | 1 | 0 | 0 | 100=4 |
只运行 | 只写 | 只读 | 范围:0-7 |
补充:
对文件夹而言,必须拥有执行权限x,否则拥有其他权限也无法操作
x为目录的最小权限
一个普通文件被删除,与文件本身无关,与文件所在文件夹有关
chmod
语法:
-
chmod [ugoa] [+ - =] [rwx] 文件或目录(修改文件权限)
-
ugoa:属主、属组、其他用户、所有用户(不建议使用)
-
+-=:增加、去除、设置权限(不建议使用,必须同时使用[ugoa])
-
rwx:读、写、运行权限
-
-
chmod [选项] nnn(三位八进制数) 文件或目录
[选项]:
-
-R:递归修改指定目录下所有子目录
-
例:chmod 777 test
chown
chown 属主.属组 文件名:改变文件的属主
-
-R:递归修改指定目录下所有子目录的属主或属组
-
chown wang test:只改变属主
-
chown .root test:只改变属组
-
例:
补充:
-
面试题:
执行 cp /etc/issue /data/dir/所需要的最小权限?
cp——x
etc——x
issue——r
data——x
dir——wx
umask
umask 将值保留在创建文件权限,决定了文件落地的权限
默认值:
-
文件的默认权限为644——666-umask(022),其最大权限为666(不可执行,权限只能为偶数,若所得结果为奇数,则将奇数+1)
-
文件夹默认权限为755——777-umask(022)
-
非特权用户的umask默认为002
-
root的umask默认为022
-
例:
三种特殊权限
[ugoa]:
-
u:属主
-
g:属组
-
o:其他用户
-
a:所有用户
suid 属主
作用:
让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置在属主位置上。
SGID 属组
作用:
sgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组。
Sticky位 粘贴位
文件夹有效,文件无效
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
访问acl控制列表
ACL:Access Control List,实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加