前言
这一部分让我们来了解,Linux中的用户组和权限吧~
VX: wenjinworkon
目录
用户、组
1.1 用户
Linux中每个用户用User Id(UID)来唯一标识
- 超级管理员:root,0
- 普通用户:1-60000自动分配
- 系统用户:1-999 (对守护进程获取资源进行权限分配)
- 登录用户:1000+ (提供普通用户用于交互式登录)
1.2 用户组
Linux中可以将一个或多个用户加入到用户组中,用户组通过Group Id(GID)来唯一标识
- 管理员组:root,0
- 普通组:
- 系统组:1-999 (对守护进程获取资源进行权限分配)
- 普通组:1000+ (提供给用户使用)
1.3 用户与组之间的关系
- 主组:一个用户必须属于一个且只能有一个主组,默认创建用户时会自动创建和用户名同名的组,作为主组,也称为私有组
- 附加组:一个用户可以属于零个或多个附加组,也称为附属组
1.4 用户与组的配置文件
1.4.1 主要配置文件
- /etc/passwd:用户名以及属性信息(用户名,UID,主组ID)
- /etc/shadow:用户密码以及密码相关属性
- /etc/group:组以及组属性信息
- /etc/gshadow:组密码以及组密码相关属性(使用较少)
- /etc/login.defs:有关用户默认属性的文件
1.4.2 passwd文件
[root@vpc1 ~]# tail -1 /etc/passwd
geekgold:x:1000:1000::/home/geekgold:/bin/bash
用户登录名:密码占位符:UID:GID:注释:家目录:默认使用的shell环境
1.4.3 shadow文件
[root@vpc1 ~]# tail -1 /etc/shadow
geekgold:$6$I8vGaEZC$k0lS688jBtYqw6ZuxwhBvKWoLU5JhIS0w2CGxvm7OUVm5eB/pDMelaFWklDTRdX.vpKoCq.Vp2bo2MGIqSphc.:19878:0:99999:7:::
用户名:密码($6代表加密算法,$I8vGaEZC代表使用的salt,$k0lS688jBtYqw6ZuxwhBvKWoLU5JhIS0w2CGxvm7OUVm5eB/pDMelaFWklDTRdX.vpKoCq.Vp2bo2MGIqSphc.代表加密后的密码):上一次密码修改时间值:密码最小使用天数(至少使用多少天才能修改):密码过期时间:密码过期提醒时间:密码过期锁定时间:账号失效时间
1.4.4 group文件
[root@vpc1 ~]# tail -1 /etc/group
geekgold:x:1000:test
组名:组密码占位符:GID:以该组为附加组的用户
1.4.5 gshadow
[root@vpc1 ~]# tail -1 /etc/gshadow
geekgold:!::
组名:组密码:组管理员:以当前组为附加组的用户
1.5 用户与组相关命令
1.5.1 useradd命令
添加用户
useradd [options] LOGIN
选项:
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6之前: ID<500,CentOS7 以后: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
-p 指定加密的密码
1.5.2 usermod命令
用户属性修改
usermod [OPTION] login
选项:
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使
用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限,即宽限期
1.5.3 用户删除
userdel [OPTION]... Login
选项:
-f, --force 强制
-r, --remove 删除用户家目录和邮箱
1.5.4 创建密码
passwd [OPTIONS] UserName
选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码,Ubuntu无此选项
1.5.5 创建组
groupadd [OPTION]... group_name
选项:
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
1.5.6 修改组
groupmod [OPTION]... group
选项:
-n group_name: 新名字
-g GID: 新的GID
1.5.7 删除组
groupdel [options] GROUP
选项:
-f, --force 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
权限
用户访问文件时的权限
- 用户为文件的属主,应用文件的属主权限
- 用户为文件的属组,应用文件的属组权限
- 用户不属于以上两个,应用其他权限
2.1 文件所有者和属组属性操作
2.1.1 chown命令
chown
命令可以修改文件的属主,也可以修改文件属组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
用法:
OWNER #只修改所有者
OWNER:GROUP #同时修改所有者和属组
:GROUP #只修改属组,冒号也可用 . 替换
--reference=RFILE #参考指定的的属性,来修改
-R #递归,此选项慎用,非常危险!
2.1.2 chgrp命令
chgrp
命令可以只修改文件的属组
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 表示递归
2.2 文件权限
2.2.1 权限说明
文件权限针对的对象:
owner 属主, u
group 属组, g
other 其他, o
notice:
用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即生效,不再向右查看其权限
r和w权限对root 用户无效
只要所有者,所属组或other三者之一有x权限,root就可以执行
文件权限:
r Readable 4
w Writable 2
x eXcutable 1
对于文件:
r 可使用文件查看类工具,比如:cat,可以获取其内容
w 可修改其内容,文件的是否被删除和文件的权限无关
x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对于目录:
r 可以使用ls查看此目录中文件名列表,但无法看到文件的属性meta信息,包括inode号,不能查看文件的内容
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l file或stat file 查看此目录中指定文件的元数据,当预先知道文件名称时,也可以查看文件的内容,属于目录的可访问的最小权限
X 分配给目录或有部分x权限的文件的x权限,对无任意x权限的文件则不会分配x权限
数字的表示方法:
2.2.2 修改文件权限chmod
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
#参考RFILE文件的权限,将FILE的修改为同RFILE
chmod [OPTION]... --reference=RFILE FILE...
MODE:who opt permission
who:u,g,o,a
opt:+,-,=
permission:r,w,x
修改指定一类用户的所有权限
u= g= o= ug= a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a- + -
-R: 递归修改权限
eg.1
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
2.3 文件和目录创建的默认权限
umask 用来设置创建文件权限
非特权用户
umask
默认是
002
root
的
umask
默认是
022
-
新建文件的默认权限 : 666-umask ,如果所得结果某位存在执行(奇数)权限,则将其权限 +1, 偶数不变
-
新建目录的默认权限: 777-umask
修改umask文件方法:
- 全局:/etc/bashrc
- 用户: ~/.bashrc
[root@centos8 ~]#umask
0022
[root@centos8 ~]#( umask 666; touch /data/f1.txt )
[root@centos8 ~]#umask
0022
[root@centos8 ~]#ll /data/f1.txt
---------- 1 root root 0 Mar 27 14:55 /data/f1.txt
2.4 特殊权限
2.4.1 suid
只是针对于具有执行x权限的文件(命令,程序),让普通用户临时拥有该文件拥有者的权限
chmod u+s /opt/testfile
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33424 Feb 18 2022 /usr/bin/passwd
s: 有效的suid权限
S:无效的suid权限(通过添加x权限即可变为有效)
2.4.2 sgid
针对目录,文件,如果针对的是目录,不管是任何的普通话用户,只要能在该目录中创建自己的文件或者目录,这些用户所创建的文件和目录的属组都是继承于sgid的目录的属组
chmod g+s 目录名
场景: 保证权限一致,都在一个组
只有su - 用户环境,手动创建才会有特殊权限的效果 , cp | mv 如果加了 -p sgid没有效果
针对普通文件,不同用户临时拥有该文件属组的权限
2.4.3 粘滞位置sticky
只有目录中每个用户所创建的属于自己的文件|目录,只有自己和管理员root才能删除
主要针对目录的
chmod -R o+t [文件目录]
效果
普通用户#rm -rf nangefile
rm: cannot remove 'upnangefile':Operation not permitted
小总结:
Linux系统中文件,目录完整的权限是7777
第一个7 代表特殊权限 suid 4 | sgid 2 | sticky 1
没有7
第二个7 拥有者的基本权限
第三个7 拥有者属组的基本权限
第四个 其他人的基本权限
总结
以上就是关于用户、组和权限相关知识的了解,欢迎添加VX: wenjinworkon 交流学习