Linux文件目录权限浅谈

摘要:
具有写(w)权限意味着在此目录下创建文件和目录。(5) 在什么情况下可以删除文件或目录?是否可以删除文件及其自身的权限和所有者取决于其上级目录的权限。也就是说,当前用户对上层目录具有写(w)和执行(x)权限,那么user1无法强制保存文件(--但文件属于其他用户,并且文件和目录没有写权限,即使目录中的文件对user1没有写权限。

1、基本权限三种
(1)r (read) 读

针对目录,有读(r)权限就代表能对此目录有列表功能,就是可以执行ls命令进行查看,另外还有cp的功能。
针对文件,有读(r)权限就代表能对此文件有阅读功能,可以通过cat等命令查看文件内容。

(2)w (write) 写 
针对目录,有写(w)权限就代表着在此目录下创建文件和目录,可以通过touch,mkdir等命令创建文件和目录,另外还可以删除此目录下的文件。
针对文件,有写(w)权限就代表着对此文件可以写入新的内容和修改文件内容。

(3)x (execute) 执行
针对目录,有执行(x)权限就代表能进入此目录,利用cd等命令进入此目录
针对文件,有执行(x)权限就代表可以执行此文件。

例题:
(4)拷贝文件到目录中,需要对此目录具备哪些权限?
-----拷贝文件到目录时,需要写数据到目录中,所以需要对此目录有写的权限(w),另外写的动作是一个执行的过程,所以还需要对此目录有执行(x)权限才行。

(5)什么情况下可以删除文件或者目录
-----能不能删除文件与它本身的权限和owner,group无关,能否删除需要看它的上一级目录的权限,也就是说当前用户对上一级目录有写(w)和执行(x)权限,就可以删除此目录下的文件或子目录
是否能删除目录,要求
1、如果是空目录,只要对它的上级有写(w)和执行(x)权限,就可以删
2、如果是非空目录,那么当前用户要对这个目录里的包括上级目录、本身目录以及所有的子目录都有写(w)和执行(x)权限,才可以删除非空目录。

(6)什么时候会出现强制保存的选项?什么时候可以强制保存,什么时候不能?
只有当用户对文件没有写权限的时候,才会在保存时出现要你使用!强制保存的选项;比如上级目录对user1没有写权限,目录里的文件对user1也没有写权限,那么user1不能强制保存这个文件(--但是这个文件是属于其它用户的,才不能强制保存,如果这个文件就是属于user1,文件和目录都没有写权限,也可以强制保存)

而如果把上级目录改为对user1有写权限,就算是目录里的文件对user1没有写权限,user1也可以强制保存这个文件,并且保存后,属主和属组会变为user1;这种情况会比较混乱(特别是文件服务器的情况),所以目录一般默认权限就是755,避免除开目录属主外的用户能够写

--总结:
(1)只有当用户对文件没有写权限的时候,才会在保存时出现要你使用!强制保存的选项
(2)你是文件的所有者,不管对上级目录还是文件本身有何权限,都可以强制保存。
(3)你不是文件的所有者,对上级目录有写权限,就可以强制保存,并且强制保存后,owner和group改变成你自己这个用户了。

2、特殊位导致权限变化一般有以下两种
(1)特权位(s)
setuid s位在前三位
setgid s位在中间三位
特权位只针对文件有效,并且只能添加在权限位的前三位和中间三位;一个可执行文件拥有s位并且在前三位时,当别的用户来执行此文件,使用的权限是此可执行文件属主权限;如果一个可执行文件拥有s位并且在中间三位时,当别人的用户来执行此文件,使用的权限是此可执行文件属组的权限
[root@localhost test]# ll /etc/shadow
-r-------- 1 root root 1425 Mar 7 16:42/etc/shadow
[root@localhost test]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17 2006/usr/bin/passwd
--通过上面的权限可知,普通用户修改密码使用passwd能改自己的密码,但是密码是存放在/etc/shadow里,也就是说普通用户对/etc/shadow没有写的权限,但passwd可执行文件的前三位有s位,所以普通在调用passswd时是用的root的权限

(2)粘帖位(t)
当一个目录共享给其他用户使用并且用户可以上传文件和删除文件,但是只能删除自己的文件,那么就必须用到粘帖位(t),特别用在/tmp目录。只针对目录有效。
有t位的目录,任何用户在有权限的情况下是可以创建文件和目录,就算是有权限删除别人的文件或目录也不能删除,同时互相也不能强制保存修改,自己只能删除自己创建的目录,用于一些共享上传的文件服务器场合
[root@www test]# ll -ld /tmp/
drwxrwxrwt. 72 root root 12288 Aug 23 20:26 /tmp/

--s位和t位都是占用x位,那么是否有x位,主要是看s或t的大小写来判别;
大写,表示没有执行权限x位
小写,表示有执行权限x位

3、隐藏属性权限--
i 权限,具备i 权限的文件将无法删除,修改,重命名等
命令查看隐藏权限和修改隐藏权限有以下命令
lsattr --listfile attributes on a Linux second extended file system
chattr --change file attributeson a Linux second extended file system

[root@localhost /]# lsattr /etc/shadow
------------- /etc/shadow
[root@localhost /]# chattr +i/etc/shadow ---添加i 权限
[root@localhost /]# lsattr /etc/shadow --有了i 权限后,此文件就不能改动,root用户都不行
----i-------- /etc/shadow

4、修改权限,通常使用的命令
(1)chmod --change file access permissions
(2)chown --change file owner and group
(3)chgrp --change group

推荐阅读:

Linux ACL权限规划:getfacl,setfacl使用 http://www.linuxidc.com/Linux/2013-07/88049.htm

Linux权限补充:rwt rwT rws rwS 特殊权限 http://www.linuxidc.com/Linux/2013-07/87537.htm

Linux用户及用户组权限 http://www.linuxidc.com/Linux/2013-05/84980.htm

免责声明:文章转载自《Linux文件目录权限浅谈》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ansible主机清单Inventory文件hostsHBase脚本命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

plsql导出导入 表结构、表数据、存储过程等

导出:首先点击   TOOLS,选择  EXPORT TABLES  选中你需要导出的表,   勾选  “Create tables” 是因为在导入的数据库中没有此表 如果勾选"Drop tables" 而没有勾选 “Create tables” ,而数据库中没有此表,会报表和视图不存在 Output file 为导出的路径   如果你想导的表  数据记录...

解决安卓手机连接wifi总弹出“已登录到Wlan网络”

  安卓部分机型会在连接到wifi的时候不停地提示“已登录到Wlan网络”或者“登录到网络”,不小心点开那个提示就跳到一些广告网站了,这是由于原生安卓系统中开机后Google服务器会发送请求连接。当然,在国内,Google是无法访问的,一些手机厂家的工程师就把这个连接服务器设到了一些广告网站,让无数人心烦,下面教您彻底关闭“已登录到Wlan网络”或者“登录...

【video】使用FFmpeg将avi / mp4文件转换成m3u8/ts文件(用于近时播放)

准备工作 下载 :ffmpeg-N-102534-gec20b81302-win64-lgpl-shared.zip,并解压,FFmpeg下载地址   配置环境变量:在path中配置bin目录 (例如:F:xxxxxxffmpeg-20180227-fa0c9d6-win64-staticin)检查是否配置成功:ffmpeg -version 开始转...

用javaweb写一个注册界面,并将数据保存到后台数据库(全部完成)(课堂测试)

一、题目:WEB界面链接数据库 1.考试要求:       1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分) 3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分) 4学号:要求八位数字组成,前四位为“2018”开头,输入自...

Redis 监视器

一  介绍 客户端可以通过执行MONITOR命令,将客户端转换成监视器,接收并打印服务器处理的每个命令请求的相关信息。 当一个客户端从普通客户端变为监视器时,该客户端的REDIS_MONITOR标识会被打开。服务器将所有监视器都记录在monitors链表中。每次处理命令请求时,服务器都会遍历monitors链表,将相关信息发送给监视器。 当前客户端变身监...

LXC-Linux Containers介绍

Linux Containers,Linux的容器,容器嘛,可以想象成一个大的装东西的罐子,罐子口很大,里面可以装很多同样形状,只不过大小不同的小罐子。专业的话,叫做基于容器的操作系统层面的虚拟化技术。 在这个大的容器里面,可以装很多小的容器,每一个容器都具备完整的运行环境,如特定的CPU、memory节点、可分配的cpu时间,IO时间,受限的内存大小(包...