博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件权限及chmod使用方法
阅读量:7021 次
发布时间:2019-06-28

本文共 3246 字,大约阅读时间需要 10 分钟。

文件权限

在linux在,由于安全控制需要,对于不同的文件有不现的权限,限制不同用户的操作权限,总共有rwxXst这一些权限,我们经常使用到的是rwx,对于文件和文件夹而言,他们代表着不同的含义

  • 对于文件

    r:用户可以读取该文件,如使用命令cat
    w:用户可以编辑该文件,如使用命令sed -i,vi
    x:用户可以运行该文件,如直接./get_key.sh

  • 对于文件夹

    r:用户可以读取该文件夹下的文件名,如使用命令ls,x位也得开启
    w:用户可以在该文件下进行文件的删除,增加,改变文件信息,如用命令rm,x位也得开启
    x:用户可以进入到此目录中,如命令cd

所以:如果文件夹只有x位,可以进得去文件,只有wx位,可以删除文件夹下的文件,只要删除的文件名写对也是可以删除的,所以对于普通用户,文件夹一般只开能rx位

举个例子

 

[root@zejin240 tmp]# lltotal 4drwx----wx. 2 root root 4096 Oct 24 13:18 testdir[root@zejin240 tmp]# ll testdir/ #总共有两个文件total 8-rw-r--r--. 1 root root 130 Oct 24 13:05 tfile-rw-r--r--. 1 root root 99 Oct 24 13:18 tfile1[root@zejin240 tmp]# su chenzejin[chenzejin@zejin240 tmp]$ cd testdir/[chenzejin@zejin240 testdir]$ ls #由于没有r位,所以ls命令不被允许ls: cannot open directory .: Permission denied[chenzejin@zejin240 testdir]$ rm tfile -f #但是写对文件名可以正常删除[chenzejin@zejin240 testdir]$ cd ..[chenzejin@zejin240 tmp]$ exitexit[root@zejin240 tmp]# ll testdir/ #只剩一个文件了total 4-rw-r--r--. 1 root root 99 Oct 24 13:18 tfile1

 

 

 

所以能不能删除一个文件就看它所有的文件夹的权限就可以了,看下面一个例子:

[root@zejin240 tmp]# tree testdir/testdir/└── secdir└── tfile1 directory, 1 file[root@zejin240 tmp]# ll -d testdir/drwx---rwx. 3 root root 4096 Oct 25 18:54 testdir/[root@zejin240 tmp]# ll -R testdir/testdir/:total 4drwxr-xr-x. 2 root root 4096 Oct 25 18:54 secdirtestdir/secdir:total 0-rw-r--r--. 1 root root 0 Oct 25 18:54 tfile

 


对于testdir其它用户拥有完全权限,对于secdir其它用户只有进入查看权限,对于tfile只有读的权限,我们现在用其它用户进行登陆,并尝试删除secdir目录

[root@zejin240 tmp]# su chenzejin[chenzejin@zejin240 tmp]$ rm testdir/secdir/ -rrm: descend into write-protected directory `testdir/secdir'? yrm: remove write-protected regular empty file `testdir/secdir/tfile'? yrm: cannot remove `testdir/secdir/tfile': Permission denied[chenzejin@zejin240 tmp]$ rm testdir/secdir/ -rrm: descend into write-protected directory `testdir/secdir'? yrm: remove write-protected regular empty file `testdir/secdir/tfile'? nrm: remove write-protected directory `testdir/secdir'? yrm: cannot remove `testdir/secdir': Directory not empty

发现不管如何都删除不了secdir,按照刚刚讲的,我对文件夹testdir有rwx权限,应该可以删除secdir才对,但这里为什么删除不了呢?

这里其实不是删除不了文件夹secdir,而我们没有权限删除tfile,因为对于tfile而言,要删除它的话我们需要拥有对secdir的wx权限,而对于secdir我们只有r权限,并不具有x权限,所以我们这里删除不了tfile,而tfile又在secdir里面,所以我们也就删除不了secdir了。

所以如果没有tfile,我们的普通用户是可以删除文件夹secdir的

 

[chenzejin@zejin240 tmp]$ exitexit[root@zejin240 tmp]# rm testdir/secdir/tfile -f[root@zejin240 tmp]# su chenzejin[chenzejin@zejin240 tmp]$ rm testdir/secdir/ -rrm: remove write-protected directory `testdir/secdir'? y[chenzejin@zejin240 tmp]$ ll testdir/total 0

 

 

那么我们如何修改文件的权限:chmod命令

命令作用

修改文件或目录的权限属性

常用用法

chmod [option] MODE file

chmod [option] octalnum file

常用参数

-R:递归修改目录及子目录的所有文件

MODE

符合MODE的正则表达示为:[ugoa]([-+=]([rwxXst]|[ugo]))+

u:表示文件拥有者,即user
g:组拥有者,即group
o:其它用户拥有者,即other
a:所有用户,即相当于ugo
:省略不写代表a,即所有用户

 

-:去除相应权限位

+:加上相应权限位

=:设置相应权限位

 

常用使用范例

[chenzejin@zejin240 testdir]$ lltotal 4-rw-rw-r--. 1 chenzejin chenzejin 17 Oct 25 19:17 tfile  其它用户可以编辑tfile文件内容    [chenzejin@zejin240 testdir]$ chmod o+w tfile  其它用户可以执行tfile文件    [chenzejin@zejin240 testdir]$ chmod o+x tfile  取消其它用户对tfile的写,执行权限    [chenzejin@zejin240 testdir]$ chmod o-wx tfile  为所有用户只有只读tfile的权限    chmod =r tfile  或者    chmod a-wx,a+r tfile  或者    chmod 444 tfile  只有用户自身对文件有读写执行权限    chmod 700 tfile  或者    chmod u=rwx,go-rwx tfile

 

转载地址:http://nxbxl.baihongyu.com/

你可能感兴趣的文章
leetCode 141. Linked List Cycle 链表
查看>>
整理Silverlight资源列表(二)
查看>>
ASM_PREFERRED_READ_FAILURE_GROUPS
查看>>
在redhat5.4上配置lvs+heartbeat+ldirectord 集群
查看>>
添加用户的小脚本
查看>>
镜像命名的最佳实践 - 每天5分钟玩转 Docker 容器技术(18)
查看>>
CentOS6部署phpmyadmin;部署Discuz;部署phpwind;部署phpBB
查看>>
一道关于停车计费的问题
查看>>
4个小时找回VMware丢失的硬盘的历程
查看>>
浅谈 Windows 7 的几种安装途径
查看>>
zimbra邮件服务器部署
查看>>
新瓶旧酒ASP.NET AJAX(9) - 客户端脚本编程(Sys.Net命名空间下的WebServiceProxy)
查看>>
asp.net Repeater拖拽实现排序并同步排序字段到数据库中
查看>>
Objective-C的单例模式(singleton)
查看>>
为系统安装盘集成Server Pack补丁包
查看>>
gentoo12.0安装配置
查看>>
详细的bootloader的移植(4)
查看>>
框计算精确搜索之架构篇
查看>>
更改VMware虚拟机硬件版本
查看>>
【Vue】浅谈Vue不同场景下组件间的数据交流
查看>>