欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux 的文件权限与目录配置

程序员文章站 2022-05-11 19:53:31
...

用户和用户组

  • 文件所有者 (owner)
  • 用户组概念 (group)
  • 其他人概念 (others)

Linux文件权限概念

1. Linux文件属性

要了解Linux文件属性,那么有个重要的命令必须提及–Sls。以root的身份登录Linux之后,执行“ls -al”,看到下面的内容:

drwx—— 3 root root 4096 Sep 5 10:37 .gconf
-rw-r–r– 1 root root 42304 Sep 4 18:26 install.log

ls 是 “list” 的意思,而参数 “-al” 则表示列出所有的文件详细的权限与属性(包含隐藏文件)。

  • 第一列代表这个文件的类型与权限

其中有十个字符。

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

[d] 代表目录
[-] 代表文件
[l] 表示为连接文件(linkfile[b] 表示设备文件里面的可供存储的接口设备
[c] 则表示设备文件里面的串行端口设备,例如键盘、鼠标。

接下来以3个为一组,且均为“rwx”的3个参数组合。其中[r]代表可读(read),[w]代表可写(write),[x]代表可执行(execute)。这三个权限的位置不会改变,如果没有权限就会出现减号[-]。

第一组为“文件所有者的权限”
第二组为“同用户组的权限”
第三组为“其他非本用户组的权限”

  • 第二列表示有多少文件名连接到此节点
  • 第三列表示这个文件(或目录)的“所有者账号”
  • 第四列表示这个文件所属用户组
  • 第五列为这个文件的容量大小,默认单位为B
  • 第六列为这个文件的创建日期或者是最近的修改日期
  • 第七列为该文件名

如果文件名之前多一个“.”,则代表这个文件为“隐藏文件”。

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

常用于用户组、所有者、各种身份的权限修改命令:

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

  • 改变文件所有者:chown

  • 改变权限:chmod

3. 目录与文件的权限意义

权限对文件的重要性

  • r (read): 可读取此文件的实际内容。
  • w (write):可以编辑、新增或者修改该文件的内容(但不含删除该文件)。
  • x (execute):该文件具有可以被系统执行的权限。

权限对目录的重要性

  • r (read contents in directory):表示具有读取目录结构列表的权限。

  • w (modify contents of directory):它表示你具有更改该目录结构列表的权限:
    新建新的文件与目录;
    删除已经存在的文件与目录(不论该文件的权限为何);
    将已存在的文件或目录进行重命名;
    转移该目录内的文件、目录位置。

  • x (access directory):代表用户能否进入该目录成为工作目录,所谓的工作目录就是你目前所在的目录。

Linux目录配置

1. Linux目录配置标准:FHS

规范每个特定的目录下应该要放置什么样的数据。

根目录 (/) 的意义与内容

  • /bin 系统有很多放置执行文件的目录,但bin比较特,其下放置的是在单用户维护模式下还能够被操作的命令。bin下面的命令可以被root与一般账号所使用,主要有cat, chmod, chown, date, mv, mkdir, cp , bash 等常用命令。

  • /boot 这个目录主要放置开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需配置文件等。

  • /dev 在Linux系统上,任何设备与接口设备都是以文件的形式存在于这个目录当中的。你只要通过访问这个目录下面的某个文件,就等于访问某个设备。

  • /etc 系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、各种服务的起始文件等。

  • /home 这是系统默认的用户主文件夹。

  • /lib 放置的是开机时会用到的库函数,以及在/bin 或 /sbin 下面的命令会调用的函数库。

  • /opt 这个是给第三方软件放置的目录。

  • /root 系统管理员的主文件夹。

  • /sbin 为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的命令。

  • /srv 可视为service的缩写,是一些网络服务启动后,这些服务所需要取用的数据目录。

  • /tmp 这是让一般用户或者是正在执行的程序暂时放置文件的地方。

/usr 的意义与内容

其实usr是 UNIX Software Resource的缩写,也就是“UNIX操作系统软件资源”所放置的目录,而不是用户的数据。

因为是所有系统默认的软件都会放置到/usr下面,因此这个目录有点类似Windows系统的“C:\Windows\”和“C:\Program files\”这两个目录的综合体。

一般来说,/usr的子目录建议有以下所示这些:

  • /usr/bin/ 绝大部分的用户可使用命令都放在这里。

  • /usr/include/ C/C++等程序语言的头文件与包含文件放置处。

  • /usr/lib/ 包含各应用软件的函数库、目标文件,以及不被一般用户惯用的执行文件或脚本。

  • /usr/local/ 系统管理员在本机自行安装自己下载的软件(非distribution默认提供者)。

  • /usr/sbin/ 非系统正常运行所需要的系统命令。

  • /usr/share/ 放置共享文件的地方。(/man 在线帮助文件 /doc 软件杂项的文件说明 /zoneinfo 与时区有关的时区文件)

  • /usr/src/ 一般源码建议放置到这里。内核源码则建议放置到/usr/src/linux/目录下。

/var 的意义与内容

如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动的文件,包括缓存、登录文件以及某些软件运行所产生的文件,包括程序文件(lock file,run file),或者例如MySQL数据库的文件等。

  • /var/cache 应用程序本身运行过程中会产生的一些暂存文件。

  • /var/lib 程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。MySQL的数据库放置到/var/lib/mysql/,而rpm的数据库则放到/var/lib/rpm目录下。

  • /var/lock/ 某些设备或者是文件资源一次只能被一个应用程序所使用,因此就得将该设备上锁,锁文件就放在此目录。

  • /var/run/ 某些程序或者服务启动后,会将它们的PID放置在这个目录下。

2. 目录树

  • 目录树的起始点为根目录(/,root)。
  • 每一个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统。
  • 每一个文件在此目录中的文件名(包含完整路径)都是独一无二的。

Linux 的文件权限与目录配置