5-Linux的文件权限与目录配置

鸟哥的Linux私房菜 专栏收录该内容
7 篇文章 0 订阅

Please indicate the source: http://blog.csdn.net/gaoxiangnumber1

Welcome to my github: https://github.com/gaoxiangnumber1

5.1 使用者与群组

  • Linux是多人多任务系统,它将文件可存取的身份分为三个类别:owner、group、others,三种身份各有read、write、execute等权限。

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

  • Linux默认情况下,所有系统上的账号、一般身份使用者、root的信息都记录在/etc/passwd;密码记录在/etc/shadow;所有的组名记录在/etc/group。

5.2 Linux文件权限概念

5.2.1 Linux文件属性

xiang:~ $ sudo -i #切换身份
Passwordroot:~ # ls -al
total 48
drwxr-xr-x  3       root            root        17          May 6 00:14     .config
-rw-r--r--  1       root            root        1864        May 4 18:01     initial-setup-ks
[1]         [2]     [3]         [4]     [5]         [6]             [7]
[权限]        [连结]    [拥有者]   [群组]    [文件容量]  [修改日期]      [档名]
  • ls(代表list)显示文件的文件名与相关属性。-al表示列出所有文件的权限与属性(包含隐藏文件,即文件名第一个字符为“.”的文件)。
  • 第一栏代表文件的类型与权限。共十个字符:
    1. 字符[1]:d是目录;-是文件;l是连结档(link file);b是装置文件中可供储存的接口设备(可随机存取装置);c是装置文件中的串行端口设备(如鼠标等一次性读取装置)。
    2. 字符[2, 9]:三个一组,均为rwx的组合(r可读、w可写、x可执行、-没有相应权限)。第一组为文件拥有者的权限;第二组为此群组中账号的权限;第三组为非本人且不属于本群组的账号的权限。
  • 第二栏表示有多少档名连结到此节点(i-node)。每个文件都会将它的权限与属性记录到文件系统的i-node中,但目录树使用文件名来记录,因此每个档名会连结到一个i-node。该属性记录有多少不同的档名连结到同一个i-node号码。
  • 第三栏表示这个文件/目录的拥有者账号。
  • 第四栏表示这个文件的所属群组。一个账号会加入一个或多个群组。
  • 第五栏为这个文件的容量大小,默认单位为byte。
  • 第六栏为这个文件的建档日期或者是最近的修改日期。内容为月/日/时间。如果被修改的时间距离现在太久,那么时间仅显示年份。利用ls -l --full-time显示完整的时间格式。
  • 第七栏为这个文件的档名。档名开头为“.”代表这个文件为隐藏档。

5.2.2 如何改变文件属性与权限

chgrp改变所属群组

chgrp [-R] directory-name/file-name ...
  • -R:进行递归变更,即连同次目录下的所有文件、目录都更新为这个群组。
  • 要被改变的组名必须在/etc/group内,否则就会显示错误。

chown改变文件拥有者

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录
  • 用户必须是已经存在系统中的账号,即在/etc/passwd文件内。
    也可以用chown user.group file,即在拥有者与群组间加上小数点。

chmod数字类型改变文件权限

  • 文件的基本权限有九个:3种身份(owner/group/others)*3种权限(read/write/execute)。使用数字来代表权限:r:4 w:2 x:1。每种身份的三个权限的分数累加。
chmod [-R] xyz 文件或目录
  • xyz:每一个代表一种身份的rwx属性数值的累加和。
    例:新建shell脚本的权限是-rw-rw-r--,若要将该文件变成可执行文件,且不允许它人修改,即-rwxr-xr-x,下达chmod 755 test.sh

chmod符号类型改变文件权限

  • 用a代表全部身份的权限,u/g/o代表三种身份的权限,r/w/x代表读/写/执行的权限。
chmod  [u,g,o,a]  [+,-,=]  [r,w,x]  文件/目录
  • 设定.bashrc的权限为-rwxr-xr-x:chmod u=rwx,go=rx .bashrc
    注意u=rwx,go=rx连在一起,中间无空格符。
  • +/-:没指定的权限不会变。只增加每个人可写.bashrc的权限:chmod a+w .bashrc

5.2.3 目录与文件之权限意义

权限对文件

  • 权限对文件的意义:
    r:可读取该文件的内容。
    w:可修改该文件的内容,但没有删除该文件的权限。
    x:该文件可被系统执行的权限。
  • 在Windows下一个文件是否可执行由扩展名决定;在Linux下由是否有x权限决定。

权限对目录

  • r:可读取目录结构列表。
    w:可修改目录,包括
    (1)建立新文件与目录。
    (2)删除存在的文件与目录(无论被删除的文件/目录本身的权限是什么)。
    (3)重命名已存在的文件或目录。
    (4)移动目录内的文件或目录的位置。
    x:代表用户能否进入该目录使其成为工作目录。
root :~ # cd /tmp
root :/tmp # mkdir testing
root :/tmp # chmod 744 testing
root :/tmp # touch testing/testing
root :/tmp # chmod 600 testing/testing
root :/tmp # ls -ald testing testing/testing
drwxr--r--. 2 root root 20 Jun 3 01:00 testing  #目录权限744,群组与使用者均为root
-rw-------. 1 root root 0 Jun 3 01:00 testing/testing

xiang :/~ $ cd /tmp
xiang :/tmp $ ls -l testing/
ls: cannot access test/test: Permission denied
total 0
-????????? ? ? ? ?             ? testing        #有r权限可以查询档名
                                            #因为没有x,所以会有一堆问号。
xiang :/tmp $ cd testing/
-bash:cd:testing/:Permission denied
#因为没有x,所以无法进入。
  • 只有r可以让用户读取目录的文件名列表,不过详细的信息读不到,同时也不能将该目录变成工作目录(用cd 进入该目录)。
root :/tmp # chown xiang testing
root :/tmp # ls -ld testing
drwxr--r--. 2 xiang root 20 63 01:00 testing              # xiang有全部权限

xiang :/tmp $ cd testing
xiang :/tmp/test $ ls -l                                   #可以进入目录
-rw-------. 1 root root 0 Jun 3 01:00 testing                   #文件不是xiang的。
xiang :/tmp/test $ rm testing                              #尝试删除这个文件
rm:remove write-protected regular empty file `testing'?y    #可以删除

用户操作功能与权限

  • xiang针对/dir1、/dir1/file1、/dir2三个档名来说,分别需要哪些最小的权限才能达成各项任务?
操作动作/dir1/dir1/file1/dir2重点
读取file1内容xr-能进入/dir1才能读里面的文件数据
修改file1内容xrw-能进入/dir1且能修改file1
执行file1内容xrx-能进入/dir1且file1能执行
删除file1文件wx--能修改/dir1目录的权限
将file1复制到/dir2xrwx能读file1且能修改/dir2目录
  • 目录的r代表能看到目录内的所有文件名称(非内容),但若已经知道里面文件的位置,可以没有r来修改目录及其中的文件。没有r的影响是使用tab时,无法自动补齐档名。

5.2.4 Linux文件种类与扩展名

  • 任何装置在Linux下都是文件。

文件种类

  • 正规文件(regular file):ls -al显示的第一个字符为“-”。按照文件内容可分为:
    1. 纯文本文件(ASCII)。纯文本文件的内容是人可以直接读到的数据。
    2. 二进制文件(binary)。Linux的可执行文件(除了script、文字型批处理文件)是这种格式。
    3. 数据格式文件(data file)。有些程序在运行时会读取某些特定格式的文件,这些文件被称为数据文件。例:Linux在使用者登入时,会将登录的数据记录在/var/log/wtmp文件内,该文件是一个data file,能通过last指令读出;但使用cat会读出乱码,因为它属于一种特殊格式的文件。
  • 目录(directory)。第一个属性为“d”。
  • 连结档(link)。第一个属性为“l”。
  • 设备与装置文件(device)。与系统周边及储存相关的文件,通常集中在/dev目录下,分为两种:
    1. 区块(block)设备文件。是储存数据以提供系统随机存取的接口设备,如硬盘。第一个属性为“b”。
    2. 字符(character)设备文件。是串行端口的接口设备,如鼠标。这些设备的特点是一次性读取,不能够截断输出,如不能让鼠标跳到另一个画面,而是连续性滑动到另一个地方。第一个属性为“c”。
  • 数据接口文件(sockets)。该类型的文件通常用于网络的数据收发。第一个属性为“s”。
  • 数据传送文件(FIFO,pipe)。FIFO的主要目的是解决多个程序同时存取同一个文件所造成的问题。第一个属性为“p”。

Linux文件扩展名

  • Linux文件能否被执行与x属性有关,与文件名无关。有可执行权限≠有可执行的程序代码,没有可执行程序代码的文件即使增加x权限也无法被执行。
  • 常用扩展名:
    *.sh:脚本或批处理文件(scripts)。
    *Z,*.tar,*.tar.gz,*.zip,*.tgz:压缩文件。
    *.html,*.php:HTML语法与PHP语法的网页文件。

Linux文件长度限制

  • Linux的Ext2/Ext3/Ext4文件系统对文件档名长度的限制:单一文件或目录的最大文件名为255-byte。

Linux文件名限制

  • 避免字符- + * ? > < ; & .[ ] | \ ’ ” ` () { }”因为这些符号在文字接口下有特殊意义。
  • 文件名的开头为小数点代表隐藏文件。

5.3 Linux目录配置

5.3.1 Linux目录配置的依据-Filesystem Hierarchy Standard(FHS)

  • FHS规范每个特定的目录下应该放什么样的数据。FHS依据文件系统使用的频率和是否允许使用者修改, 将目录定义成四种交互作用的形态,如下表格。
可分享的(sharable)不可分享的(un-sharable)
不变的-static/usr(软件存放处)
/opt(第三方协议软件)
可变动的-variable/var/mail(使用者邮件信箱)
/var/spool/news(新闻组)
  1. 可分享的:可以分享给其它主机挂载用的目录。
  2. 不可分享的:本机器上运行的装置文件或是与程序有关的socket文件等。因为仅与自身机器有关,所以不适合分享给其它主机。
  3. 不变的:有些数据不随着distribution变动,如函式库。
  4. 可变动的:经常改变的数据,如登录文件等。

    • FHS针对目录树定义出三层目录下面应该存放的数据,即下面三个目录的定义:
      1. /(root):与开机系统有关。
      2. /usr(unix software resource):与软件安装、执行有关。
      3. /var(variable):与系统运行过程有关。
    • 从账号角度看,root指系统管理员的身份;从目录角度看,root指根目录/。FHS定义根目录下应有下面这些次目录,即使没有实体目录,也至少有连结档。

第一部分:FHS要求必须要存在的目录

目录应存放文件内容
/bin/bin下的指令可以被root与一般账号使用,在单人维护模式下还能被操作。
/boot主要存放开机用到的文件,包括Linux核心文件、开机选单、开机配置文件等。Linux kernel常用的档名为vmlinuz;若使用grub2开机管理程序,则会存在/boot/grub2/目录。
/dev存放Linux的所有装置与接口设备文件。只要通过存取该目录下的某文件,就等于存取某个装置。
/etc存放系统主要的配置文件,如账号密码文件、各种服务的启始档等。该目录的各文件可以让一般使用者查阅,但只有root有权力修改。FHS建议不要存放可执行文件(binary)在该目录中。FHS规定下列目录最好存放在/etc/下:/etc/opt(必要:该目录存放第三方协议软件/opt的相关配置文件)、/etc/X11/(建议:存放与X Window有关的配置文件)、/etc/sgml/(建议:存放与SGML格式有关的配置文件)、/etc/xml/(建议:存放与XML格式有关的配置文件)。
/lib存放在开机时用到的函式库,以及在/bin或/sbin下面的指令会呼叫的函式库。FSH要求/lib/modules/目录必须存在,该目录存放可抽换式的核心相关模块(驱动程序)。
/media存放可移除的装置:软盘、光盘等装置都暂时挂载于此。
/mnt存放暂时挂载的额外装置。
/opt存放第三方协议软件。如KDE桌面管理系统。也能将额外的软件(非原本distribution提供)安装到这里。
/runFHS规定系统开机后产生的各项信息应该要存放到/run下面。
/sbin存放在开机过程中需要的指令(如开机、修复、还原系统需要的指令)。服务器软件程序一般存放到/usr/sbin/中。本机自行安装的软件产生的系统执行文件存放到/usr/local/sbin/中。
/srvsrv为service的缩写,是一些网络服务启动后,这些服务需要取用的数据目录。如WWW服务器需要的网页资料可以存放在/srv/www/。
/tmp这是让一般用户或正在执行的程序暂时存放文件的地方。任何人都能存取该目录。FHS建议在开机时将/tmp下的数据都删除。
/usr第二层FHS设定,后续介绍。
/var第二层FHS设定,主要存放变动性的数据,后续介绍。

第二部分:FHS建议存在的目录。

目录应存放文件内容
/home这是默认的用户家目录。家目录有两种代号:(1)~代表目前用户的家目录。(2)~xiang代表xiang的家目录。
/lib存放与/lib不同格式的二进制函式库,如支持64位的/lib64函式库。
/root系统管理员root的家目录。
  • 下面是在Linux中也是非常重要的目录:
目录应存放文件内容
/lost+found使用标准的ext2/ext3/ext4文件系统格式才会产生该目录。目的:当文件系统发生错误时,将遗失的片段存放到该目录下。
/proc该目录是一个虚拟文件系统(virtual file system)。它存放的数据都在内存中(如系统核心、进程信息、网络状态等),不占硬盘空间。
/sys该目录也是一个虚拟文件系统,也记录核心与系统硬件相关的信息,也不占硬盘容量喔。
  • Linux发生问题时,救援模式仅挂载根目录,因此有5个目录被要求一定要与根目录存放在一起:/etc、/bin、/dev、/lib、/sbin。

/usr(Unix Software Resource)的意义与内容

  • 所有系统默认的软件(distribution发布者提供的软件)都会存放到/usr下,它的次目录建议有下面这些:

第一部分:FHS要求/usr必须要存在的目录

目录应存放文件内容
/usr/bin/存放一般用户都能够使用的指令。FHS要求此目录不应该有子目录。
/usr/lib/基本上与/lib功能相同,/lib链接到此目录。
/usr/local/建议将系统管理员下载的软件(非distribution默认提供)安装到此目录。
/usr/sbin/存放非系统正常运行所需要的系统指令。/sbin是链接到此目录。
/usr/share/存放只读数据文件,包括共享文件。常见次目录:/usr/share/man(联机帮助文件)/usr/share/doc(软件说明文件)

第二部分:FHS建议/usr可以存在的目录

目录应存放文件内容
/usr/games/存放与游戏相关的数据
/usr/include/存放C/C++等语言的header与include。
/usr/libexec/存放使用者不常用的执行档或脚本。
/usr/lib/与/lib/功能相同,/lib链接到此目录
/usr/src/存放一般原始码;核心原始码存放到/usr/src/linux/目录。

/var的意义与内容

  • /var存放经常变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运行产生的文件。常见的次目录:

第一部分:FHS要求/var必须要存在的目录

目录应存放文件内容
/var/cache/存放程序运行过程中产生的暂存档。
/var/lib/存放程序执行过程中需要用到的数据文件。此目录下各自的软件应该要有各自的目录。
/var/lock/某些装置或文件一次只能被一个程序使用,如果同时有两个程序使用,可能产生错误,因此要将该装置上锁(lock),确保该装置只会给单一软件使用。
/var/log/存放登录文件的目录。
/var/mail/存放个人电子邮件的目录。该目录也被存放到/var/spool/mail/中,通常这两个目录互为链接文件。
/var/run/某些程序或服务启动后,会将它们的PID存放在该目录下。该目录链接到/run。
/var/spool/存放排队等待其它程序使用的数据,这些数据被使用后通常会被删除。

5.3.2 目录树(directory tree)

  • Linux所有文件与目录都是由根目录开始,然后一个个分支下来,称为目录树(directory tree)。特性有:
    1. 目录树的启始点为根目录(/)。
    2. 每个目录既能使用本地partition的文件系统,也能使用网络上的filesystem。
    3. 每一个文件在目录树中的文件名(包含完整路径)都是唯一的。
xiang :~ $ ls -l /
total 152
drwxr-xr-x   2 root root  4096  713 07:36 bin
drwxr-xr-x   4 root root  4096  713 07:37 boot
drwxrwxr-x   2 root root  4096  725  2015 cdrom
drwxr-xr-x  18 root root  4240 109 07:59 dev
drwxr-xr-x 150 root root 12288 109 07:59 etc
drwxr-xr-x   3 root root  4096  725  2015 home
lrwxrwxrwx   1 root root    33  713 07:36 initrd.img -> boot/initrd.img-3.16.0-76-generic
lrwxrwxrwx   1 root root    33  920  2015 initrd.img.old -> boot/initrd.img-3.16.0-49-generic
drwxr-xr-x  24 root root  4096  713 07:35 lib
drwxr-xr-x   2 root root 12288  713 07:35 lib32
drwxr-xr-x   2 root root  4096  713 07:35 lib64
drwx------   2 root root 16384  725  2015 lost+found
drwxr-xr-x   3 root root  4096  725  2015 media
drwxr-xr-x   2 root root  4096  411  2014 mnt
drwxr-xr-x   5 root root  4096  423 14:16 opt
dr-xr-xr-x 257 root root     0 109 07:59 proc
drwx------  15 root root  4096 107 13:36 root
drwxr-xr-x  26 root root   860 109 08:25 run
drwxr-xr-x   2 root root 12288  920 10:06 sbin
drwxr-xr-x   2 root root  4096  219  2015 srv
dr-xr-xr-x  13 root root     0 109 07:59 sys
drwxrwxrwt   8 root root 45056 109 13:17 tmp
drwxr-xr-x  11 root root  4096 1022  2015 usr
drwxr-xr-x  14 root root  4096  922  2015 var
lrwxrwxrwx   1 root root    30  713 07:36 vmlinuz -> boot/vmlinuz-3.16.0-76-generic
lrwxrwxrwx   1 root root    30  920  2015 vmlinuz.old -> boot/vmlinuz-3.16.0-49-generic

5.3.3 绝对路径与相对路径

  • 两个特殊目录:
    1. .代表当前目录,也可以用./表示;
    2. ..代表上一层目录,也可以用../表示。
  • 绝对路径:由根目录/开始写起的文件名或目录名,如/home/xiang/.bashrc。
  • 相对路径:相对于目前路径的文件名,如./home/xiang或../../home/xiang/。开头不是/就是相对路径。

5.3.4 CentOS的观察

xiang:~ $ uname -r #查看核心版本
3.10.0-229.el7.x86_64
xiang:~ $ uname -m #查看操作系统的位版本
x86_64

5.4 重点回顾

Please indicate the source: http://blog.csdn.net/gaoxiangnumber1

Welcome to my github: https://github.com/gaoxiangnumber1

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值