基于 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4


基本概念

Linux最核心的一个概念就是:Linux里面任何东西都可以被视为一个文件,包括系统本身(说到底Linux启动不就是调用那些开机文件再连带启动其他的文件么~~~)

User:文件拥有者

Group:文件所属群组

Others:非本文件持有者或者所属群组的其他人员

  • User就是字面上的意思,即文件是谁的(具体可执行哪些操作看权限)
  • Group则代表一个拓展版User,代表加入到该组内的所有人对这个文件具有特定的操作权限,但Group可以不包含User,也就是说一个文件的User可以不在这个文件的Group内
  • Others很好理解,不是本人也不是这个所属组的第三方人员
  • 注意:无论如何设置权限,唯有root是无法被阻挡的

其实权限的好处就是在生产环境变得更为安全,保证特定数据不会被职权外的人员所访问

包括root的所有账号信息都存储在/etc/passwd,密码在/etc/shadow,群组则在/etc/group,这三个文件请不要随意删除!


文件权限

-rw-r--r--.      1    root   root   2403    7月  20 05:34 initial-setup-ks.cfg
[文件类型和权限][连接数][User][Group][文件大小][ 最后修改时间 ][      文件名        ]

类型与权限:

 -         rw-   r--    r--
[文件类型][User][Group][Others]

权限分为4段

  • 文件类型:这表示这个文件是一个“文件”、目录或者是快捷方式
    • -(横杠):这是一个文件
    • d:这是一个目录
    • l(小写L):这是一个快捷方式
    • b:块设备文件,即以块的方式进行存储,其实指的就是硬盘
    • c:字符设备文件,IO设备,也就是鼠标、键盘这些使用物理接口的外设
    • p:管道文件(以后会补充)
    • s:套接口文件,怎么说呢,感觉类似网络的监听端口这样吧(以后会补充)
  • User:请向上看基本概念说明
  • Group:请向上看基本概念说明
  • Others:请向上看基本概念说明
  • rwx在下面会详细说明

连接数:i-node

User:拥有者账号

Group:该文件所属群组

文件大小:容量,预设单位为Bytes

最后修改时间:代表这个文件的建立日期或者最后修改日期,如果时间距离现在太久,只显示年份

文件名:就是文件的名字,但如果这个文件的名字前有“.”(例如 .alice )代表这个文件是一个隐藏文件

 

常用命令

chown [-R] filename/dirname

修改文件拥有者

-R:递归修改,这个参数是用在批量修改目录上面的,即修改一个目录的时候不加-R参数的话,只是修改目录表面的持有者,不会对目录里面的文件进行拥有者修改

 

chgrp [-R] filename/dirname

修改文件所属群组

-R:递归修改,和chown -R的效果是一个意思

 

chmod [-R] xyz filename/dirname

修改文件权限

xyz每个字母都代表0~7的数字

-R:递归修改,意思和chown -R、chgrp -R一个意思

  • r(4):可读,即读取
  • w(2):可写,即往文件里面增加、修改、删除内容
  • x(1):可执行,用Windows的说法就是这个文件能不能启动,虽然在Linux上你可以给任何文件加上x权限来执行,但具体能不能用还是看这个文件的后缀名有没有相关程序来执行功能,所以从Windows的角度来看Linux的x权限不大好理解这个;但需要注意的是,Linux下文件能不能被执行与后缀名是没有关系的,只和x权限有关,所以能不能执行这个后缀名的文件就是另外一回事了

r、w、x的对应数字为4、2、1,即为什么说xyz的地方为0~7就很好理解了吧,满权限rwx加起来的数值刚好就是7,没有任何权限加起来就是0,为什么要rwx定为421的原因其实就是电脑的运行方式(稍微有点计算机基础的都知道用电脑是如何用二进制是来表示十进制数)

举点例子好了:
-rwxr-x-wx 就是[4+2+1][4+0+1][0+2+1],各部分加起来就是753
-----wx--x 就是[0+0+0][0+2+1][0+0+1],即031

rwx转换数字这个需要多加练习,最好能一眼看出一个文件的3组rwx对应总权限数字是多少

 

当然如果不习惯xyz这种方式添加权限的话还有另一种方式

chmod  u(User)                       +(加上)     r(可读)      filename/dirname
g(Group) -(减去) w(可写)
o(Others) =(设定) x(可执行)
a(All,即User+Group+Others)

u、g、o都可以理解,a指的是同时指定User、Group、Others,也就是a选项是同时操作ugo
+:添加这个权限,如果ugo对应位置有相应权限则不变,如果没有就加上
-:去掉这个权限,如果ugo对应位置没有相应权限则不变,如有有就去掉
=:设定这个权限,这个和+和-就完全不一样了,=是设定了相应权限之后那么ugo对应组就有哪些权限,假设某个文件权限本身是-rwxrwxrwx,那么 chmod u=r,g=w,o=x 就会变成-r---w---x了哦


以alice这个文件为例,下面每一个例子都是互相独立的
-rw-r--r--. 1 root root 0 7月 26 06:06 alice

chmod u-r alice
--w-r--r--. 1 root root 0 7月 26 06:06 alice

chmod g-r,o+rx ailce
-rw----r-x. 1 root root 0 7月 26 06:06 alice

chmod a-r alice
--w-------. 1 root root 0 7月 26 06:06 alice

chmod a=rw alice
-rw-rw-rw-. 1 root root 0 7月 26 06:06 alice

 

权限对于文件和目录的意义(重点)

  • 权限对档案的重要性
    • r:可读,可以读取文件的实际内容
    • w:可写,即往文件里面增加、修改、删除内容
    • x:可执行,可以被系统执行的权限(具体看chmod关于x权限的说明)
    • 注意:文件本身是否可以删除与文件本身的权限无关,是由该文件所处目录的w权限来决定的

 

  • 权限对于目录的重要性
    • r:可读,可以读取目录的结构清单,也就是可以将该目录有哪些文件可以列出来
    • w:可写,这个权限对目录来说非常重要,也就是说w权限可以修改该目录结构
      • 在该目录内建立新文件或者子目录
      • 删除该目录内已存在的文件或者子目录(无论该文件或者子目录的权限是什么)
      • 将该目录内已存在的文件或者子目录进行重命名
      • 移动该目录内已存在的文件或者子目录

也就是说,w权限可以理解成目录内有关的文件名修改就对了,怎么说呢……新增加了一个文件,目录的结构列表就多了一个名字;删除一个文件,目录结构列表就少了一个名字;重命名一个文件,目录一个文件的名字就修改了嘛~~~

补充一点就是,w权限可以无视子文件和子目录的权限进行删除的原因在于子文件和子目录的权限只是决定了对其自身内容的修改,并不决定自身,所以自身是否能删除是取决于所在的父目录的权限决定的

一个不是很恰当的例子就是,我的书架里面放了一本别人上了锁的日记,我既不能看也没法做其他的操作;但这是我的书架,我可以将别人放在我书架上的上锁日记拿出来放到(是移动不是复制)其他地方或者直接扔进垃圾桶里面

    • x:可进入,这个和文件的x权限意义就不一样了,对于目录来说,执行就是进入这个目录,同时也是目录最核心的权限

 

重点来了~~ rwx的重要性由高到低来说,文件是rwx,目录是xwr

可能很多人不是很注意这个权限问题,但对于文件操作来说这点至关重要

  • 为什么文件的权限重要性顺序是rwx?

首先,你要能读取(r)文件的内容,你才能去写入(w)内容,如果你连文件里面有什么都不知道,你又怎么去写入东西进去呢?何况是执行(x)

对于计算机来说,任何文件都要转化成1和0才能执行,如果计算机连文件有多少个1和0都不知道,该怎么去执行(x)文件呢~~~

  • 为什么目录的权限重要性顺序是xwr?

首先,你要进入(x)这个目录,你才能去修改文件(w)和列出目录结构清单(r)

举个例子可能比较好理解一点:

目录就像一个抽屉,x权限就是打开这个抽屉的钥匙,w权限就是翻找(修改)东西的能力,r权限就是个抽屉里面的照明灯

首先你连钥匙(x)都没有,你怎么翻找东西(w)和知道抽屉里面有什么吗(r)?

其次,如果我已经事先就知道这个抽屉里面有哪些东西了,那我还需要照明灯(r)吗?并不一定需要对吧,照明灯(r)的功能只是辅助我翻找东西(w)而已,我甚至都可以摸黑翻找东西~~~

所以现在能理解目录的权限重要性顺序为什么和文件是反过来的吧

假设有这么两个目录和并且其中一个目录有文件
/dir1/file1
/dir2

操作 /dir1 /dir1/file1 /dir2 说明
读取file1内容 x r - 只需要有个x权限进到dir1里面,因为没有对file1做任何文件名形式上的修改,对dir1来说也就不需要w了
修改file1内容 x rw - 进入dir1里面,没动文件名就不需要w,但需要修改file1内容,所以需要读才能写(rw)
执行file1内容 x rx - 进入dir1里面,没动文件名就不需要w,但需要执行file1内容,所以需要读才能执行(rx)
删除file1文件 wx - - 进入dir1里面,结构清单里面少了一个文件名,所以需要w,但删除file1就无所谓file1有没有权限了
将file1复制到dir2 x r wx 进入dir1里面,没动dir1里面的文件名就不需要w,但dir2需要进入并且在dir2的结构清单上多了一个文件名,所以dir2需要wx
将file1移动到dir2 wx - wx 进入dir1里面,file1被移动,dir1结构清单里面少了一个文件名,所以需要w;同理dir2多了一个文件名,所以也需要w

上面所有对于目录的操作完全没有用到r权限,所以对目录来说r权限是可有可无的东西
内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!