Linux学习 | 文件权限

1.文件所有者、用户组和其他人概念

对于刚刚从隔壁Windows系统中过来的人来说,会觉得不可思议,在Windows,文件以及目录哪里有说属于谁的说法,只要电脑能开机,操作电脑的人就能对眼前的文件进行操作,这是因为对于我们大部分的人来说,在同一时刻,一般只有一个用户登录Windows操作系统,甚至不同时刻的登录都是使用的同一个账号,所以文件和目录的权限显的不是特别的重要。

而在Linux系统就不一样了,它是一个多用户、多任务的系统,为了让各个用户具有较保密的文件数据,这就需要使用到文件的权限管理了。

而对于Linux系统来说,一般将文件可存取访问的身份分为3类,分别是文件所有者(owner)用户组(group)其他人(others);同时每一种身份都具有读取®、写入(w)、执行(w)三种权限。

1.1 文件所有者

顾名思义,每一个文件都有一个文件所有者,文件属于该用户,只需要设置好权限,其他的用户将不能对文件进行操作,从而达到安全的效果

1.2 用户组

文件除了有一个文件所有者,同时还会属于一个用户组,而用户组最大的作用就是团队开发的时候,可以不让其他团队的成员使用我们团队的资源文件,而这些文件可以对自己团队成员进行开放。

1.3 其他人

当一个用户,既不是文件所有者,也不和文件所有者属于同一个用户组时,那这个用户就是其他人

1.4 三种身份的理解

有一门课程的作业,需要分小组完成,班级里面一共分成三个小组A、B、C,而在A组,小组成员是甲、乙、丙。甲完成了自己的分工有一个文件。

对于这个文件来说
甲就是文件所有者
A组就是这个文件所属的用户组
B组和C组就是其他人

而与此同时,有一个特殊的人,他就是老师,也就是我们的root,对于所有的小组的所有成员来说,老师都可以检查他们的“作业”,拥有最高权限。

在我们的Linux系统中,应该设置好不同身份对于文件的权限,这样才可以控制好不同用户对于文件的访问,这也是一种安全措施,防止出现我们不希望发生的操作(如让别人看到存储在你的用户文件下的私密文件)。

Linux用户身份与用户组记录的文件

在Linux系统中,有关于账号、密码、用户组的信息基本记录在以下3个文件中:

  • /etc/passwd:记录所有的系统上的账号与一般身份用户,同时还有root用户的相关信息
  • /etc/shadow:记录用户的密码(因为许多服务对于/etc/passwd文件都有读权限,所以将密码单独保存,以提高安全性)
  • /etc/group:记录Linux系统中的所有用户组名

2.Linux文件权限的概念

2.1 Linux文件属性

想要查看Linux文件的属性,我们可以使用ls -al命令,列出当前目录下所有文件的相关属性,如下所示。

[root@VM_0_3_centos www]# ls -al
-rwxrwxrwx      2       root        root       4096    Aug 30 04:25    test.md
#[权限]        [连接]   [所有者]     [用户组]    [大小]    [修改日期]    [文件名]      

显示出来的[所有者][用户组]属性就是在上文说的文件所有者和用户组,这里就不再说明了。对于Linxu文件来说,最重要的权限,就是第一列代表的文件的类型和权限(一共有十个字符)

  • 第一个字符代表文件的类型(不止以下两种)
    • d:代表目录
    • -:代表文件
  • 后面的九个字符,每3个分为一组,且均为rwx3个参数的组合,([r]表示可读,[w]表示可写,[x]表示可执行),这三个参数的顺序不会改变,如果没有相应的权限时,则显示为-
    • 第一组:文件所有者的权限
    • 第二组:用户组的权限
    • 第三组:其他非本用户组的权限

Linux文件权限的重要性

2.2 修改Linux文件的权限

在上文中讲完了Linux系统文件的权限,那么这么多复杂的权限肯定是需要管理的,所以也需要修改文件权限的操作,主要有以下三个操作:

  • chown:改变文件所有者
  • chgrp:改变文件所属的用户组
  • chmod:改变文件的权限

2.2.1 chown

  • 修改文件所有者,需要注意的是,要修改成的账号名称必须存在于/etc/passwd文件中才能改变,否则会报错
    [root@VM_0_3_centos www]# chown [-R] 账号名称 file/dir
    [root@VM_0_3_centos www]# chown [-R] 账号名称:组名 file/dir
    #选项与参数
    # -R:进行递归更改,连同子目录下的所有文件
    
    #例子:
    [root@VM_0_3_centos www]# chown hadoop test.md    #修改 test.md 文件所有者为 user
    

2.2.2 chgrp

  • 修改文件的所属用户组和上面类似,但必须注意的是,要改变成的用户组名字必须已经在/etc/group文件中才行,否则会报错。
    [root@VM_0_3_centos www]# chgrp [-R] 用户组名称 file/dir
    #选项与参数
    # -R:进行递归更改,连同子目录下的所有文件
    
    #例子:
    [root@VM_0_3_centos www]# chgrp user test.md    #修改 test.md 文件的用户组为 user
    
为什么需要修改文件所有者和文件用户组?

举一个常见的例子,用户B让用户A复制一份A的文件给它,用户A使用cp这个命令

[root@VM_0_3_centos www]# cp t1.md t2.md
[root@VM_0_3_centos www]# ls -al
-rwxr--r-- 1 A root 4096 Aug 30 04:25 t1.md
-rwxr--r-- 1 A root 4096 Aug 30 04:25 t2.md

cp复制命令会同时复制执行者的权限,所以我们这里看到,这一个文件的文件所有任然是A,这种时候我们就需要使用chown或者chgrp命令了。

2.2.3 chmod

文件权限的改变使用的是chmod这个命令,但是权限设置的方法分为两种,数字或者符号来进行修改

2.2.3.1 数字类型改变文件权限
  • Linux文件的基本权限有9个字符,分别对应三个身份(owner、group、others)各自的rwx权限,我们使用数字来代表各个权限,如下:
    • r:4
    • w:2
    • x:1
  • 每种身份(owner、group、others)各自的三个权限(r、w、x)是需要累加的。

示例:
-rwxr-xr–:第一个字符 “-” 表示这是一个文件,前文有说明
owner(rwx):4 + 2 + 1 = 7
group(r-x):4 + 1 = 5
others(r–):4 = 4
所以这个文件的权限数字就是754

[root@VM_0_3_centos www]# chown [-R] xyz filr/dir
#选项与参数
# xyz:就是刚刚的权限数字
# -R:进行递归更改,连同子目录下的所有文件
[root@VM_0_3_centos www]# chmod 754 t1.md
2.2.3.2 符号类型改变文件权限
  • Linux文件的基本权限有9个字符,分别对应三个身份(owner、group、others)各自的rwx权限,
    在这里我们使用(u、g、o)来代表这三种身份,同时还加了一个a代表全部的身份,如下图所示
chmodu
g
o
a
+(加入)
-(除去)
=(设置)
r
w
x
文件或目录

示例

[root@VM_0_3_centos www]# chmod a+x t1.md   #表示赋予所有用户对于 文件t1.md 的执行权限 
  • 只要是命令中没有指定到的选项,该权限就不会被变动。

2.3 目录与文件权限的意义

在前面我们已经介绍了,对于Linxu系统中的文件来说,有三种身份,同时每个身份都有三个权限(可读、可写、可执行),然而这三种权限对于文件和目录的意义确实不一样的。

2.3.1 权限对文件的意义

文件是实际包含数据的地方,包括一般的文本文件、数据库内容文件、二进制文件等等

权限意义
r(可读)表明可以读取文件的实际内容
w(可写)表明可以对文件的实际内容进行修改(不包括删除文件)
x(可执行)表明该文件可以被系统执行
  • 在这里需要注意的一定是,平时在我们的Windows系统中,判断一个文件是否可以执行是由文件的后缀名决定的(如.bat),而在Linux系统中,文件是否可以执行,是由是否具有x(可执行)这个权限来决定,而与文件后缀没有关系(在这里需要说明,可执行执行成功是两个概念,执行成功是由文件中的内容决定的)

  • 对于文件的权限,是针对文件中的内容的,所以文件的w(可写)权限,仅限于对文件进行内容层面的修改,而对于文件本身的修改(如重命名、删除文件)等的权限,是由文件所在目录的权限决定的

2.3.2 权限对目录的意义

目录的主要内容是记录文件名列表,文件名和目录有强烈的关系

权限意义
r(可读)表示具有读取目录结构列表的权限,可以查询该目录下的文件名数据
w(可写)表示具有更改该目录结构列表的权限,如下:
1.新建新的文件和目录
2.删除已经存在的文件和目录(不论该文件的权限为何)
3.将已经存在的文件或目录进行重命名
4.转移该目录内的文件、目录位置
x(可执行)表示用户能否进入该目录,成为工作目录的用途(即:能都cd进行)






参考书籍:《鸟哥的私房菜·第3版》
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值