004、文件权限
本文最后更新于 65 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

文件权限

image-20240221083958911

一、文件权限说明

1、文件的权限主要针对三类对象进行定义
owner: 属主, u
group: 属组, g
other: 其他, o
2、每个文件针对每类访问者都定义了三种权限
r: Readable
w: Writable
x: eXcutable
3、文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
4、目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X:只给目录x权限,不给文件x权限

image-20240221084311399

二、chown修改文件的属主和属组

修改文件的属主:chown
chown[OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒号可用.替换
-R: 递归
chown[OPTION]... --reference=RFILE FILE...
修改文件的属组:chgrp
chgrp[OPTION]... GROUP FILE...
chgrp[OPTION]... --reference=RFILE FILE...
-R 递归
举例
3.1 改变指定文件的属组和属主
[root@localhost ~]# ll passwd 
-rw-r--r--. 1 root root 2259 2月  16 13:03 passwd
[root@localhost ~]# chown host:host passwd
[root@localhost ~]# ll passwd 
-rw-r--r--. 1 host host 2259 2月  16 13:03 passwd
3.2 修改指定文件的属组和属主,并显示过程
[root@localhost ~]# chown -c root:root passwd
changed ownership of "passwd" from host:host to root:root
[root@localhost ~]# ll passwd 
-rw-r--r--. 1 root root 2259 2月  16 13:03 passwd

3.3 递归修改目录及以下子文件的属组和属主

[root@localhost ~]# chown -R host:host test/

3.4 显示文件修改属组的信息

[root@localhost ~]# ll passwd 
-rw-r--r--. 1 root host 2259 2月  16 13:03 passwd
[root@localhost ~]# chown -v :host passwd
changed ownership of "passwd" from root:root to :host

3.5 修改属组和属主的几种写法
3.5.1 如果是修改文件的属组:直接不加前面的属主,只写冒号+属组

chown :root passwd

3.5.2 如果是修改文件的属主: 不需要再加冒号跟后面的参数

chown root passwd

3.5.3 如果文件的属组和属主都修改,那么就是一起写

chown root:root passwd

三、chmod修改文件权限

chmod [OPTION]... OCTAL-MODE FILE...
-R: 递归修改权限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
#修改一类用户的所有权限:
u= g= o= ug=  a=  u=,g=
#修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a-+ -
chmod [OPTION]... --reference=RFILE FILE...
#参考RFILE文件的权限,将FILE的修改为同RFILE
举例

4.1 设定文件的权限为775

[root@localhost ~]# chmod 775 anaconda-ks.cfg 
[root@localhost ~]# ll anaconda-ks.cfg 
-rwxrwxr-x. 1 root root 1365 2月   8 00:02 anaconda-ks.cfg

4.2 设定文件可以让任何人读取

[root@localhost ~]# chmod a=r anaconda-ks.cfg 
[root@localhost ~]# ll anaconda-ks.cfg 
-r--r--r--. 1 root root 1365 2月   8 00:02 anaconda-ks.cfg

4.3 设定目录及子文件的所有者可以读执行,其他无权限

[root@localhost ~]# chmod -R 500 data/
[root@localhost ~]# ll data/
总用量 0
-r-x------. 1 root root 0 2月  17 16:34 a.txt
-r-x------. 1 root host 0 2月  17 16:35 b.txt

4.4 让用户临时拥有重启系统的权限

[root@localhost ~]# which reboot
/usr/sbin/reboot
[root@localhost ~]# ll /usr/sbin/reboot 
lrwxrwxrwx. 1 root root 16 2月   8 00:25 /usr/sbin/reboot -> ../bin/systemctl
[root@localhost ~]# chmod u+s !$
chmod u+s /usr/sbin/reboot

4.5 设定文件无法执行

[root@localhost ~]# chmod a-x anaconda-ks.cfg 

四、umask新建文件和目录的默认权限

umask值可以用来保留在创建文件权限

新建FILE权限:
666减去umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限:
777减去umask
非特权用户umask是002
root的umask是022

umask: 查看
umask#: 设定

umask 002

umask– S 模式方式显示
umask –p 输出可被调用

全局设置:/etc/bashrc
用户设置:~/.bashrc

五、chattr、lsattr设定文件特定属性

chattr命令来自于英文词组“chang attribute”的缩写,其功能是用于更改文件隐藏属性。常用的ls命令仅能能够查看到文件的一般权限、特殊权限、SELinux安全上下文与是否有FACL访问控制列表的情况,且无法查看到文件隐藏属性。

语法及常用参数和模式

语法:chattr  【参数】【模式】文件
这里语法的格式除了可以加参数,还需要加模式。
2.2 常用参数

先来讲讲参数方面有哪些比较常用到的,以表格形式列出

-R  递归处理目录下的所有文件
-v  设置文件或目录版本
-V  显示指令执行过程
2.3 命令的模式

命令的模式有以下这些内容,以表格形式呈现,即设置的权限和对应的作用

权限  作用
i   #无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a   仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S   文件内容在变更后立即同步到硬盘(sync)
s   彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A   不再修改这个文件或目录的最后访问时间(atime)
b   不再修改文件或目录的存取时间
D   检查压缩文件中的错误
d   使用dump命令备份时忽略本文件/目录
c   默认将文件或目录进行压缩
u   当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t   让文件系统支持尾部合并(tail-merging)
x   可以直接访问压缩文件中的内容

参考实例

3.1 给文件添加无法修改的权限

可以看到文件设置了无法修改的权限后,文件不能被删除;

[root@localhost ~]# chattr +i anaconda-ks.cfg 
[root@localhost ~]# lsattr anaconda-ks.cfg 
----i----------- anaconda-ks.cfg

[root@localhost ~]# rm -r anaconda-ks.cfg 
rm:是否删除普通文件 "anaconda-ks.cfg"?y
rm: 无法删除"anaconda-ks.cfg": 不允许的操作
3.2 从指定文件移除隐藏属性
[root@localhost ~]# chattr -i anaconda-ks.cfg 
[root@localhost ~]# lsattr anaconda-ks.cfg 
---------------- anaconda-ks.cfg
3.3 给目录添加隐藏属性,递归操作
[root@localhost ~]# chattr -R +i data/
[root@localhost ~]# lsattr data/
----i----------- data/a.txt
----i----------- data/b.txt
[root@localhost ~]# lsattr data/ -d
----i----------- data/
3.4 设置文件只能添加内容,无法覆盖
[root@localhost ~]# echo "123456" > a.txt
[root@localhost ~]# chattr +a a.txt 
[root@localhost ~]# echo "123456" > a.txt 
bash: a.txt: 不允许的操作
[root@localhost ~]# echo "123456" >> a.txt 
[root@localhost ~]# cat a.txt 
123456
123456
3.5 不再修改文件或目录的访问时间
[root@localhost ~]# chattr +A anaconda-ks.cfg 
[root@localhost ~]# lsattr  anaconda-ks.cfg 
-------A-------- anaconda-ks.cfg
[root@localhost ~]# vim anaconda-ks.cfg 
[root@localhost ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1371       块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:67259498    硬链接:1
权限:(0444/-r--r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2023-02-18 10:43:12.451650907 +0800
最近更改:2023-02-18 10:43:12.451650907 +0800
最近改动:2023-02-18 10:43:12.453650916 +0800
创建时间:-
[root@localhost ~]# vim anaconda-ks.cfg 
[root@localhost ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1384       块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:67664943    硬链接:1
权限:(0444/-r--r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2023-02-18 10:43:31.555734612 +0800
最近更改:2023-02-18 10:43:31.555734612 +0800
最近改动:2023-02-18 10:43:31.555734612 +0800
创建时间:-
[root@localhost ~]# echo "123456" > anaconda-ks.cfg 
[root@localhost ~]# tail -n 1 anaconda-ks.cfg 
123456
A模式的访问时间不变,但是可以修改文件的内容以及覆盖。
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇