Linux学习笔记9——文件权限与目录配置

本文深入解析Linux的文件权限系统,包括用户、群组和其他人的权限分配,文件与目录的权限意义,以及如何使用chgrp、chown和chmod命令来管理文件权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux设置了三个身份类别:owner/group/others,这三个身份各有read/write/execute等权限。

一、使用者与群组

文件拥有者(owner):我理解就是拥有这个文件的用户咯。

群组(group):比如,开发oa的一堆人就是一个群,他们这一堆的人都能够进oa项目咯。如果oa组的组长既管oa又管ERP,当然两个群组都可以加上他嘛。

其他人(others):比如,我们这一堆人开发了一个网站,能够允许其他人看网站的静态资源,但不准改,对吧,这个只读权限,就是对其他人说的。

当然有一个god,能突破权限的限制,他就是root,什么权限他都有!

记录使用者和群组信息的文件在 /etc/passwd中,至于个人密码则放在/etc/shadow中。博主上信息安全的课,还试着从/etc/shadow破解过简单的密码,还挺好玩的!

二、文件权限概念

文件的权限,很有意思,还有两个特殊的权限。

先来看一下什么叫文件的权限:

ls -al

每一行由7个组成:

[                1                   ]      [2]    [    3     ]     [     4     ]                       [    5     ]     [                    6                     ]        [             7                     ]

[          权限               ]      [链接数]    [   拥有者  ]     [     群组    ]                       [  文件大小     ]     [        修改日期       ]   [       文件名         ]

第一栏就是文件的类型与权限:总共有十个字符

第一个字母[d]表示档案类型,为目录;[-]则是文件;[ l ]则表示为链接文件(link file);[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。

接下来的9个字符,以3个为一组,且均为“rwx”三个参数的组合。r可读,w可写,x可执行,没有这个权限则用-表示。

这3个组依次为owner、group、others的权限。

以-rwxr-xr-- 权限说明:-表示是个文件,剩下9个字符分成三组:rwx:拥有者有读写执行操作     r-x   同一组的人有读执行权限      r--其他人只有读的权限

第二栏表示有多少个文件链接到这个节点(i-node)。

第三栏表示这个文件(目录)的拥有者 账号

第四栏:所属群组

第五栏:容量大小,默认bytes

第六栏:文件的创建日期或最近修改日期。

第七栏:文件名

linux的权限,保障了linux数据的安全性。

三、改变文件的属性与权限

相关命令:

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

chgrp是change group的缩写,要被改变的群组名称必须在/etc/group中。

chgrp [-R] dirname/filename ...  选项参数:  -R,进行递回(recursive)的持续变更,这文件及其下面的文件权限都将进行变更。

查看有哪些组:

cat /etc/group

创建了一个test.txt文件,我想将它变成tom组下的:

chgrp tom aa.txt

我的组里是没有jerry的,我把这个文件的group改成jerry试试:

它会直接报错

四、改变文件的拥有者——chown


和change group类似,改变拥有者就是change owner,简写就是chown咯。但是和要被改变的群组名称必须要在/etc/group文件内存在才行一样,要改变的用户需要在/etc/passwd 这个文件中有纪录的使用者名称才能改变。chown的用途还满多的,他还可以顺便直接修改群组的名称呢!如果要将目录下的所有权限都改变的话,加上-R就可以了!
[root@study ~]# chown [-R] 帐号名称 文件或目录
[root@study ~]# chown [-R] 帐号名称:群组名称 文件或目录
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都变更
我在test下新建一个aa目录,在aa目录下放一个aa.txt:

先来看一下aa.txt的权限:

ok,我在上一级目录实验,将aa及其下的文件所有人均改为tom:
chown -R tom aa

-R这样就实现了递归调用,说明-R在其他地方也有可能有递归调用的功能。
chown -R tom:tom aa
这样就连group也改了
事实上,chown也可以使用“chown user.group file”,亦即在拥有者与群组间加上小数
点“ . ”也行!但是如果喜欢在账号中加小数点,那就容易造成误判咯,还是用:好。此外,chown也能单纯的修改所属群组呢! 例如“chown .sshd initial-setup-ks.cfg”就是修改群组~看到了吗?就是那个小数点的用途!
那么什么时候需要使用chown或者chgrp?最常见的例子就是在复制文件给你之
外的其他人时, 我们使用最简单的cp指令来说明好了:
cp 来源文件 目的文件
复制完之后,owner和group是不变的,为了操作方便,之后,可以把所属的用户及组给修改了。

五,改变权限——chmod

 

chmod有两种方式可以用来修改权限——数字和字母方式。

(1)数字类型:权限有三种身份,分别为owner/group/others,而每种身份又有三种权限:read/write/execute,比如文件的权限就是“-rwxrwxrwx”,这些rwx可以用数字来表示:> r:4 > w:2 > x:1。实际上就是把3个字母看成是一个3位的二进制数咯,rwx : 111就是4+2+1,所以“-rwxrwxrwx”用数字表示就是“777”。

总结起来chmod的语法是这样的:

[root@study ~]# chmod [-R] xyz 文件或目录

选项与参数:

xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

(2)符号类型修改文件权限

借由u, g, o来代表三种身份的权限,a 则代表 all 亦即全部的身份。那么读写的权限就可以写成r, w, x啰!

| chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录 |

设定aa.txt权限为“-rwxr-xr-x”:

chmod u=rwx,go=rx aa.txt

那个 u=rwx,go=rx 是连在一起的,中间并没有任何空白字符!

减少一个权限:

chmod u-w aa.txt

全部都减少同一个权限:

chmod a-x aa.txt

增加一个权限:

chmod u+w aa.txt

六,权限对文件(目录)的意义

 

权限对文件的意义:

r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;

w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);

x (eXecute):该文件具有可以被系统执行的权限

x表示可执行,与windows不同,windows的可执行文件可根据后缀来判断,例如:.exe,.bat, .com 等等。在linux中不用看后缀,只要有x权限,就是可执行的。

对于目录而言:

r (read contents in directory):

表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!

w (modify contents of directory):

这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构清单的权限,也就是下面这些权限:

(1)创建新的文件与目录;

(2)删除已经存在的文件与目录(不论该文件的权限为何!)

(3)将已存在的文件或目录进行更名;

(4)搬移该目录内的文件、目录位置。 总之,目录的w权限就与该目录下面的文件名异动有关就对了啦!

x (access directory):

目录是不可以被执行的,它的x权限表示可以进入,目录的x代表的是使用者能否进入该目录成为工作目录的用途!所谓的工作目录(work directory)就是你目前所在的目录啦!

注意这个概念,如果目录只有r权限没有x权限,则不能进入到该目录(cd),但是是查询该目录下的内容。

此外, 工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r或w的权限。要注意:要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!如果给了目录的w权限,他就可以删除目录下的文件了!

 

为了验证x的权限,博主制作了如下一个目录和一个文件,在root权限下:

[root@docker1 tmp]# ls -ald testing testing/testing

 

切换到tom:

su tom

ls -al testing/ testing/testing

报错:

这里的问号很有意思,虽然有告知权限不足,但因为具有 r 的权限可以查询文件名。由于权限不足(没有x),所以会有一堆问号。

当用tom:

cd testing 时:

明确报错。

 

练习:

目录结构:

假设你现在在系统使用 dmtsai 这个帐号,那么这个帐号针对 /dir1, /dir1/file1, /dir2 这三个文

件名来说,分别需要“哪些最小的权限”才能达成各项任务?

读取file1内容:            --x(能够进去但是不能用 ll)        r--            ---

修改 file1 内容:             --x                        rw- (如果没有r,进去之后会报错,如下图)  

执行 file1 内容:       --x        r-x(很有意思,如果只有r也会权限不足)       ---

删除 file1 文件:       -wx(没有x权限就不能进去)       ---                           ---

将file1复制到/dir2      --x      r--             -wx

 

七,Linux文件种类与扩展名

文件种类:一般文件(-)与目录文件(d)之外,还有其他文件,总的分类如下:

(1)正规文件(regular file ): 就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [ - ],例如 [-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:

纯文本文件(ASCII)、二进制档(binary)、数据格式文件(data)

(2)目录(directory)第一个属性为 [ d ]

(3)链接文件(link)第一个属性为 [ l ]

(4)设备与设备文件(device),通常都集中在/dev这个目录之下!通常又分为两种:

区块(block)设备文件(硬盘与软盘等就是啦),第一个字符是[b]

字符(character)设备文件(例如键盘、鼠标等等!)这些设备的特色就是“一次性读取”的,不能够截断输出。 举例来说,你不可能让鼠标“跳到”另一个画面,而是“连续性滑动”到另一个地方啊!第一个属性为 [ c ]。

(5)数据接口文件(sockets),一看到sockets是不是就想到了另一个名词,叫套接字。既然是数据接口文件,当然是在网络上用作数据承接了。我们可以启动一个程序来监听用户端的要求, 而用户端

就可以通过这个socket来进行数据的沟通了。第一个属性为 [ s ], 最常在/run或/tmp这些个目录中看到这种文件类型了。

(6)数据输送档(FIFO, pipe):FIFO也是一个特殊的文件类型,它存在的主要目的在于解决多个程序同时存取一个文件所造成的错误问题。FIFO是first-in-first-out的缩写。第一个文件属性为[p]。

关于扩展名:

之前的笔记也有提过,Linux是没有扩展名之说的,能否执行是靠权限来进行判断的。而在windows下,能否执行是通过后缀来判断的,比如windows可执行的文件扩展名通常是 .com .exe .bat等等。而在linux中,只要有x权限就可以执行。

但是呢,就像java文件后有.java,字节码文件是.class,python文件是.py,没有后缀的文件会不好区分是用来做什么的,所以我们还是会写上后缀。常用的后缀(linux)有:.sh  .tar  .tar.gz   .zip .tgz  .html  .php等等

所以,当你的一条命令,比如/bin/ls的权限取消了x权限,那这个指令就执行不了了哦。

这种情况在网络传输中是很常见的,比如下载了一个可执行文件,但是在本地死活打不开,就有可能是权限改变了。

linux文件长度限制:

在Linux下面,使用传统的Ext2/Ext3/Ext4文件系统以及近来被 CentOS 7 当作默认文件系统的xfs 而言,针对文件的文件名长度限制为:

单一文件或目录的最大容许文件名为 255Bytes,以一个 ASCII 英文占用一个 Bytes 来说,则大约可达 255 个字符长度。若是以每个中文字占用 2Bytes 来说, 最大文件名就是大约在 128 个中文字之谱!

另外,linux的文件名要避免一些特殊字符:

另外,文件名以. 开头的,代表这是个“隐藏文件”哦!另外,由于指令经常有 - +之类符号,文件名也要尽量避免用到。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值