Linux权限的理解 | 粘滞位 |权限掩码 |文件类型
文章目录
- 文件的访问者
- 文件的类型和权限表达
- 文件权限的修改
- 文件拥有者、所属组的修改
- 文件拥有者修改
- 文件所属组修改
- 关于权限掩码
- 关于目录的权限
文件的访问者
文件的访问者,可以分为三类
- 拥有者(owner):拥有该文件的访问者
- 所属组(group):该文件所属的组
- 其他人(other):除了拥有者、所属组外的其他访问者
当我们查看更多文件更多属性的时候
会显示拥有者和所属组,而除了这两个以外的就被称为其他人。
为什么会分出拥有者、所属组和其他人呢?
假设你自己独立设计出了一款软件,将用户类别划分为拥有者、所属组和其他人,更方便对访问软件的人做出约束:
只有你自己能操作
允许你和你所在的组操作
允许你和你所在的组以及其他人也能操作。
……
上面所属组的位置只有一个用户,这样也算组吗?当然是可以的呀,一个人作一个组这是被允许的。
文件的类型和权限表达
先来看一下文件的类型
标识 | 档案的类型 |
---|---|
– | 普通文件 |
d | 文件夹(目录) |
l | 软链接 |
b | 块设备文件 |
p | 管道文件 |
c | 字符设备文件 |
s | 套接口文件 |
//例如//test.c是一个普通文件,拥有者为root用户,所属组为root用户
-rw-r--r-- 1 root root 79 Jan 22 15:00 test.c//test_commands是一个文件夹,拥有者为YDY,所属组为YDY用户
drwxrwxr-x 4 YDY YDY 4096 Apr 9 20:12 test_commands
如果我们只知道Linux系统上的某文件的文件名,如何查看它是什么类型的文件呢?
使用命令:file
功能:查看文件的类型
格式:file 选项 文件名
//例如
[root@VM-0-2-centos test_user]# ls
user_dirt1
[root@VM-0-2-centos test_user]# file user_dirt1
user_dirt1: sticky directory
[root@VM-0-2-centos test_user]#
用户的一般权限有可读权限、可写权限、可执行权限,三三为一组。
标识 | 代表的权限(对文件) | 代表的权限(对目录) |
---|---|---|
r | 拥有读取文件内容的权限 | 具有浏览该目录信息的权限 |
w | 拥有修改文件内容的权限 | 拥有删除移动目录内文件的权限 |
x | 拥有执行文件的权限 | 具有进入目录的权限 |
– | 没有某一权限 | 没有某一权限 |
例如:
权限符号 | 说明 |
---|---|
r— — | 只读 |
— w — | 仅可写 |
— — x | 仅可执行 |
…… | …… |
例如
//test.c的拥有者对该文件有r、w权限,没有x权限
//test.c所属组对该文件有r权限、没有w、x权限
//其他人对该文件有r权限、没有w权限、没有x权限
-rw-r--r-- 1 root root 79 Jan 22 15:00 test.c
权限只有《有、无》两种结果,所以可使用2进制,1代表有某一权限,0代表没有,Linux对于权限的表达方法可以用十进制的数字
权限符号 | 说明 | 二进制 | 十进制 |
---|---|---|---|
r— — | 只读 | 100 | 4 |
— w — | 仅可写 | 010 | 2 |
— — x | 仅可执行 | 001 | 1 |
…… | …… | …… | …… |
要注意三个三个为一组。现在可能对这种表达的方式不能理解,修改权限的时候就可以理解了。
文件权限的修改
可以对文件的权限进行修改。
命令:chmod
功能:实际上是change mode 的缩写,功能是可以修改权限
格式:chmod 选项 更改权限 文件名。
说明:选项可写可不写,若有需要,可自行查阅man-pages
使用chmod有两种方式。
【方式一】
chmod 用户表示符+/-权限标识符 文件名
用户表示符有:
u
:代表拥有者g
:代表所属组o
: 其他用户a
:所有用户
加权限使用+
,减权限使用-
。
//例如
[YDY@VM-0-2-centos ~]$ ls -l -d ls_test
-rw-rw-r-- 1 YDY YDY 0 Apr 7 16:35 ls_test
[YDY@VM-0-2-centos ~]$ chmod u+x ls_test //给拥有者增加x权限
[YDY@VM-0-2-centos ~]$ ls -l -d ls_test
-rwxrw-r-- 1 YDY YDY 0 Apr 7 16:35 ls_test
[YDY@VM-0-2-centos ~]$ chmod g-w ls_test //给所属组减去w权限
[YDY@VM-0-2-centos ~]$ ls -l -d ls_test
-rwxr--r-- 1 YDY YDY 0 Apr 7 16:35 ls_test
[YDY@VM-0-2-centos ~]$ chmod o+wx ls_test //给其他人加上w和x权限
[YDY@VM-0-2-centos ~]$ ls -l -a ls_test
-rwxr--rwx 1 YDY YDY 0 Apr 7 16:35 ls_test
[YDY@VM-0-2-centos ~]$
【方式二】
chmod 数字权限表示符 文件名
不需要使用用户表示符,直接使用数字权限表示符来修改
例如:
文件拥有者、所属组的修改
文件拥有者修改
命令:chown
格式:chown 用户 文件名
功能:修改文件的拥有者
//例如
[root@VM-0-2-centos ~]# ll
total 16
-rw-r--r-- 1 root root 79 Jan 22 15:00 test.c //文件的拥有者为root用户
[root@VM-0-2-centos ~]# chown YDY test.c //将文件的拥有者改为YDY的普通用户
[root@VM-0-2-centos ~]# ll
total 16
-rw-r--r-- 1 YDY root 79 Jan 22 15:00 test.c //文件拥有者变为YDY的普通用户
实际上,只有root用户可以这样直接更改拥有者,因为root用户的权限最高。
这就好比,我把东西给你,你选择可以要,也可以选择不要,而root用户就相当于是老大,你不要也得要。
所以使用普通用户的来直接更改文件的拥有者是不行的
//例如
-rwxrwxrwx 1 YDY YDY 0 Apr 10 15:26 test_chmod //本来拥有者为YDY用户
[YDY@VM-0-2-centos test_commands2]$ chown root test_chmod
chown: changing ownership of ‘test_chmod’: Operation not permitted //提示,操作不被允许
那么普通用户如何更改文件的拥有者?
答案是:暂时赋予最高权限,相当于暂时给了你这个普通用户,root的能力。可使用sudo
命令,前提是这个普通用户已经被root用户信任。
还可以使用chown
同时修改拥有者和所属组
格式为:chown 拥有者用户:所属组用户 文件名
[root@VM-0-2-centos ~]# ll
total 16
-rw-r--r-- 1 root root 79 Jan 22 15:00 test.c
[root@VM-0-2-centos ~]# chown YDY:YDY test.c //同时修改拥有者和所属组
[root@VM-0-2-centos ~]# ll
total 16
-rw-r--r-- 1 YDY YDY 79 Jan 22 15:00 test.c//修改成功
文件所属组修改
命令:chgrp
格式:chgrp 用户名 文件名
功能:修改文件的所属组
//例如
[root@VM-0-2-centos YDY]# ll
total 16
-rw-r--r-- 1 root root 0 Apr 10 16:01 test_chgrp //本来所属组为root用户
[root@VM-0-2-centos YDY]# chgrp YDY test_chgrp //将文件的所属组修改为YDY普通用户
[root@VM-0-2-centos YDY]# ll
total 16
-rw-r--r-- 1 root YDY 0 Apr 10 16:01 test_chgrp //修改成功
和修改文件的拥有者差不多,直接修改所属组也只有root用户可以,否则要暂时使得普通用户获得最高权限。
关于权限掩码
不知道你有没有发现,当你创建文件的时候,所有文件的权限都是一样的。
//我的linux系统上
[YDY@VM-0-2-centos test_commands2]$ touch test_file1 test_file2 test_file3
[YDY@VM-0-2-centos test_commands2]$ ll
total 0
-rw-rw-r-- 1 YDY YDY 0 Apr 10 16:15 test_file1
-rw-rw-r-- 1 YDY YDY 0 Apr 10 16:15 test_file2
-rw-rw-r-- 1 YDY YDY 0 Apr 10 16:15 test_file3
为什么权限我的linux系统上的文件的权限默认都是rw-rw-r--
?
而当我新建目录文件的时候,默认权限都是rwxrwxr-x
.
[YDY@VM-0-2-centos test_commands2]$ mkdir test_dirt1 test_dirt2 test_dirt3
[YDY@VM-0-2-centos test_commands2]$ ll
total 12
drwxrwxr-x 2 YDY YDY 4096 Apr 10 16:21 test_dirt1
drwxrwxr-x 2 YDY YDY 4096 Apr 10 16:21 test_dirt2
drwxrwxr-x 2 YDY YDY 4096 Apr 10 16:21 test_dirt3
-rw-rw-r-- 1 YDY YDY 0 Apr 10 16:15 test_file1
-rw-rw-r-- 1 YDY YDY 0 Apr 10 16:15 test_file2
-rw-rw-r-- 1 YDY YDY 0 Apr 10 16:15 test_file3
事实上:
也就是:
- 普通文件的默认起始权限是:
rw-rw-rw-
- 目录文件的默认起始权限:
rwxrwxrwx
但是我的Linux系统上,却不一样?
这要涉及到权限掩码,可以使用umask命令查看你的系统的权限掩码
记住一个公式:
这个公式的意思是,把mask按位取反,然后和相应的默认起始权限按位与,最后得到相应的默认权限。
以我的linux系统为例。
我的linux的权限掩码为0002,取后三个,也就是002,002对应二进制000 000 010.取反后和666默认起始权限,也就是110 110 110按位与,最后得到664,也就是
rw-rw-r
.
关于目录的权限
目录的权限限制了什么呢?
- 可读权限: 如果用户对于目录没有可读权限, 则该用户无法用ls等命令查看目录中的文件内容.
- 可写权限: 如果用户对于目录没有可写权限, 则该用户无法在目录中创建文件, 也无法在目录中删除文件.
- 可执行权限:如果目录没有可执行权限,则该用户无法使用
cd
命令切换到该目录中
那么按照逻辑来说,只要我这个用户拥有了可写的权限,是不是就可以不受限制地在该目录下新建和删除文件了呢?
[test_user@VM-0-2-centos ~]$ ll
total 4
drwxrwxrwx 2 test_user test_user 4096 Apr 10 19:43 user_dirt1 //目录
[test_user@VM-0-2-centos test_user]# cd user_dirt1 //切换到该目录
[test_user@VM-0-2-centos user_dirt1]$ ll
total 0
-rw-rw-r-- 1 YDY YDY 0 Apr 10 19:28 user_file1 //目录下的文件拥有者和所属组为YDY
[test_user@VM-0-2-centos user_dirt1]$ rm -rf user_file1 //尝试删除
[test_user@VM-0-2-centos user_dirt1]$ ll
total 0 //居然删除成功了!
为什么我YDY是拥有者和所属组,却可以被你test_user用户给删了呢?这样真的不太地道。
为了解决这个不地道的事情, Linux引入了粘滞位的概念
【粘滞位】
使用粘滞位可以满足other在特定的目录下创建文件并且写入,但是只有文件的拥有者才能删除该目录下的文件。
如何设置为目录设置粘滞位?
答:为目录的other添加t
权限 ,就设置了粘滞位,可使用命令chmod o+t 目录名
此时该目录下的文件就不允许其他人随便删除了
Linux权限的理解 | 粘滞位 |权限掩码 |文件类型相关推荐
- linux粘滞位权限,Linux中的特殊权限粘滞位(sticky bit)详解
Linux下的文件权限 在linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问.最为我们熟知的一个文件或目录可能拥有三种权限,分别是读.写.和执行操作, ...
- Linux入门:权限管理之粘滞位
关于linux下粘滞位(sticky位): 粘滞位(Sticky bit): 如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可.粘滞位出现可执 ...
- 粘滞位权限与文件保护
通常情况下用户只要对某个目录具备w写入权限,便可以删除该目录中的任何文件,不论这个文件的权限是什么.例如我们进行以下的操作: 以root用户的身份创建目录file,并赋予file目录777权限.在fi ...
- linux应用程序设置粘滞位,Linux粘滞位的设置
粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标.最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件.如果不为目录设置粘滞位,任 ...
- linux应用程序设置粘滞位,Linux中的粘滞位
Sticky 位是一个访问权限标志位,可以用来标示文件和路径. 历史: 粘滞位是在1974年Unix的第5版中引入的,用来设置可执行文件.当可执行文件设置粘滞位之后,它能够指示操作系统在程序退出后,保 ...
- linux应用程序设置粘滞位,Linux中设置粘滞位
关于目录有三种权限: r - -可读权限,可以列出目录下的内容(但如果要列出目录下的内容必须要能进入这个目录所需要的权限为 r-x) -w-可写权限,可以往目录里些内容(但是如果如果往目录里面些内容, ...
- 【Linux】Linux权限管理 —— shell运行原理 | 权限 | 目录权限 | 粘滞位 | 权限掩码umask
Linux权限及相关指令 1. shell命令以及运行原理 2. Linux权限管理 2.1 权限相关概念 2.1.1 用户分类 2.1.2 如何用户切换 2.2 权限的两要素 2.2.1 人 2.2 ...
- 【Linux】权限管理 _目录权限 _umask _粘滞位[学习总结 _复习专用]
1.Linux权限的概念 Linux下有两种用户:root.普通用户. root:可以在Linux系统下做任何事情,不受权限的限制 普通用户:在Linux下做有限的事情 root用户的命令提示符是&q ...
- 【Linux】什么是粘滞位
文章目录 前言 粘滞位 用法 谁能删除 前言 我们知道了用户一旦拥有了目录的写权限,就可以删除目录中的文件,而用户本身可能没有这个文件的写权限.这样就会造成:我张三创建的一个文件,莫名其妙被李四删掉的 ...
- linux系统下的粘滞位
1.粘滞位的引出: 用户对目录具有(w)写的权限就可以删除目录(不是用户自己创建的目录)中的文件,哪怕该用户对该文件(不是用户自己创建的文件)没有写(w)的权限 用户具有目录写的权限 root用户创建 ...
最新文章
- 绝命沙虫 精度,double,模拟 牛客白月赛44
- Android Broadcast 和 BroadcastReceiver的权限限制
- 蓝桥杯2013年省赛C/C++大学组 C/C++
- [翻译] RAReorderableLayout
- 理想的工作永远不存在
- Atitit 文件远程传输读写协议 scp http ftp nfs webdav smb D:\Program Files\Git\usr\bin\scp.exe 4.密码安全策略不完善 在
- win7修复计算机消失,Win7一键修复丢失DLL,常见dll丢失一键修复方法
- 随机数练习1,和电脑比roll点
- Java jdk 1.8版本安装包
- 35、html制作QQ彩贝热销时装页面(注意:需要素材)
- mysql处理微信表情
- 樊登读书分享ppt_樊登读书《干法》学习分享
- 百度云不限速下载最新破解真好用
- 【GNN】GN:更通用的 GNN 架构
- 手机号与邮箱正则表达式
- 信息系统故障分析案例---------记一次性能检测系统故障排查
- linux基础 linux命令跟踪 strace命令
- SharePoint Designer 2013 和 Visio 2013 中的工作流开发
- maven工程私服仓库配置(阿里云仓库)
- 《清华园日记》读后感
热门文章
- word怎么竖向选中,word怎么文字竖排的两种方法
- android自定义view星空,自定义RecyclerView星空列表「多item且互相交错,自定义列表,ViewGroup级」...
- tif构建金字塔失败arcgis_ArcGIS影像构建金字塔小窍门
- [杀形态验证]3D准确率达98
- idea怎么运行c语言程序,IntelliJ IDEA 10.0 64位运行方法
- 离线地图开发 支持 局域网内二次开
- 大学生网页制作之美食篇html+css静态网页设计
- 使用 Kubernetes Ingress 对外暴露服务
- hdu-5745 La Vie en rose bitset
- SEO网站关键词挖掘策略