linux文件权限管理:文件权限类型,文件权限影响,设定文件权限,取消文件权限
一.关于文件权限
权限可以对文件所有者的内容进行保护,也可以分享内容给特定的用户。一般给文件设置权限可以达到三种效果:
- 只允许自己访问
- 允许某个指定用户访问
- 允许所有用户访问
二.查看文件权限
1.使用ll可以查看文件的权限
[root@node5 ~]# ll -h *.txt
-rw-r--r-- 1 root root 115 Oct 12 10:03 aaa.txt
-rw-r--r-- 1 root root 27K Oct 10 16:27 ceshi.txt
-rw-r--r-- 1 root root 1.2K Apr 3 2020 idea快捷键.txt
-rw-r--r-- 1 root root 16 Oct 10 16:35 test2.txt
-rw-r--r-- 1 root root 12 Oct 10 17:30 test.txt
-rw-r--r-- 1 root root 83 Oct 12 09:59 测试乱码文件.txt
#-rw-r--r--即是文件权限的描述
2.文件权限释义如下图:


三.linux下常见文件类型
1.文件类型如下:
- p表示命名管道文件
- d表示目录文件
- l表示符号链接文件
- -表示普通文件
- s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
- c表示字符设备文件,例: 虚拟控制台 或tty0
- b表示块设备文件 例: sda, cdrom
2.系统常见的文件类型
#字符设备文件
[root@node5 ~]# ll /dev/tty
crw-rw-rw- 1 root tty 5, 0 Oct 14 02:40 /dev/tty
#块设备文件
[root@node5 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 Oct 14 02:40 /dev/sda
brw-rw---- 1 root disk 8, 1 Oct 14 02:40 /dev/sda1
brw-rw---- 1 root disk 8, 2 Oct 14 02:40 /dev/sda2
brw-rw---- 1 root disk 8, 16 Oct 14 02:40 /dev/sdb
brw-rw---- 1 root disk 8, 17 Oct 14 02:40 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Oct 14 02:40 /dev/sdb2
brw-rw---- 1 root disk 8, 21 Oct 14 02:40 /dev/sdb5
brw-rw---- 1 root disk 8, 22 Oct 14 02:40 /dev/sdb6
#符号链接文件
[root@node5 ~]# ll /dev/cdrom
lrwxrwxrwx 1 root root 3 Oct 14 02:40 /dev/cdrom -> sr0
#目录文件
[root@node5 ~]# ll -d /
dr-xr-xr-x. 21 root root 4096 Oct 14 02:22 /
#普通文件
[root@node5 ~]# ll /etc/hosts
-rw-r--r--. 1 root root 356 Apr 28 2019 /etc/hosts
#套接字文件
[root@node5 ~]# ll /var/lib/gssproxy/default.sock
srw-rw-rw- 1 root root 0 Oct 14 02:40 /var/lib/gssproxy/default.sock
四.linux下常见的文件权限
1.Linux下的文件权限类型一般包括读,写,执行,对应的字母是: r ,w,x。
2.对于文件来说:
- r:读
- w:写
- x:执行
3.对于目录来说:
- r:读(看目录里面有什么), ls
- w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
- x:进入 cd cat
4.常见的文件权限如下:
- rwx------:文件所有者对文件具有读取、写入和执行的权限。
- rwxr-- r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
- rw-rw-r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
- drwx--x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
- drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
5.每个用户都有自己的专属目录,通常放置在/home下面
[root@node5 ~]# ll -h /home
total 4.0K
drwx------ 3 elk elk 120 Oct 14 01:42 elk
drwx------ 6 esnode esnode 4.0K Apr 27 14:27 esnode
drwx------ 2 nginx nginx 62 May 7 2019 nginx
drwx------ 3 www www 73 May 7 2019 www
注:[rwx------]表示目录所有者本身拥有的权限,其它用户无法进入的,root除外
6.你以什么用户身份登录,那么你创建的目录或文件,自动成为该文件或目录的所属
[root@node5 ~]# su - elk
Last login: Wed Oct 14 01:42:49 CST 2020 on pts/0
[elk@node5 ~]$ pwd
/home/elk
[elk@node5 ~]$ touch b.txt
[elk@node5 ~]$ ll b.txt
-rw-rw-r-- 1 elk elk 0 Oct 14 15:10 b.txt
[elk@node5 ~]$
[elk@node5 ~]$ exit
logout
五.权限对文件和目录的影响
| 权限 | 对文件的影响 | 对目录的影响 |
|---|---|---|
| r(读取) | 可以读取文件的内容 | 可以列出目录的内容(文件名):ls |
| w(写入) | 可以更改文件的内容 | 可以创建或删除目录中的任意文件:touch mkdir rm mv cp |
| x(执行) | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限):cd cat |
六.文件的用户分类
1.文件的用户分类:U(文件所有者)-G(用户组)-O(其他用户)
- 所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
- 用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
- 其它用户:系统内的其他所有者用户就是other用户类
七.更改文件的属主和属组
1.改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主 change owner
chgrp:可以用来改变文件(或目录)的默认属组 change group
如果你要对目录进行操作,加参数 -R
chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为hr,san
chown user: filename 比如:chown san: a.txt 自动继承这个用户所有的组
chown user filename 比如:chown san a.txt 把文件的属主改为san用户
chown :group filename 比如: chown :miao a.txt 把文件的属组改为miao这个组
chgrp hr filename 比如: chgrp hr f.txt
-R :递归(目录下的所有内容都更改,否则只修改目录)
[root@node5 ~]# ll -h *.txt
-rw-r--r-- 1 root root 115 Oct 12 10:03 aaa.txt
-rw-r--r-- 1 root root 115 Oct 14 16:54 bbb.txt
-rw-r--r-- 1 root root 115 Oct 14 16:54 ccc.txt
-rw-r--r-- 1 root root 115 Oct 14 16:55 ddd.txt
[root@node5 ~]# chown esnode aaa.txt
[root@node5 ~]# ll aaa.txt
-rw-r--r-- 1 esnode root 115 Oct 12 10:03 aaa.txt
[root@node5 ~]# chown esnode:esnode bbb.txt
[root@node5 ~]# ll bbb.txt
-rw-r--r-- 1 esnode esnode 115 Oct 14 16:54 bbb.txt
[root@node5 ~]# chown :logstash ccc.txt
[root@node5 ~]# ll ccc.txt
-rw-r--r-- 1 root logstash 115 Oct 14 16:54 ccc.txt
[root@node5 ~]# chown elk: ddd.txt
[root@node5 ~]# ll ddd.txt
-rw-r--r-- 1 elk elk 115 Oct 14 16:55 ddd.txt
[root@node5 ~]# cp ddd.txt eee.txt
[root@node5 ~]# ll eee.txt
-rw-r--r-- 1 root root 115 Oct 14 17:00 eee.txt
[root@node5 ~]# chgrp elk eee.txt
[root@node5 ~]# ll eee.txt
-rw-r--r-- 1 root elk 115 Oct 14 17:00 eee.txt
八.一个文件取消所有权限,拥有者是否可以写这个文件?
[root@node5 ~]# su - elk
Last login: Wed Oct 14 15:10:16 CST 2020 on pts/0
[elk@node5 ~]$ pwd
/home/elk
[elk@node5 ~]$ touch test.txt
[elk@node5 ~]$ echo "hello world ! " >> test.txt
[elk@node5 ~]$
[elk@node5 ~]$ ll -h
total 4.0K
-rw-rw-r-- 1 elk elk 15 Oct 14 19:17 test.txt
[elk@node5 ~]$ chmod 000 test.txt
[elk@node5 ~]$
[elk@node5 ~]$ ll -h
total 4.0K
---------- 1 elk elk 15 Oct 14 19:17 test.txt
[elk@node5 ~]$
[elk@node5 ~]$ echo 12 >> test.txt
-bash: test.txt: Permission denied
[elk@node5 ~]$ vim test.txt
[elk@node5 ~]$ cat test.txt
cat: test.txt: Permission denied
[elk@node5 ~]$ pwd
/home/elk
[elk@node5 ~]$ ls
test.txt
[elk@node5 ~]$ exit
logout
[root@node5 ~]# cat /home/elk/test.txt
hello world !
[root@node5 ~]# su - elk
Last login: Wed Oct 14 19:14:43 CST 2020 on pts/0
#强行写入
[elk@node5 ~]$ vim test.txt
qwe
qwe
"test.txt" 2L, 8C written
[elk@node5 ~]$
[elk@node5 ~]$ cat test.txt
cat: test.txt: Permission denied
[elk@node5 ~]$
[elk@node5 ~]$ exit
logout
[root@node5 ~]#
[root@node5 ~]# cat /home/elk/test.txt
qwe
qwe
结论:文件所有者一定可以写文件,就像root可以对shadow强制写, 因为shadow的拥有者是root。
九.使用字符设定权限
1.修改权限用的命令:chmod,作用:修改文件,目录的权限
2.chmod的命令格式:
chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
u----> 用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其它用户others
a---->所有用户all
操作符:
+:添加权限 ,- :减少权限 ;= :直接给定一个权限
权限:r w x
| 参数 | 描述 |
|---|---|
| u-w | 给文件拥有者减去读的权限 |
| g+x | 给用户组加上执行的权限 |
| o=r | 赋予其他用户读的权限 |
| a+x | 给所有用户加上执行的权限 |
[root@node5 ~]# su - elk
[elk@node5 ~]$ touch test.txt
[elk@node5 ~]$ ll
total 0
-rw-rw-r-- 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$ chmod u-w test.txt
[elk@node5 ~]$ ll
total 0
-r--rw-r-- 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$ chmod o=w test.txt
[elk@node5 ~]$ ll
total 0
-r--rw--w- 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$ chmod u+wx test.txt
[elk@node5 ~]$
[elk@node5 ~]$ ll
total 0
-rwxrw--w- 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$ chmod g=- test.txt
[elk@node5 ~]$
[elk@node5 ~]$ ll
total 0
-rwx----w- 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$
[elk@node5 ~]$ chmod a=r test.txt
[elk@node5 ~]$
[elk@node5 ~]$ ll
total 0
-r--r--r-- 1 elk elk 0 Oct 14 19:32 test.txt
十.使用八进制(0-7)数字设定权限
1.八进制表示法
| 权限 | 二进制值 | 八进制值 | 描述 |
|---|---|---|---|
| --- | 000 | 0 | 没有任何权限 |
| --x | 001 | 1 | 只有执行权限 |
| -w- | 010 | 2 | 只有写入权限 |
| -wx | 011 | 3 | 有写入和执行权限 |
| r-- | 100 | 4 | 只有读取权限 |
| r-x | 101 | 5 | 有读取和执行权限 |
| rw- | 110 | 6 | 有读取和写入权限 |
| rwx | 111 | 7 | 有全部权限 |

2.改变权限的语法:chmod 755 文件或目录
chmod a=rwx b.txt 等价于 chmod 777 b.txt
[root@node5 ~]# su - elk
Last login: Wed Oct 14 19:30:54 CST 2020 on pts/0
[elk@node5 ~]$ ll
total 0
-r--r--r-- 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$ chmod 755 test.txt
[elk@node5 ~]$ ll
total 0
-rwxr-xr-x 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$
[elk@node5 ~]$ chmod 700 test.txt
[elk@node5 ~]$
[elk@node5 ~]$ ll
total 0
-rwx------ 1 elk elk 0 Oct 14 19:32 test.txt
[elk@node5 ~]$ stat -c%a test.txt
700
[elk@node5 ~]$ stat -c%A test.txt
-rwx------
十一.补码 umask
1.为什么我们创建的文件的权限是644呢?我们创建文件的默认权限是怎么来的?
答:umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数
字,当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask用于设置用
户创建文件或者目录的默认权限,umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。
2.文件默认权限=666 ,目录默认权限=777
3.为什么文件比目录权限少1? x cd
4.我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。永久生效,编辑用户的配置文件vim
.bash_profile
[elk@node5 ~]$ cat /etc/profile
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
......
[elk@node5 ~]$ id -gn
elk
[elk@node5 ~]$ id -un
elk
注释:UID大于199 且用户的组名和用户名一样,那么 umask值为002,否则为022。
注释: -gt 在shell中表示大于; id -un 显示用户组ID ,id -gn显示组名。
5.设置umask临时生效
[root@node5 ~]# umask 044
[root@node5 ~]# touch b.txt
[root@node5 ~]# stat -c %a b.txt
622
[root@node5 ~]# ll b.txt
-rw--w--w- 1 root root 0 Jul 7 21:51 b.txt
6.umask权限的算法
权限的算法:一般情况是:目录默认权限-umask 值
666-022=644
777-022=755
这是一个好的记忆方法,但不严谨。
互动:umask掩码为033 创建普通文件后,权限是什么? 666-033=633 ( rw- -wx -wx) ?
[root@node5 ~]# umask 033
[root@node5 ~]# touch c.txt
[root@node5 ~]# ll c.txt
-rw-r--r-- 1 root root 0 Jul 7 21:54 c.txt
[root@node5 ~]# stat -c %a c.txt
644
权限科学的计算方法:
1、将默认权限(目录777,文件666)和umask值都转换为2进制
2、对umask取反
3、将默认权限和umask取反后的值做与运算
4、将得到的二进制值再转换8进制,即为权限,
例1:umask为022
6 6 6 umask 0 2 2
110 110 110 000 010 010 #转成二进制
111 101 101 #umask取反的值
做运算
110 110 110
111 101 101
结果
110 100 100 #转成8进制 6 4 4
例2: umask 为033 结果为: 644
6 6 6 umask 0 3 3
110 110 110 000 011 011 # 转成二进制
111 100 100 # umask取反的值
110 110 110 与 #默认权限和umask取反后的值做与运算
111 100 100 # umask取反的值
110 100 100
6 4 4 #转成8进制
linux文件权限管理:文件权限类型,文件权限影响,设定文件权限,取消文件权限的更多相关文章
- Linux权限管理:setUID、setGID 和 Sticky BIT
1.setUID.setGID 和 Sticky BIT 的功能详解 setuid 功能: 1.只有可执行的二进制文件程序才能设定 SUID 权限(前提) 2.命令执行者要对该程序有执行(x)权限(必 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)
前言:时间很快,已经快到春节的时间了,这段时间由于生病,博客基本没更新,所以今天写一下我们做的一个项目吧,是对权限的基本操作的操作,代码也就不怎么说了,直接上传源码和图片展示,下面我们直接进入主题介绍 ...
- 权限管理,pymysql模块
权限管理 权限管理重点 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL ...
- (39.2). Spring Boot Shiro权限管理【从零开始学Spring Boot】
(本节提供源代码,在最下面可以下载) (4). 集成Shiro 进行用户授权 在看此小节前,您可能需要先看: http://412887952-qq-com.iteye.com/blog/229973 ...
- odoo 权限管理学习总结
环境 odoo-14.0.post20221212.tar base_user_role-12.0.2.1.2.zip 下载地址: https://apps.odoo.com/apps/modules ...
- Android 6.0权限管理
Android 6.0权限管理 关于权限管理 Android6.0 发布之后,Android 的权限系统被重新设计.在 23 之前 App 的权限只会在用户安装的时候询问一次,App一旦安装后就可以使 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- Android权限管理知识学习记录
一.Android权限背景知识 在Android 6.0之前,所申请的权限只需要在AndroidManifest.xml列举就可以了,从而容易导致一些安全隐患,因此,在Android 6.0时,Goo ...
- Android 开发者必知必会的权限管理知识
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/OQRHEufCUXBA3d3DMZXMKQ 导语 本 ...
- 基于Spring Security2与 Ext 的权限管理设计与兑现
基于Spring Security2与 Ext 的权限管理设计与实现 一.Spring Security介绍 Spring Security的前身Acegi,其配置及使用相对来说复杂一些,因为要配置的 ...
随机推荐
- C++ 开发者必读经典书籍推荐
如果你正在学习C++,那么一本好的教材或参考书可以事半功倍.以下是几本我个人推荐的C++书籍或视频 C++基础 看书 C++ Primer C++程序设计语言 Effective C++ More E ...
- Python 中的字符串基础与应用
在Python中,字符串可以用单引号或双引号括起来.'hello' 与 "hello" 是相同的.您可以使用print()函数显示字符串文字: 示例: print("He ...
- Matplotlib绘图设置---图形颜色和风格调整
绘图函数 plt.plot()函数可以通过相应的参数设置绘图风格. plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs) Doc ...
- 大奖升级!HMS Core线上Codelabs挑战赛第3期:用3D建模构建元宇宙
"元宇宙"概念风生水起,在AR.VR等技术构建的虚拟世界里,3D模型担当重要角色,无论是为玩家提供更丰富更真实游戏体验的3D游戏领域,还是各大电商平台正在启用并不断完善的3D虚拟购 ...
- Serverless 架构下的 AI 应用开发:入门、实战与性能优化
简介: 本章通过对 Serverless 架构概念的探索,对 Serverless 架构的优势与价值.挑战与困境进行分析,以及 Serverless 架构应用场景的分享,为读者介绍 Serverles ...
- 为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
简介: Serverless Devs 离不开对云资源的操作,但支持新资源时需要开发相应的组件代码:如果将环境模板的定义通过 Terraform IaC 来完成,在 Serverless Devs ...
- 8.k8s之调动pod到指定节点与创建多容器pod并查找pod日志
官方文档:将pod分配给节点题目1:调度pod到指定节点 设置配置环境kubectl config use-context k8s 按如下要求创建并调度一个pod: - 名称:nginx-kusc00 ...
- uniapp+vue3聊天室|uni-app+vite4+uv-ui跨端仿微信app聊天语音/朋友圈
原创研发uniapp+vue3+pinia2跨三端仿微信app聊天模板Uniapp-Wechat. uni-vue3-wchat基于uni-app+vue3+pinia2+uni-ui+uv-ui等技 ...
- C++里也有菱形运算符?
最近在翻<c++函数式编程>的时候看到有一小节在说c++14新增了"菱形运算符".我寻思c++里好像没什么运算符叫这名字啊,而且c++14新增的功能很少,我也不记得有添 ...
- 接私活利器!推荐一个基于SpringBoot3的后台管理框架
大家好,我是 Java陈序员. 今天,给大家推荐一个后台管理框架,适合二次定制开发.接私活.源码学习等场景. 关注微信公众号:[Java陈序员],获取开源项目分享.AI副业分享.超200本经典计算机电 ...