Linux 的文件权限与目录配置

用户和用户组

  • 文件所有者 (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)。
  • 每一个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统。
  • 每一个文件在此目录中的文件名(包含完整路径)都是独一无二的。

image

posted @ 2018-06-18 19:32  Lucare  阅读(167)  评论(0编辑  收藏  举报