Linux学习笔记第三天--文件权限与目录配置

Linux系统最优秀的地方在于它的多人多任务环境,但是为了让各个使用者具有较保密的文件数据,文件管理就变的很重要了。Linux一般将文件可存取的的身份分为三个类别,分别是owner/group/others,三种身份各有read/write/execute等权限。

1.使用者与群组

  • 文件拥有者:即设定之后只有文件拥有者才能修改和看到该文件的内容。
  • 群组概念:群组最有用的功能之一,就是当你的团队开发资源的时候。每个账号都可以有多个群组的支持。
    举个例子,假如说有一家人,分别是大毛、二毛、三毛三个人,这个家庭是登记在大毛名下的。所以,大毛家有三个人,分别是大毛,二毛,三毛。而且这三个人都有自己的房间,并且共同拥有一个客厅。 使用者的意义:由于这家人每个人拥有自己的房间,所以二毛虽然可以进入三毛的房间,却不能翻看三毛的抽屉。抽屉等属于私人空间。群组的概念:由于共同拥有客厅,所以三兄弟可以在客厅打开电视机,翻阅报纸,坐在沙发上发呆等等。反正只要是客厅的东西,三兄弟都可以使用哦,因为是一家人嘛。
  • 其他人的概念:如果今天来了个叫张小猪的人,他是张小猪家的人,与三兄弟家没有关系啦。这是除非他们认识张小猪,同意他进来,否则张小猪永远无法进来,更别说进入到大毛的房间啦。
    以上就是Linux系统中的三种身份:User, Group, Others。
    不过在Linux系统中还有一个万能的天神,那就是root啦,他可以去他想去的任何地方哈。默认的情况下,一般以一般身份使用者进入系统,这个相关信息及root的账号密码都是记录在/etc/passwd/这个文件内。个人密码则是记录在/etc/shadow/这个文件下的。此外Linux所有的组名都记录在/etc/group内,这三个文件可以说是Linux系统里面账号、密码、群组信息的集中地,不能随便删除哈。

2.Linux文件权限概念

  • Linux文件属性
    在这里插入图片描述如上图所示:下达 su - 命令切换身份成root。下达ls -al命令,查看文件属性。
    注意:很多指令以root身份登陆才能够处理,因此用su -这个命令来切换到root身份,离开su -则使用exit 回到一般使用者的身份即可。
    ls是list的意思,显示文件的文件文件名和其相关属性。而选项
    -al
    则表示列出的所有的文件的权限与属性(包含隐藏文件,就是文件名第一个字符为**.的文件。
    在这里插入图片描述上图中
    第一栏代表文件的类型与权限(permission),共有十个字符,第一个字符代表这个文件是目录、文件、链接文件等等
    当为【d】则是目录;当为【-】则是文件;若是【I】则表示为链接档(link file);若是【b】则表示装置文件里面可供储存的接口设备(可随机存取装置);若是【c】则表示装置文件里面的串行端口设备,例如键盘鼠标(一次性读取装置)。
    接下来的字符中,以三个为一组,且均为【r w x】的三个参数组合,分别代表可读/可写/可执行。这三个权限的位置不会改变,如果没有权限,就会出现【-】代替。
    在这里插入图片描述上图第二栏表示有多少档名连接到此节点(i-node):每个文件都会将他的权限与属性记录到文件系统的i-node中,我们使用的目录树是使用文件名来记录,因此每个档名就会连接到一个i-node。这个属性记录的是有多少不同的档名连接到一个相同的i-node号码里了。

上图第三栏表示这个文件(或目录)的【拥有者账号】

上图第四栏表示这个文件的所属群组:在Linux系统中,你的账号会加入一个或者多个群组中,只有属于这个群组才会有权限。

上图第五栏表示这个文件的容量大小,默认单位为bytes。

上图第六栏表示这个文件的建档日期或者最近修改的日期:内容显示为日期(月/日)及时间,如果修改太久,那么时间部分只会显示年份而已。如果想要显示完整的时间格式,可以下达【ls -l --full-time】的指令。
tips:如果想要Linux系统默认的语系变成英文的话,可以使用【export LC_ALL=en_US.utf8】来修改语系,结合nano来修改配置文件/etc/locale.conf中的内容。

上图第七栏表示这个文件的文档名:如果在文档名前多一个【.】,则代表这个文件为【隐藏档】。

关于ls的常用参数:-a显示所有文件,包括以【.】开头的隐藏文件(Linux系统中隐藏文件是以【.】开头的,如果存在【…】则代表存在父目录);
-A显示所有文件,包含隐藏文件但不包含【.】及【…】开头的文件;
-l显示long format(长格式),列出文件的类型,权限,链接数,owner,group,大小,时间,名字等;
-1数字1,成列显示内容;
-t表示按时间对文件进行排序。

3.如何改变文件属性与权限

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

  • chgrp=change group,改变文件所属群组,不过被改变的组名必须要在/etc/group/文件内存在才行。如下图所示:假设在你的家目录内有一个名为initial-setup-ks.cfg的文件,你需要改变这个文件的所属群组。第一次将其改到/etc/group里面已经存在的名为users的群组,第二次将其改到testing这个群名字并不存在/etc/group文件中,结果如下图。
    在这里插入图片描述

  • chown 改变文件拥有者(change owner),注意用户必须是已经存在于系统中的账号,也就是在/etc/passwd这个文件中有记录的用户名称才能改变。如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上-R的选项即可。
    在这里插入图片描述在日常使用中,假设我们需要复制文件给自己以外的其他人时,我们首先需要下达copy指令,即cp 来源文件 目标文件 ,假设你需要将.bashrc这个文件拷贝成为.bashrc_test档名,而且是要给bin这个人,你可以这样做:
    在这里插入图片描述显示属性之后我们可以看到.bashrc_test还是属于root所有,这就需要我们改变一下这个文件的拥有者和使用群组啰。

  • chmod 改变权限,权限的设定方法有两种,分别可以使用数字或者符号来进行权限的变更。第一种,数字类型改变文件权限:Linux的文件基本权限就有9个,分别是owner/group/others三种身份各有自己的read/write/execute权限,我们使用三个字母及相对应的三个数字来表示各个权限:
    r:4
    w:2
    x:1
    每种身份(owner/group/others)各个权限分数是需要累加的,例如档权限为**-rwxrwx—分数则是4+2+1=7 4+2+1=7 0+0+0=0该文件的权限就是770啦。
    举例:如果将.bashrc这个文件所有的权限都设定启用,那就下达
    chmod 777 filename指令,如下图所示:
    在这里插入图片描述第二种符号类型改变文件权限:我们在上面介绍过,基本九个权限就是(1)user(2)group(3)others 三种身份,那么我们可以用u,g,o来代表三种身份的权限,a则等于all代表全部的身份,读写的权限仍为r,w,x。
    在这里插入图片描述假设我们要设定一个文件的权限为【-rwxr-xr-x】,即为user具有可读可写可执行的权限,group与others具有可读与可执行的权限,所以就是
    在这里插入图片描述如果我不知道原先文件的属性,我只想增加.bashrc这个文件每个人均可写入的权限,那么我就可以下达
    chmod a+w .bashrc** 命令。

4.目录与文件之权限意义
在这里插入图片描述例如:有个目录的权限为drwxr–r-- 3 root root Jun 25 08:35 .ssh 系统有个账号名称为vbird,这个账号并没有支持root群组,请问vbird对这个目录有何权限,是否可以切换到此目录中?回答:vbird属于others,对于此目录只有r的权限,因此他是可以查询此目录下的文件名列表的。但因为其不具有x权限,因此并不能切换到此目录内。如果没有x权限,即无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有r或w的权限。
在这里插入图片描述看完上面这个表格,总结一下,如果把目录比做抽屉,则r相当于灯光,在你已经知道这个文件在哪个地方,那有没有灯光是没差的,只不过是【tab】键补齐的时候,他无法将你自动补全了。因此在表中可以看到x几乎是必须开的权限,而r就无所谓了。w是一定要慎重开的权限,因为如果开了目录的w和x权限,那么对于这个目录中的任意文件他是可以进行删除的!

5.Linux文件种类与扩展名
任何装置在Linux系统下都是文件。我们在之前提到过一般文件(-)与目录文件(d),还有别的文件类型吗

  • 正规文件(regular file):我们一般进行存取的文件,在由ls -al所显示出来的属性方面,第一个字符为【-】。按照文件的内容,又大致可以分为:
    1.纯文本文档(ASCII),内容为我们人类可以直接读到的数据,例如字母、数字等,你可以下达【cat filename】就可以看到该文件的内容(cat 是将一个文件内容读出来的指令);
    2.二进制文件(binary),比如说刚下达的cat指令就是一个binary file。Linux系统仅认识可执行二进制文件,所以Linux系统中可执行文件(scripts,文字型批处理文件不算)就是这种格式的啦。
    3.数据格式文件(data),有些程序在运作过程中会读取某些特定格式的文件,这些文件可以成为数据文件(data file)。举例来说,我们Linux在使用者登入时,那会将登陆的数据记录在/var/log/wtmp那个文件内,该文件是一个data file,他能用last这个指令读出来,但是使用cat指令时,就会读出乱码。

  • 目录(directory):第一个字符为【d】

  • 连结档(link):类似Windows系统下的快捷方式啦,第一个属性为【l】,例如【lrwxr–r--】。

  • 设备与装置文件(device):与系统周边及储存等相关的一些文件,通常都集中在/dev这个目录之下!通常有分为两种:
    1.区块(block)设备档:就是一些存储数据,以供系统存取的接口设备。
    2.字符(character)设备文件:一些串行端口的接口设备,例如键盘/鼠标等,这些设备的特色就是一次性读取的,不能够截断输出。比如你不能让鼠标跳到另一个画面,而是持续性滑动到另一个地方,第一个属性为【c】。
    3.资料接口文件(sockets):这类型的文件通常被用在网络上的数据承接,例如我们可以启动一个程序来监听客户端的要求,而客户端就可以透过socket来进行数据的沟通了。第一个属性为【s】,最常在/run或/tmp这些目录中。
    4.数据传输文件(FIFO,pipe):FIFO也是一种特殊的文件类型,主要目的在于解决多个程序同时存取一个文件所造成的错误问题。是first-in-first-out的缩写,第一个属性为【f】。

发布了29 篇原创文章 · 获赞 1 · 访问量 1252

猜你喜欢

转载自blog.csdn.net/weixin_42082088/article/details/94451834