说说Linux文件权限那些事儿
首先我们要知道Linux的标准文件权限和安全机制与Unix的一致。因此要学习这方面的知识,我们能够參考一下Unix方面的书籍。
文件全部权
在Linux系统中。一切都是文件。
因此文件既包括普通文件也包括文件夹,下文也就不再区分文件和文件夹了。
说到Linux文件权限(permission),我们不得不先说说文件的全部权问题。
在Linux系统中,文件有两个全部者:用户全部者(u)和组全部者(g)。文件的组全部者独立于拥有该文件的用户。也就是说
大多数情况下。文件全部者所在的用户组就是文件的组全部者,但这不是必须的。文件的用户全部者不一定属于文件的组全部者。这两者之间没有什么必定的联系。所以假设你赋予文件的组全部者某个权限,并不会同一时候赋予给用户全部者。假设想要实现此功能,最佳的方法就是将用户全部者加入到组全部者的成员中。
显示文件的全部权
使用ls -l能够显示文件的用户和组全部者:
$ ls -l
drwxr-xr-x 5 sun family 4096 Mar 4 11:33 dir2
drwxr-xr-x 3 sun family 4096 Mar 4 11:40 dir3
-rw-r--r-- 1 sun family 711 Mar 4 11:21 exp
-rwxr-xr-x 1 sun family 5189 Mar 5 08:20 feb
更改文件的全部权
假设要更改文件到的全部权。能够使用chown和chgrp命令。chown(大多数情况下。仅仅能使用root用户使用)能够更改一个或多个文件的用户全部者:
# chown sun hello.c
chgrp则能够用来改动文件或文件夹属于的用户组。
文件的权限
Linux对于文件的权限设置事实上是非常好理解的。拥有r权限,便能够读取文件。查看文件的内容;拥有w权限,便能够更改文件的内容;拥有x权限,并且该文件是二进制可运行文件那么就能够运行该文件。
可是对于文件夹的话,就没有那么好理解了。假设用户拥有某文件夹的运行(x)权限,那么他就能够cd到该文件夹;假设要列出该文件夹下的文件(也就是使用ls命令)。那么就必须要有对文件夹的读(r)权限。假设您仅仅须要訪问该文件夹。那么您仅仅须要对该文件夹有x权限就够了。有一点须要强调的是,假设你使用ls -l命令显示文件夹下的文件的具体信息,可是你此时对该文件夹并没有运行权限。那么你将得到例如以下的结果:
?--------- ? ?
? ? ?
hello.c
?
--------- ? ? ?
? ? deb.txt
?--------- ? ? ? ? ? strip.c
你会发现结果中仅仅显示了文件的名字。其它信息基本都是?
。事实上这是由于文件的大小等信息须要从磁盘信息中才干推断出来,因此必须具有对文件夹的运行(x)权限,才干使-l选项真正发挥效果。
另外另一点须要注意,删除文件不须要对文件具有写入(w)权限,仅仅须要对该文件夹具有写入(w)权限就可以。可是在这样的情况下,系统会提示你是否要覆盖对文件的写保护设置。
改动文件的权限
要改动文件的权限,能够使用chmod命令,注意不要与chown(改动文件的全部者)混淆。
事实上我们能够这样区分:chown事实上是“change owner”(改变主人)的简写。而chmod事实上是“change mode”
(改变(訪问)模式)的简写。
用符号表示法改动
要加入(使用“+”)用户全部者的写权限能够这样:
$ chmod u+w hello.c
要剥夺(使用“-”)组全部者的读权限能够这样:
$ chmod g-r hello.c
要设置用户全部者具有特定的权限能够使用“=”:
$ chmod u=rw hello.c
PS:须要说明的是,这里u代表用户全部者。g代表组全部者,o代表其它用户,a代表全部用户。
用数字表示法改动
在使用之前我们须要先理解一下数字表示法的原理。在数字表示法中,依据每种权限是否被许可,将其设置为0或1。并将得到的三位二进制数转换为八进制数。
将这三个八进制数组合在一起便是该文件权限的数字表示。当中r相应的权值为4,w相应的权值为2,x相应的权值为1.
| 用户 | 组 | 其它 | |
| 权限 | r w x | r - x | r - - |
| 二进制 | 1 1 1 | 1 0 1 | 1 0 0 |
| 八进制 | 7 | 5 | 4 |
| 数字表示法 | 754 | ||
看完这个表格我想你应该大致明确了,数字表示法的基本原理。以下让我们具体操作一下:
$ chmod 754 hello.c
数字表示法和符号表示法各有优劣,前者使用起来更加简洁,运行一条命令就能够完毕我们想要的结果。缺点是这样的表示法不直观令人费解;而后者非常直白。通俗易懂,可是运行起来效率不高,往往须要运行几条命令才干达到我们要的结果(假设你想要的结果复杂的话)。
使用umask指定默认的文件权限
讲完数字表示法,我们不得不提一下Linux文件管理中的一个重要的命令——umask命令。
依据维基百科上的说法。umask是一串二进制码,使文件创建时权限具有一个初始值。当中曾这样做比喻,mask码就相当于一个最后的过滤器,每当文件创建时就剥除文件相应的权限。每当你创建了一个文件,系统会依据umask码自己主动为你设置文件的权限。
当某个权限的二进制值为1时表示禁止该权限。举个样例来说,假如umask码为0022,在这里仅仅有后三位022是我们所须要的。第一位是为特殊权限设置,我们暂不讨论。
当你创建文件夹exa时,系统中便会这样计算该文件夹的权限:777-022=755。对于文件来说,这一数字的最大值各自是6。系统不同意你在创建一个文本文件时就赋予它运行权限,必须在创建后用chmod命令添加这一权限。文件夹则同意设置运行权限。这样针对文件夹来 说。umask中各个数字最大能够到7。
$ umask
0022
$ mkdir example
$ ls -ld example/
drwxr-xr-x 2 2014012537 xg+jsj14 4096 Mar 12 12:02 example/
參考文献
- Robert Love.Linux系统编程。2014,5.人民邮电出版社
- Scott Grannerman.Linux命令速查手冊,2009.10.人民邮电出版社
- Aeleen Friscb.Unix与Linux系统管理,2006.11.清华大学出版社
- 维基百科-umask.https://en.wikipedia.org/wiki/Umask
uid=1919063545">umask命令的作用

本作品採用知识共享署名-非商业性使用-同样方式共享 4.0 国际许可协议进行许可。
说说Linux文件权限那些事儿的更多相关文章
- 修改linux文件权限
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...
- Linux:文件权限
Linux:文件权限 1.文件权限 ☆文件所有者 ☆用户组 ☆其他人 ☆ROOT 说明: Linux系统中默认所有系统上的账号与一般身份用户,还有那个root的相关信息记录在/etc/passwd文件 ...
- Linux 文件权限总结
在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...
- Linux&shell 之Linux文件权限
写在前面:案例.常用.归类.解释说明.(By Jim) Linux文件权限用户useradd test (添加用户test)userdel test (删除用户test)passwd test(修改用 ...
- linux文件权限整理
网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...
- 修改linux文件权限命令:chmod 【转载】
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod 命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...
- linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)
文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...
- Linux 文件权限于目录配置
用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...
- Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
随机推荐
- Python shell 控制台,有个快捷键可以向dos那样通过上下键来选择之前输入的内容?
Alt + p 往前: Alt+n 从头开始历史输入
- Python 进阶 之 socket模块
Python Socket 编程详细介绍 转载地址:https://gist.github.com/kevinkindom/108ffd675cb9253f8f71?signup=true Pytho ...
- springboot hystrix turbine 聚合监控
1.新建Module eureka-monitor-client 2.父级pom中添加module 3.编写eureka-monitor-client 中的pom <?xml version= ...
- redis的持久化(RDB&AOF的区别)
RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...
- 使用Bot Service创建Bot Framework
创建Bot Service:进入至Azure控制台中,新建Bot Service,如不知道Bot Service在哪个选项中,可以先查找Bot Service再创建 在弹出的查询结果中,选择Bot S ...
- opencv图像二值化的函数cvThreshold()。 cvAdaptiveThreshol
OpenCV中对图像进行二值化的关键函数——cvThreshold(). 函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* sr ...
- POJ 1988 Cube stacking【并查集高级应用+妙用deep数组】
Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ...
- 机器人搬重物(BFS)
机器人搬重物 时间限制: 1 Sec 内存限制: 128 MB提交: 22 解决: 10[提交][状态][讨论版] 题目描述 机 器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一 ...
- 设计模式-观察者模式(Observer Pattern)
本文由@呆代待殆原创,转载请注明出处:http://www.cnblogs.com/coffeeSS/ 观察者模式简述 观察者模式的使用非常广泛,常用于建立起一种多对一的关系,该模式一定会包含两个角色 ...
- 洛谷 - Sdchr 的邀请赛 T4 信息传递
(乱搞艹爆正解系列) 对不起,由于博主太弱了,并不会正解的多项式exp(甚至多项式exp我都不会2333). 只能来说一说我是怎么乱搞的啦QWQ 首先这个题最关键的性质是: 一个在原置换 g 中长度为 ...