Linux基础学习笔记-文件权限

前言

学习计划里有一些关于Linux的知识,所以今后一段时间用来学习Linux的基础知识和服务器架设知识,平时一直在用,但是一知半解,抱着一颗努力的心,开始吧!以下是有关Linux文件权限和目录配置的一些笔记!

Linux文件权限

使用者与群组

每个文件都有非常多的权限与属性,其中最重要的就是文件的拥有者的概念。

  1. 文件拥有者

    其实就是创建文件的那个人,linux是个多用户多任务的系统,因此会有很多人使用这个系统,所以就需要考虑每个人的隐私权

  2. 群组概念

    每组的成员之间能够互相修改对方的数据,但是其他组的组员则不会看到本组的文件内容。

    每个人都可以键入多个群组

  3. 其他人

    不属于文件拥有者和群组成员的第三者

  4. root

    root属于天神级别,凌驾于所有权限之上

MBeeNd.png

系统上的账号与一般身份用户,还有root用户的相关信息都记录在/etc/passwd文件中,个人密码记录在/etc/shadow里面,组名都记录在/etc/group里

Linux文件权限概念

Linux文件属性

使用ls -l就可以直接将文件的最详细信息列出来:

MBmnZF.png

  1. 第一栏代表这个文件的类型和权限

    MBmYqO.png

    第一个字符代表这个文件是目录、文件或者链接文件等等

    1
    2
    3
    4
    5
    [d] 表示目录
    [-] 表示文件
    [l] 表示链接文件
    [b] 表示设备文件里可供储存的周边设备
    [c] 表示设备文件里的串行端口设备,键盘鼠标之类

    下面的字符三个一组,均为【rwx】的三个参数的组合,其中【r】表示可读,【w】表示可写,【x】代表可执行

    第一组为文件拥有者可以具备的权限
    第二组为加入此群组的账号的权限
    第三组为非本人且没有加入本群组的其他账户的权限

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

    每个文件都会将他的权限与属性记录到文件系统的inode里面,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会链接到一个inode。这个属性记录的就是有多少个不同的文件名连接到相同的一个inode号码上

  3. 第三栏表示的是这个文件的拥有者账户

  4. 第四栏表示的是这个我文件的所属群组

  5. 第五栏为这个文件的容量大小,默认单位bytes

  6. 第六栏为这个文件的创建日期或者最近修改时间

  7. 第七栏为这个文件的文件名

notes:

如果文件名之前多了一个【.】,就代表这个文件为隐藏文件

Linux文件权限的重要性

  1. 系统保护功能

    类似shadow这类账号管理文件非常重要,不能让任何人读取,只有root才可以读取,所以设置为所有人都没有任何权限

  2. 团队开发软件或数据共享功能

    开发团队的小组,希望每个人都可以使用某些目录下的文件,而不对其他团队开放就可以设置文件的权限来解决

如何改变文件属性和权限

chgrp:改变文件所属群组

chown:改变文件拥有者

chmod:改变文件的权限,SUID,SGID,SBIT等

chgrp

change group,直接以chgrp+群组名称+文件名即可改变文件的所属群组;如果是目录文件,且想要递归进行持续变更,需要在chgrp后面加上-R参数;需要注意的是这个群组名称必须要在/etc/group里面存在

1
2
3
4
5
6
7
[gard3nia@localhost hack]$ ls -l
total 0
-rw-rw-r--. 1 gard3nia gard3nia 0 Nov 9 03:01 hack.txt
[gard3nia@localhost hack]$ chgrp docker hack.txt
[gard3nia@localhost hack]$ ls -l
total 0
-rw-rw-r--. 1 gard3nia docker 0 Nov 9 03:01 hack.txt

chown

change owner,改变文件的拥有者,后面跟上的用户名必须要在/etc/passwd里存在才可以。

1
2
3
4
[gard3nia@localhost hack]$ sudo chown xl hack.txt
[gard3nia@localhost hack]$ ls -l
total 0
-rw-rw-r--. 1 xl gard3nia 0 Nov 9 03:01 hack.txt

此外chown还可以顺便修改群组,如果想要连同目录下面的所有文件或者目录全部都同时更改,直接加上-R参数即可;下面是一种方式,直接使用用户名:用户组

1
2
3
4
[gard3nia@localhost hack]$ sudo chown xl:xl hack.txt
[gard3nia@localhost hack]$ ls -l
total 0
-rw-rw-r--. 1 xl xl 0 Nov 9 03:01 hack.txt

还有另一种方式用户名.用户组

1
2
3
4
5
[gard3nia@localhost hack]$ sudo chown gard3nia.gard3nia hack.txt
[sudo] password for gard3nia:
[gard3nia@localhost hack]$ ls -l
total 0
-rw-rw-r--. 1 gard3nia gard3nia 0 Nov 9 03:01 hack.txt

notes:

什么时候来使用这两个命令?最常见的就是在复制文件给你自己以外的其他人的时候,cp行为会复制执行者的权限和属性

chmod

文件的权限改变使用的是chmod这个指令,但是权限的设置方法有两种,可以分别使用数字和符号来进行趣新年的变更;

  • 使用数字类型改变文件权限

    Linux文件的基本权限有九个,分别是/owner/group/others对应的【rwx】权限,可以使用数字来表示【rwx】三个值:

    r:4>w:2>x:1

    每个身份的各自权限值需要累加

    owner=rwx=4+2+1=7>group=rwx=4+2+1=7>others=—=0

    所以这样就可以直接设置

    1
    chmod 770 filename

    规范的chmod语法如下:

    1
    chmod [-R] xyz filename
  • 符号类型改变文件权限

    借由u,g,o来代表三种身份的权限,此外a表示all即全部的身份,读写权限就写成rwx即可,可使用+,-,=来进行权限的赋值:

    1
    2
    3
    chmod u=rwx,go=rx filename
    chmod a-x filename
    chmod a+x filename

目录与文件权限的意义

文件权限的意义

对于文件的rwx来说,主要都是针对文件的内容而言:

r:读取此文件内容

w:可以写入,编辑,新增,修改此文件的内容(不含删除此文件)

x:该文件具有被系统执行的权限

notes:

文件能否被执行,靠的是x这个权限,和文件名没有直接关系

目录权限的意义

目录的内容在记录文件名清单,具体的rwx和文件含义区别很大:

r:表示具有读取目录结构清单的权限,可以查询该目录下面的文件名数据,所以就可以用ls这个命令该目录的内容列表显示出来

w:表示具有变动目录结构清单的权限,具体指:

  • 创建新目录
  • 删除已经存在的目录或者文件(无论权限)
  • 更改文件名或者目录名
  • 搬迁该目录内的文件、目录位置

x:表示使用者可以进入该目录,将其作为工作目录,即cd进去

Linux文件种类与扩展名

1.文件种类

  • [-]表示常规文件,又可分类:
    • 纯文本文件:我们可以直接读取到数据,比如数字,字母等,几乎可以作为设置的文件都属于这一文件类型
    • 二进制文件:系统其实仅仅认识且可以执行二进制文件,Linux当中的可执行文件就是这种格式
    • 数据格式文件:有些程序在运行过程中会读取某些特定格式的文件成为data file
  • [d]表示目录文件
  • [l]表示链接文件,类似windows的快捷方式
  • 设备与设备文件(device):与系统周边及存储相关的一些文件,集中在/dev这个目录下面
    • 区块设备文件
    • 字符设备文件
  • 数据接口文件(sockets):常常被用于在网络上的数据承接,服务器和客户端可以通过sockets来进行数据沟通’
  • 数据输送档(FIFO)

2.文件扩展名

Linux上文件的扩展名只是让你了解该文件的用途而已。文件是否具有执行能力,是需要看文件的执行权限的,即x,文件能不能成功执行,就需要看文件的内容

Linux目录配置

FHS标准

/bin:放置的是在单人维护模式下还能被操作的指令,可以被root和一般账户使用

/boot:放置开机会使用到的文件,包括linux的核心文件,开机菜单,配置文件

/dev:任何周边设备都是以文件的形态存在于这个目录当中

/etc:系统主要的配置文件,不放置可执行文件

/lib:放置的是在开机时会用到的函数库

/media:媒体,软盘,光盘等挂载地点,是一些可删除的设备

/mnt:暂时挂载某些额外的设备

/opt:一些第三方辅助软件的目录

/run:系统启动以后产生的信息

/sbin:启动过程中需要的启动,修复,还原系统所需要的命令

/srv:service,是一些网络服务启动以后,这些服务需要使用的数据目录

/tmp:暂存文件,正在执行的程序暂时放置文件的地方

/usr:如下

/var:如下

/home:家目录

/root:root家目录

/usr

/usr/bin:和/bin一毛一样,/bin被链接至此

/usr/lib:和/lib一样,/lib被链接至此

/usr/local:系统管理员在本机安装下载的软件的安装目录

/usr/sbin:/sbin链接至此

/usr/share:放置只读文件,也包括共享文件

/var

/var/cache:应用程序本身运行过程中产生的一些缓存

/var/lib:程序执行的过程中,需要使用的数据文件放置的目录

/var/lock:某些设备只能别一个人使用,起到上锁的作用

/var/log:日志文件的放置目录

/var/mail:电子邮件目录

/var/run:某些程序启动以后,会将他们的pid放置到这个目录下面,连接到/run

/var/spool:放置一些队列数据,排队等待其他程序使用的数据

目录树

MD6Tfg.png

相对路径和绝对路径

  • 绝对路径:由根目录/开始写起的文件名或者目录名称
  • 相对路径:相对于目前路径的文件名写法

cd /var/log

cd ../var/log

【.】表示当前目录

【..】表示上一层目录

参考书目

《鸟哥的Linux私房菜基础学习篇》

Author: Gard3nia
Link: https://gardenia30.top/2019/11/02/Linux基础学习笔记-文件权限/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.