linux核心基础-权限管理-已拷贝
1、更改文件的权限命令总结

2、文件、目录的的rwx
想要删除文件,要看是否有该文件所在目录,目录是否有w权限,才可以删除文件,且还得有x权限,才能进入文件夹。(用普通用户测试)

3、环境变量
1、env和set命令
env命令为单个用户的环境变量
命令为系统整体的环境变量
[root@muserver1 etc]# set |grep PS1
PS1='[\u@\h \W]\$ '
\u 显示用户名
\h显示主机名
\w 显示用户所处目录的最后一级
\w 显示用户所处的绝对路径,省去你敲pwd\t 以24小时制,显示时间
\$ 显示用户的身份提示符,自动识别root还是普通用户
最终你可以调整PS1 命令提示符如下格式
PS1=' [\u@\h \w \t]$ '
该变量,临时敲打,临时生效,重新登录后,系统重新加载用户环境变量,该设置丢失如何永久生效?把你自定义的变量
-写入到,系统全局环境变量配置文件中(/etc/profile)
- 那么就有关于用户个人的配置文件,在用户家目录下
~/. bash_profile
2、当命令提不行出现损坏,以及家目家显不不正常的解决办法
比如如下损坏信息时
[root@yuanlai-0224 tmp]#
su - chaoge01
上一次登录:四 3月 17 09:51:51 CST 2022pts/0 上su:警告:无法更改到
/home/chaoge01 目录:没有那个文件或目录
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ echo $PS1
\s-\v$
-bash-4.2$
修复原理:
1.表示系统读不到用户的个人配置文件,用户在useradd创建时候,系统会去/etc/ske1目录下,拷贝所有的用户个人环境变量配置文件,到用户生成的家目录下 /home/chaoge01
2. 用户在登录时,自动加载 /home/chaoge1 下所有的文件内容
3.修复手段,手动的拷贝 前2步操作即可修复
cp -r /etc/skel/ /home/chaogeQ1|
3、文件特殊权限篇
1、三位特殊权限:
suid(setuid)
sgid(setgid)
sbit(sticky)

3.1 SUID 特殊权限
3.1.1 suid基础原理
- suid通过S字符标识,存在于用户权限位的x权限对应位置。
- 如果某文件,用户权限位本身就有x权限,给该文件设置suid权限时,则以小写s标识,否则就是大写的S字符。
- 给文件设置s权限对应的数字表示法是4,八进制数下可以用4000
- suid同样也用chmod设置权限,可以以字符法,数字法两种标识。
解释关于linux的用户创建
- 用户创建完用户后,需要修改密码,执行passwd命令
- 但是passwd命令需要读取,修改/etc/passwd、/etc/shadow文件,这些文件都是属于root,那不就没权限操作了吗,但是普通用户,如何执行passwd命令,修改自己的密码呢?
- 可以让普通用户临时获得root的身份,不就有属主的权限了吗。
- 这就是设置SUID的一个根本原因。
- 且SUID特殊权限,只能用在二进制可执行文件上。
注意给rm命令设置suid之后,任何普通用户去执行这个命令,都会以root身份去运行,因此及其危险。
[root@muserver1 tmp]# ll /usr/bin/rm
-rwxr-xr-x. 1 root root 71056 8月 13 2019 /usr/bin/rm
[root@muserver1 tmp]#
3.1.2 查找系统中所有的suid权限文件
-perm用法
-perm 664 #查找权限为664的文件,不是的不会查找出来
-perm -664 #查找符合此条件的文件rw*rw*r** (*代表任意)
# find搜索,根据权限搜索
[root@yuchao-tx-server ~]# find / -type f -perm -4000 -ls
3.2sgid
1.对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限,和9位基本rwx那个理解概念一样。
2. suid是获得文件属主的权限,sgid是获得文件属组的权限
3. sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用。
[root@muserver1 tmp]# mkdir ceshi
[root@muserver1 tmp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 5月 17 23:16 ceshi
[root@muserver1 tmp]# chgrp ops01 ceshi
[root@muserver1 tmp]# chmod g+s,o+w ceshi
[root@muserver1 tmp]# ll
总用量 0
drwxr-srwx. 2 root ops01 6 5月 17 23:16 ceshi
[root@muserver1 tmp]# cd ceshi
[root@muserver1 ceshi]# touch 1.txt
[root@muserver1 ceshi]# mkdir 2
[root@muserver1 ceshi]# ll
总用量 0
-rw-r--r--. 1 root ops01 0 5月 17 23:16 1.txt
drwxr-sr-x. 2 root ops01 6 5月 17 23:17 2
[root@muserver1 ceshi]# su - cupp
上一次登录:五 5月 17 23:14:10 EDT 2024pts/0 上
[cupp@muserver1 ~]$ cd /tmp/ceshi/
[cupp@muserver1 ceshi]$ ll
总用量 0
-rw-r--r--. 1 root ops01 0 5月 17 23:16 1.txt
drwxr-sr-x. 2 root ops01 6 5月 17 23:17 2
[cupp@muserver1 ceshi]$ touch 3.txt
[cupp@muserver1 ceshi]$ mkdir 4
[cupp@muserver1 ceshi]$ ll
总用量 0
-rw-r--r--. 1 root ops01 0 5月 17 23:16 1.txt
drwxr-sr-x. 2 root ops01 6 5月 17 23:17 2
-rw-r--r--. 1 cupp ops01 0 5月 17 23:17 3.txt
drwxr-sr-x. 2 cupp ops01 6 5月 17 23:17 4
[cupp@muserver1 ceshi]$
3.3SBIT特殊权限(sticky bit)
sbit粘滞位,用的已经很少了,但是对于系统特殊文件夹/tmp来说,是整个系统所有用户的临时文件存放地,谁都有任意的权限,你会发现该目录的权限巨大。
[root@yuchao-tx-server ~]# ll -d /tmp/
drwxrwxrwt. 8 root root 4096 3月 16 18:54 /tmp/
但是看到了一个特殊权限t
一句话总结。
当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件,而不能影响到其他人。
演示
没有设置粘滞位,且目录是777权限时,也就是任意的user、group、other角色在这个目录下,可以进行读、写、执行任意文件。
4、umask
umask 命令用来限制新文件权限的掩码,也称之为遮罩码。
防止文件、文件夹创建的时候,权限过大
当新文件被创建时,其最初的权限由文件创建掩码决定。
root用户创建的
# 文件夹权限默认是755
[root@yuchao-linux01 ~]# ll -ld yuyu
drwxr-xr-x 2 root root 6 Jan 14 18:20 yuyu
# 文件权限默认644
[root@yuchao-linux01 ~]# ll yuchao66.txt
-rw-r--r-- 1 root root 0 Jan 14 18:20 yuchao66.txt
chaoge普通用户创建的
#文件夹权限775
[chaoge@yuchao-linux01 ~]$ ll -ld yuyu
drwxrwxr-x 2 chaoge chaoge 6 Jan 14 18:20 yuyu
# 文件权限 664
[chaoge@yuchao-linux01 ~]$ ll yuchao66.txt
-rw-rw-r-- 1 chaoge chaoge 0 Jan 14 18:20 yuchao66.txt
查看mask值
[root@muserver tmp]# umask
0022
[root@muserver tmp]# su - peizhibin
上一次登录:日 5月 26 21:20:38 CST 2024pts/0 上
[peizhibin@muserver ~]$ umask
0002
[peizhibin@muserver ~]$
1、图解mask
linux默认文件夹最大权限是777(文件夹必须、可读、可写、可执行)
linux文件默认最大权限是666(缺少x,因为x专门给可执行命令用,而不是普通文件)

默认最高权限 - umask = 初始权限
比如文件的
root 666-022=644 rw-r--r--
chaoge 666-002=664 rw-rw-r--
2、注意umask别设置为基数
比如root用户
默认文件最大权限 666
umask值 011
初始文件权限,理论是 655
但是结果是这样吗
[root@yuchao-linux01 ~]# umask 011
[root@yuchao-linux01 ~]# touch test-umask.txt
[root@yuchao-linux01 ~]# ll test-umask.txt
-rw-rw-rw- 1 root root 0 Jan 16 14:01 test-umask.txt
发现文件权限依然是666
- 这是因为文件默认是没有x权限的,x权限一般专门用于二进制文件,比如一个可以执行的linux命令。
- 如果遮罩码设置为奇数,创建的文件权限会自动+1变成偶数权限。
3、修改mask值(了解即可,不要改)
临时修改umask值
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# umask 011
[root@yuchao-linux01 ~]# touch test-umask.txt
[root@yuchao-linux01 ~]# ll test-umask.txt
-rw-rw-rw- 1 root root 0 Jan 16 14:01 test-umask.txt
以后你默认创建的文件,其他人角色,也都有了写入权限,这不太合适吧。
永久修改umask值(所谓永久修改,指的是数据写入文件,每次开机都会加载)
# 1.编辑用户环境变量文件,用于设置针对你个人用户,每次开机想得到一些专属于你自己的信息
vim ~/.bashrc
# 2.写入信息,保存
umask 044
# 3. 重启登录ssh会话
exit
# 4.检查umask值
[root@yuchao-linux01 ~]# umask
0044
# 5.查看默认权限
[root@yuchao-linux01 ~]# touch t2-umask.txt
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# ll t2-umask.txt
-rw--w--w- 1 root root 0 Jan 16 14:20 t2-umask.txt
5、文件特殊属性
1、 修改文件特殊属性chattr
命令说明
chattr用于改变文件的扩展属性。
chmod用于修改文件9位基础权限、r、w、x
更底层的权限由chattr改变
参数
a:只能向文件中添加数据,不得删除
-R:递归更改目录属性
-V:显示命令执行过程
模式
+ 增加参数
- 移除参数
= 更新为指定参数
A 不让系统修改文件最后访问时间
a 只能追加文件数据,不得删除
i 文件不能被删除、改名、修改内容(文件锁定)
2、lsattr查看文件特殊属性
lsattr用于查看文件扩展的属性。
-R 递归地列出目录以及其下内容的属性.
-a 列出目录中的所有文件,包括以`.'开头的文件的属性.
-d 列出目录本身的属性
6、文件属性inode和block
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块"(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块"的大小,最常见的是4KB,即连续八个 sector组成一个block。
文件数据都储存在"块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
1. 元数据,也就是文件的属性信息,可以通过stat命令查看到
2. 存储元数据信息的空间,被称之为Inode
4. 存储文件数据的空间,被称之为block
6. linux读取文件内容,其实是 以 文件名 > inode编号 > block 的顺序来读取
8. 在你创建文件前必须先要分区、格式化(创建文件系统),创建文件系统后inode和block的数量就会固定下来。
10. 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
12. 这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
14. 表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
如何查看inode号
[yuchao-linux01 root /opt]$ls -i 5G.txt
50391778 5G.txt
7、软连接、硬链接
7.1软连接
-s--symbolic
对源文件建立软链接(符号连接),而非硬连接。
[root@muserver tmp]# ll
总用量 8
-rw-r--r-- 1 root root 0 5月 27 17:01 ceshi
drwxr-xr-x 2 root root 4096 5月 27 16:59 long
[root@muserver tmp]# ln -s ceshi ./linkscehi
[root@muserver tmp]# ln -s long linkslong
[root@muserver tmp]# ll
总用量 8
-rw-r--r-- 1 root root 0 5月 27 17:01 ceshi
lrwxrwxrwx 1 root root 5 5月 27 17:02 linkscehi -> ceshi
lrwxrwxrwx 1 root root 4 5月 27 17:02 linkslong -> long
drwxr-xr-x 2 root root 4096 5月 27 16:59 long
[root@muserver tmp]# ll -i ceshi
657118 -rw-r--r-- 1 root root 0 5月 27 17:01 ceshi
[root@muserver tmp]# ll -i linkscehi
657285 lrwxrwxrwx 1 root root 5 5月 27 17:02 linkscehi -> ceshi
[root@muserver tmp]#
软连接特点
1.软连接文件的inode号和源文件不同,作用是存储源文件的路径
2.命令ln -s创建
3.删除普通软连接,不影响源文件
4.删除源文件,软连接找不到目标,报错提示。
补充:ll下的数字详解

第三列的数字,代表该文件所具有的硬连接个数,文件夹的子目录个数'.'代表本级目录 和'..'上级目录
普通目录为2个
普通文件为1个
7.2硬链接
硬连接,就是一个数据(block)被多个相同inode号的文件指向。
就好比超市有好多个大门,但是都能进入到这个超市。
创建语法
ln 源文件 目标文件(硬连接)
[root@muserver tmp]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月 27 17:47 吴亦凡
[root@muserver tmp]# ln 吴亦凡 吴亦凡link1
[root@muserver tmp]# ln 吴亦凡 吴亦凡link2
[root@muserver tmp]# ls -li
总用量 0
657118 -rw-r--r-- 3 root root 0 5月 27 17:47 吴亦凡
657118 -rw-r--r-- 3 root root 0 5月 27 17:47 吴亦凡link1
657118 -rw-r--r-- 3 root root 0 5月 27 17:47 吴亦凡link2
[root@muserver tmp]#
**硬链接特点**
1.可以对已存在的文件做硬链接
2.硬链接的文件,inode相同,属性一致
3.只能在同一个磁盘分区下,同一个文件系统下创建硬链接
4.不能对文件夹创建硬链接,只有文件可以
5.删除一个硬链接,不影响其他相同inode号的文件
6.文件夹的硬链接,默认是2个(一个是表示自身的'.',另一个是表示父目录的'..'),以及是2+(第一层子目录总数)=文件夹的硬链接数量
7.可以用任意一个硬链接作为入口,操作文件
8.当文件的硬链接数为0时,文件真的被删除
8、setfacl
(set file access control lists)设置文件 访问控制列表Q。
setfacl 可以更精确的控制权限的分配,比如让某一个用户对某一个文件具有某种权限。
ACLQ指文件的所有者、所属组、其他人的读/写/执行之外的特殊的权限,对于需要特殊权限的使用状况有一定帮助。如某一个文件,不让单一的某个用户访问。
可以通过dmesg命令,查看到ACL相关信息。
dmesg可以查看到系统的启动信息,包括硬件信息,操作系统信息
[root@yuchao-linux01 ~]# dmesg |grep ACL
[ 16.890605] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 17.775177] SGI XFS with ACLs, security attributes, no debug enabled
- getfacl命令:查看文件的ACL策略及权限
- setfacl命令: 给文件针对某个用户或者某个组来增加(设置)ACL策略
- Linux设置文件ACL权限是通过setfacl工具来设置的,通过getfacl工具来获取ACL访问控制列表
ls -l工具可以查看到文件所属的九列权限,同时可以看到九列权限之后一位:如果是点(.)表示仅仅有九列权限,如果是+,表示除九列之外还有ACL权限,这时候就需要通过getfacl工具查看ACL权限
setfacl命令
语法
setfacl 选项 文件
选项:
-m:设定 ACL 权限。
如果是给予用户 ACL 权限,则使用"u:用户名:权限"格式赋予;如果是给予组 ACL 权限,则使用"g:组名:权限" 格式赋予;
-x:删除指定的 ACL 权限;
-b:删除所有的 ACL 权限;
-d:设定默认 ACL 权限。
只对目录生效,指目录中新建立的文件拥有此默认权限;
-k:删除默认 ACL 权限;
-R:递归设定 ACL 权限。
不加-R的话,生成新子目录后,权限不继承。
指设定的 ACL 权限会对目录下的所有子文件生效;
测试使用
[root@muserver tmp]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月 27 18:59 ceshi
[root@muserver tmp]# dmesg |grep ACL
[ 0.498308] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[root@muserver tmp]# getfacl ceshi
# file: ceshi
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@muserver tmp]# setfacl -m u:cupp:rw ceshi
[root@muserver tmp]# ll
总用量 0
-rw-rw-r--+ 1 root root 0 5月 27 18:59 ceshi
[root@muserver tmp]# getfacl ceshi
# file: ceshi
# owner: root
# group: root
user::rw-
user:cupp:rw-
group::r--
mask::rw-
other::r--
[root@muserver tmp]# setfacl -b ceshi
[root@muserver tmp]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月 27 18:59 ceshi
[root@muserver tmp]# getfacl ceshi
# file: ceshi
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@muserver tmp]#
浙公网安备 33010602011771号