• 第五章、Linux 的文件权限与目录配置 --《鸟哥的linux私房菜》


    Linux 最优秀的地方之一就在于他的多用户多任务环境。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要了。

    Linux 一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有read/write/execute 等权限。

    那么, 在 Linux 底下这么多的目录/文件,到底每个目录/文件代表什么意义呢?底下就来一一介绍呢!

    5.1 使用者与群组

    1. 文件拥有者

    各自拥有的权利

    一个测试例子(了解即可)

    在root用户下通过

    useradd -d /home/test test
    

    创建了一个test用户,指定了家目录是/home/test。然后使用test用户建立一个文件

    touch file.txt
    

    那么这个file.txt是属于test用户的,如果我在root用户下再建立一个jifen用户,指定家目录是/home/jifen

    [root@VM-4-7-centos ~]# useradd -d /home/jifen jifen
    

    那么jifen这个用户就没有权限查看我的file.txt文件。实质上根本没有权限访问 /home/test目录。

    [jifen@VM-4-7-centos ~]$ ll /home/test/
    ls: cannot open directory /home/test/: Permission denied
    

    2. 群组概念

    共同拥有的权利

    3. 其他人

    其实就是没啥交集的一个用户了

    ** Linux 系统里面账号、密码、群组信息的存储文件位置**
    Linux 系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,都是记录在/etc/passwd 这个文件内的。
    至于个人的密码则是记录在/etc/shadow 这个文件下。
    此外,Linux 所有的组名都纪录在/etc/group 内!
    不要随便删除这三个文件啊!

    5.2 Linux 文件权限概念

    5.2.1 Linux 文件属性

    [权限][连接][拥有者][群组][文件容量][修改日期][文件名/文件夹名]

     第一个字符代表这个文件是『目录、文件或链接文件等等』:

    o 当为[ d ]则是目录,例如上表档名为『.config』的那一行;
    o 当为[ - ]则是文件,例如上表档名为『initial-setup-ks.cfg』那一行;
    o 若是[ l ]则表示为连结档(link file);
    o 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    o 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    
    

     接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
    其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
    要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

    o 第一组为『文件拥有者可具备的权限』,
    o 第二组为『加入此群组之账号的权限』;
    o 第三组为『非本人且没有加入本群组之其他账号的权限』。
    第五栏为这个文件的容量大小,默认单位为 bytes;
    

    如果想要显示完整的时间格式,使用

    [test@VM-4-7-centos ~]$ ls -l --full-time
    total 8
    -rwxr-xr-x 1 test test  601 2021-01-19 14:12:35.915116966 +0800 loadods.pl
    drwxrwxr-x 5 test test 4096 2021-01-20 09:43:25.375335422 +0800 soft
    [test@VM-4-7-centos ~]$
    

    语言修改:中文并没有办法在纯文本的终端机模式中正确的显示,
    所以此栏会变成乱码。 那你就得要使用『export LC_ALL=en_US.utf8』来修改语系

    5.2.2 如何改变文件属性与权限(经常使用)

     chown :改变文件拥有者,或者群组
     chmod :改变文件的权限
    

    例如:把test用户下的loadods.pl文件的所属群组从test改为root

    [root@VM-4-7-centos ~]# ll /home/test/loadods.pl 
    -rwxr-xr-x 1 test test 601 Jan 19 14:12 /home/test/loadods.pl
    [root@VM-4-7-centos ~]# 
    [root@VM-4-7-centos ~]# 
    [root@VM-4-7-centos ~]# chown test:root /home/test/loadods.pl 
    [root@VM-4-7-centos ~]# 
    [root@VM-4-7-centos ~]# ll /home/test/loadods.pl 
    -rwxr-xr-x 1 test root 601 Jan 19 14:12 /home/test/loadods.pl
    [root@VM-4-7-centos ~]# 
    

     改变权限, chmod
    1. 数字类型改变文件权限
    Linux 文件的身份: owner/group/others 三种身份
    文件权限 read/write/execute 权限

    文件的权限字符为:『-rwxrwxrwx』
    各权限的分数对照表如下:

    r:4
    w:2
    x:1
    

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,
    例如当权限为: [-rwxrwx---] 分数则是:

    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= --- = 0+0+0 = 0
    

    2. 符号类型改变文件权限

    u, g, o 来代表三种身份的权限!
    a 则代表 all 亦即全部的身份!
    读、写、执行的权限就可以写成 r, w, x
    利用『chmod a+x filename』 ,就可以让该程序拥有执行的权限了
    例如:给test.txt文件赋予所有用户都可以写的权限

    [test@VM-4-7-centos lianxi]$ ll
    total 0
    -rw-rw-r-- 1 test test 0 Jan 20 18:24 test.txt
    [test@VM-4-7-centos lianxi]$ 
    [test@VM-4-7-centos lianxi]$ 
    [test@VM-4-7-centos lianxi]$ 
    [test@VM-4-7-centos lianxi]$ chmod a+x test.txt 
    [test@VM-4-7-centos lianxi]$ ll
    total 0
    -rwxrwxr-x 1 test test 0 Jan 20 18:24 test.txt
    

    5.2.3 目录与文件之权限意义:

     权限对文件的重要性

         r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
         w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
         x (eXecute):该文件具有可以被系统执行的权限。
    
    

     权限对目录的重要性
    目录主要的内容在记录文件名列表

         r (read contents in directory):,表示你可以查询该目录下的文件名数据    
         w (write):可以对该目录,以及目录下的文件CURD
         x (eXecute): 目录的 x 代表的是用户能否进入该目录成为工作目录(即可cd 进入该目录,执行比如start.sh等文件)
    

    5.3 Linux 目录配置

    最上层(/)及次层(/usr, /var)的目录内容应该要放置的文件或目录数据

     可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据
     不可分享的:自己机器上面运作的装置文件等, 仅与自身机器有关

     / (root, 根目录):与开机系统有关;
     /usr (unix software resource):与软件安装/执行有关;
     /var (variable):与系统运作过程有关。
    

    自己安装的额外软件,习惯放置在/usr/local
    /home 这是系统默认的用户家目录,比如test用户,默认的家目录是:/home/test

    必须存在的目录

    可以存在的目录

    /var 目录主要针对常态性变动的文件,包括快取(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件。

    在其他次目录层级内,就可以随开发者自行来配置

    5.3.2 目录树(directory tree)(了解)

    5.3.3 绝对路径与相对路径

     绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;  相对路径:是以『你当前所在路径的相对位置』来表示的。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法

    例如:当前在/home/test/soft路径下,想去进入/home/test/data_option路径写法:
    cd ../data_option/
    其中: 要回到上一层 (../)

    [test@VM-4-7-centos soft]$ 
    [test@VM-4-7-centos soft]$ pwd
    /home/test/soft
    [test@VM-4-7-centos soft]$ 
    [test@VM-4-7-centos soft]$ cd ../
    .cache/      .config/     data_option/ lianxi/      soft/        .ssh/
    [test@VM-4-7-centos soft]$ cd ../data_option/
    [test@VM-4-7-centos data_option]$ pwd
    /home/test/data_option
    [test@VM-4-7-centos data_option]$ 
    

    说明:

     . :代表当前的目录,也可以使用 ./ 来表示;
     .. :代表上一层目录,也可以 ../ 来代表。
    

    《本小节完》

  • 相关阅读:
    HDU4366 Successor 线段树+预处理
    POJ2823 Sliding Window 单调队列
    HDU寻找最大值 递推求连续区间
    UVA846 Steps 二分查找
    HDU3415 Max Sum of MaxKsubsequence 单调队列
    HDU时间挑战 树状数组
    UVA10168 Summation of Four Primes 哥德巴赫猜想
    UESTC我要长高 DP优化
    HDUChess 递推
    HDU4362 Dragon Ball DP+优化
  • 原文地址:https://www.cnblogs.com/lanboy/p/di-wu-zhanglinux-de-wen-jian-quan-xian-yu-mu-lu-pe.html
Copyright © 2020-2023  润新知