Linux文件的所有权与权限
要了解Linux的权限,需要和Linux的用户与组的概念一并理解,不了解的同学请参考Linux的用户和组
简介
在Linux中,每个文件除了有用户和组的信息以外,还有其对应的权限。可使用来查看。
[root@C7 ~]# ls -l /etc/fstab
-rw-r--r--. root root Sep : /etc/fstab
看第一个字段的第二位至第十位,一共九位。
-rw-r--r--.
左三位(rw-):表示文件所有者的权限。
中三位(r--):表示文件所有组的权限。
右三位(r--):表示其他人的权限。
注意:某个进程对于文件是否具备足够的权限,取决于运行该进程的用户对其的权限!
进程安全上下文
进程对文件的访问权限应用模型:
- 检查进程的属主是否与文件的属主一致,若一致则应用文件属主权限;否则下一步。
- 检查进程的属组是否与文件的属组一致,若一致则应用文件属组权限;否则下一步。
- 应用文件其他人权限。
读写执行
对于文件:
- 读(readable,简写r):可以获取文件的数据。
- 写(writable,简写w):可以增删改文件的数据。
- 执行(executable,简写x):若文件为可执行的格式,例如bash脚本、PHP文件等,则可以执行文件。
对于目录:
- 读:可以使用ls命令获取目录的内容,不包含ls -l。
- 写:可以修改目录列表,即增加、删除和重命名目录下的文件。
- 执行:可以对目录使用cd和ls -l命令。
权限组合机制
Linux的权限除了使用rwx字母表示以外,还可以使用八进制数字表示,如下表所示。
一般我们在使用过程中,也习惯使用八进制表示法。
| 权限 | 二进制 | 八进制 |
| --- | 000 | 0 |
| --x | 001 | 1 |
| -w- | 010 | 2 |
| -wx | 011 | 3 |
| r-- | 100 | 4 |
| r-x | 101 | 5 |
| rw- | 110 | 6 |
| rwx | 111 | 7 |
chmod命令
简介
chmod用于修改文件的权限。
普通用户只能修改属主为自己的文件,root可以修改所有文件。
语法格式
第一种语法格式表示以字符表示法设置权限;第二种语法格式表示以八进制表示法设置权限;第三种语法格式表示参照某个文件设置权限。
在选项当中,基本只会用到递归-R, --recursive(用于修改目录及其子文件的权限)和--reference=RFILE(见下文“权限复制”)
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
描述
chmod可以根据mode来修改文件的权限,文件的权限也叫作mode bits。mode可以是以字符表示法修改权限或者是以八进制表示法来重置新的权限。
字符表示法
字符表示法的格式如下。
[ugoa...][[+-=][perms...]...]
ugoa分别表示所有者(user)、所有组(group)、其他(other)和所有人(all)。
perms是具体的权限,可以为空(表示无权限)或者为rwxXst中的任意字母。Xst是特殊的权限,目前暂时不做介绍。
[root@C7 ~]# ls -l mode.txt
-rw-r--r-- root root Dec : mode.txt
[root@C7 ~]# chmod u+x mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxr--r-- root root Dec : mode.txt
[root@C7 ~]# chmod o-r mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxr----- root root Dec : mode.txt
[root@C7 ~]# chmod g=rw mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxrw---- root root Dec : mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxrw-rw- root root Dec : mode.txt
[root@C7 ~]# chmod a= mode.txt
[root@C7 ~]# ls -l mode.txt
---------- root root Dec : mode.txt
也可以是ugo的任意字母。表示参照其他成员配置权限。
[root@C7 ~]# ls -l mode.txt
-rwxrw---- root root Dec : mode.txt
[root@C7 ~]# chmod o=g mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxrw-rw- root root Dec : mode.txt
字符表示法可以有多个,使用逗号隔开。
[root@C7 ~]# chmod u=rwx,g=rw,o=r mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxrw-r-- root root Dec : mode.txt
如果省略了ugoa的话,那么默认表示a,但是如此设置权限会受到umask的影响。umask后面会做介绍。
[root@C7 ~]# chmod =rwx mode.txt
[root@C7 ~]# ls -l mode.txt
-rwxr-xr-x root root Dec : mode.txt
[root@C7 ~]# umask
操作符“+”表示增加权限;操作符“-”表示减少权限;操作符“=”表示增加权限并删除没提到的权限,除了目录的SUID和SGID。
八进制表示法
八进制表示法由4位八进制组成,第一位是特殊权限位表示SUID(4)、SGID(2)或者sticky(1),第二位表示用户,第三位表示组,第四位表示其他。
不一定要4位都写出来,省略的话表示前置0。例如
chmod 755 等价于 chmod 0755
chmod 7 不等价于 chmod 0700 而等价于 chmod 0007
chmod与字符链接文件
chmod不会修改字符链接文件的权限(因为chmod的系统调用无法做到),而是修改字符链接文件所指向的文件的权限。但是,如果是递归修改目录的话,那么就会忽略掉目录下字符连接文件了。
权限复制
chmod可以以某个文件作为参照物来设置权限,类似于将某个文件的权限复制到一个或多个文件上。
[root@C7 ~]# ls -l {,,,refer}.txt
-rw-r--r-- root root Dec : .txt
-rw-r--r-- root root Dec : .txt
-rw-r--r-- root root Dec : .txt
-rwxrwxrwx root root Dec : refer.txt
[root@C7 ~]# chmod --reference=refer.txt {,,}.txt
[root@C7 ~]# ls -l {,,,refer}.txt
-rwxrwxrwx root root Dec : .txt
-rwxrwxrwx root root Dec : .txt
-rwxrwxrwx root root Dec : .txt
-rwxrwxrwx root root Dec : refer.txt
[root@C7 ~]# ls -ld testdir
drwxr-xr-x root root Dec : testdir
[root@C7 ~]# chmod --reference=refer.txt testdir
[root@C7 ~]# ls -ld testdir
drwxrwxrwx root root Dec : testdir
chown命令
简介
用于修改文件的属主/所有者(owner)和属组/所有组(group),属主和属组合起来也称为ownership。
语法格式
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
第一种格式有以下几种情况:
- 仅修改文件的属主。
# chown OWNER FILE
- 修改文件的属主和属组。
# chown OWNER:GROUP FILE
- 修改文件的属主和属组,且属组为属主的GID。
# chown OWNER: FILE
- 仅修改文件的属组,效果等同于chgrp,因此本博文不会讨论chgrp命令。
# chown :GROUP FILE
常用选项
--from=[CURRENT_OWNER]:[CURRENT_GROUP]:当且仅当文件的ownership为这里指定的属主和属组的时候,才会修改文件的权限;如果属主和属组都指定了,那么必须同时满足才会修改;如果省略了属主或者属组,那么只要满足了给出的属主或者属组,就算会发生修改操作。这个选项在结合-R选项递归修改的时候比较有用。
[root@C7 ~]# ls -l .txt
-rwxrwxrwx test03 test03 Dec : .txt
[root@C7 ~]# chown --from=:test03 test01:test01 .txt
[root@C7 ~]# ls -l .txt
-rwxrwxrwx test01 test01 Dec : .txt
-H、-L和-P:影响当递归一个目录的时候,如何处理字符链接文件的。
umask
在Linux上,当用户创建文件或者目录的时候,会自动为文件或者目录创建一个权限。
[root@C7 ~]# touch .txt
[root@C7 ~]# ls -l .txt
-rw-r--r-- root root Dec : .txt
[root@C7 ~]# mkdir umask_dir
[root@C7 ~]# ls -ld umask_dir
drwxr-xr-x root root Dec : umask_dir
这种机制,我们就叫做Linux的umask。
umask中的u表示user,mask表示掩码。也就是说umask设置的是创建文件或者目录的时候,应该被剥夺的权限。
umask是shell的内置命令,语法格式如下:
umask [-p] [-S] [mode]
不带选项和参数的时候,是以八进制表示法显示当前shell中的umask值。
-p和-S也是用于显示umask的值的。前者的输出格式可用于再次作为命令执行,后者的输出格式是字符表示法。
如果加上-S选项以字符表示法显示的话,那么显示的就是ugo目前所具备的权限,而不是被拿掉的权限了。
[root@C7 ~]# umask [root@C7 ~]# umask -p
umask
[root@C7 ~]# umask -S
u=rwx,g=rx,o=rx
只有当需要重新设置umask的时候,才会带上mode参数。
[root@C7 ~]# umask [root@C7 ~]# umask
[root@C7 ~]# umask
在Linux中,默认不允许文件具备执行的权限。因此,对于文件的默认创建权限为“666-umask”,对于目录的默认创建权限为“777-umask”。
即便我们设置的umask刚好可以使得文件具备可执行权限,也是不行的。权限具体是如何计算的,可以看一下参考资料,涉及一些数学知识,我不太懂。
[root@C7 ~]# umask
[root@C7 ~]# touch umask.txt
[root@C7 ~]# ls -l umask.txt
-rw-r--r-- root root Dec : umask.txt
在Linux中,umask只会影响新建文件的ugo的rwx权限,不会影响新建文件的suid、sgid和sticky权限。因此umask中的第一个0表示的是八进制,可以省略,而不是表示用来设置suid、sgid和sticky权限。
[root@C7 ~]# umask
-bash: umask: : octal number out of range
[root@C7 ~]# umask
-bash: umask: : octal number out of range
在当前会话中设置的umask只会在当前的shell(bash)进程中有效,退出会话后就无效了。
要想使其永久生效的话,一般是写入相关的配置文件中。
Linux文件的所有权与权限的更多相关文章
- #Linux学习笔记# Linux文件的属性以及权限说明
1. Linux文件的属性 关于Linux文件的属性的说明和设置请参考鸟哥Linux私房菜:Linux 的文件权限与目录配置 2. 目录和文件的权限意义 在Linux系统中,每个文件都有三种身份的权限 ...
- Unix/Linux文件类型及访问权限
在Linux系统中,有7种文件类型. 普通文件 (regular file) 目录文件 (directory) 链接文件 (symbolic link) 管道文件 (FIFO) 套接字文件 (sock ...
- linux文件及目录的权限管理
一.文件的权限 1.文件权限的查看 命令:ls -l 可以使用ll命令代替 ls -l 2.ls -l 所包含的信息 (1)权限信息 (-rw-r--r-- ) 一共有10位 a.第一位:表示文件信息 ...
- 15、linux文件、目录的权限及如何改变权限(root用户不受任何权限的限制)
15.1.linux普通文件的读.写.执行权限说明: r:读,表示具有读取\阅读文件内容的权限: w:可写,表示具有新增,修改文件内容的权限: 如果没有r配合,那么vi编辑文件会提示无法编辑(但可以强 ...
- Linux文件(夹)属性与权限
文件属性与权限,文件权限设置 参考资料:鸟哥的Linux私房菜 用户与用户组 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...
- Linux 文件的读写执行权限的说明
文件的读写执行权限的说明 X 进入目录的权限: cd 1.文件本身是可执行的 2.普通用户还具备r的权限 3.root用户只需要有r的权限即可 r 查看目录/文件的内容 :ls dir 没有读的权 限 ...
- linux文件访问过程和权限
第1章 文件访问过程详解 1.1 文件访问过程 第2章 权限 2.1 对于文件rwx含义 r读取文件内容 w修改文件内容 需要r权限配合 只有w权限的时候,强制保存退出会导致源文件内容丢失 x权限表示 ...
- Linux文件和目录的权限笔记
查看文件或者目录的权限命令:ls -al # -a 表示全部文件包含隐藏文件,-l 表示列出每个文件的详细信息 比如执行 ls -al total 115 drwxr--x--- 4 root roo ...
- Linux 文件与目录的权限
文件默认权限:umask umask就是指定“目前用户在新建文件或目录时候的权限默认值”.查询umask有以下两种方式: 目录与文件的默认权限是不一样的: - 文件,默认没有可执行(x)权限,只有r. ...
随机推荐
- 使用ImageMagick 在图片上绘制粗斜体的中文也许是一个错误。
测试发现: ImageMagick使用中文字体,在图片上绘制带粗或斜体的中文,看不到效果. 如果使用英文字体,绘制粗或斜体的英文,99%都有效果. 今天无意看到一篇文章提到: convert -lis ...
- react入门-props.children
在ReactDOM.render里面我们写我们的自定义组件的时候有时需要加一下子元素进去: <!DOCTYPE html> <html lang="en"> ...
- win32控制台变服务代码
1.服务的主函数以及以及函数的声明,全局变量的定义 #define SERVICE_NAME "srv_follow" SERVICE_STATUS g_ServiceStatus ...
- 那些年实用但被我忘掉javascript属性.onresize
//获取屏幕宽度并动态赋值 var winWidth = 0; var winHeight = 0; function findDimensions() //函数:获取尺寸 { //获取窗口宽度 if ...
- raphael.js 给元素 hover 添加glow() 外发光
用raphael.js 给 svg画布里面添加个元素,嗯就圓好了,男人一般都喜欢圆形的东西,比如xx , xxx , 还有xxx $(document).ready(function() { var ...
- iOS 远程推送注册的小问题
iOS8有了新方法,用新方法后,用7.0版本运行会奔溃.只要加一句判断就ok: #ifdef __IPHONE_8_0 // 在 iOS 8 下注册苹果推送,申请推送权限. UIUserNotific ...
- pytorch函数之torch.normal()
Returns a Tensor of random numbers drawn from separate normal distributions who’s mean and standard ...
- MVC常用特性使用
简介 在以前的文章中,我和大家讨论如何用SingalR和数据库通知来完成一个消息监控应用. 在上一篇文章中,我介绍了如何在MVC中对MongoDB进行CRUD操作. 今天,我将继续介绍一些在开发中非常 ...
- Flask源码解析:Flask上下文
一.上下文(Context) 什么是上下文: 每一段程序都有很多外部变量.只有像Add这种简单的函数才是没有外部变量的.一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行.你为了使他们运行, ...
- Uploadify3.2中文提示
版本:Uploadify Version 3.2官网:http://www.uploadify.com Uploadify是一款基于Jquery的上传插件,用起来很方便.但上传过程中的提示语言为英文, ...