• 第八天 RHEL7.2 文件权限管理(第一部分)


    一、文件的基本权限

    文件有三种访问方式限制访问权限

    第一种:文件所有者的访问权限

    第二种:文件所有者同组的访问权限

    第三种:其他人访问权限

    当使用ls -l 或ll命令时,可查看此三种权限

    在权限描述前,有一个字符,用来描述文件类型,具体文件类型与对应字符如下:

    -    代表普通文件

    d    代表directory,目录文件

    l     代表link,连接文件,指向另一个文件

    c    代表character,字符设备文件

    b    代表blocks,块设备文件

    s    代表sockets,套接字文件

    p   代表pipes,命名管道文件

    后两种不是很常见

     

    三种权限分别代表 分别为文件所有者、文件所有者属组、其他人

    每个权限由三个字符表示即如下:

         -          rw-      r--      r--     root     root   1.txt

    文件类型   拥有者  属组   其他人  所有者   属组    对象

    其中:

    - 表示没有此权限

    r  表示read,可读

    w 表示write,可写

    x 表示execute,可执行

    ================================================================== 

    二、文件的特殊权限

    其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.

    因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成入侵,甚至摧毁系统!!!

    s(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,heike经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。

    如:passwd命令

    ll /usr/bin/passwd

    -rwsr-xr-x. 1 root root 27832 1月 30 2014 /usr/bin/passwd

    举例:

    使用root查看密码文件

    使用gan查看密码文件

     

    怎样实现所有用户都能查看呢

    使用root用户给/bin/cat添加s特权

    再添加一个普通用户尝试:

    为什么可以查看了呢?其实我们是借用root用户的身份执行的

    s(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。

    强调: SUID一般用在文件上(脚本) ,SGID用在目录上比较多

    举例:

    [root@xiaogan ~]# mkdir /test
    [root@xiaogan ~]# groupadd xiaogan
    [root@xiaogan ~]# useradd -G xiaogan gan1
    [root@xiaogan ~]# useradd -G xiaogan gan2
    [root@xiaogan ~]# chown :xiaogan /test
    [root@xiaogan ~]# ll -d /test
    drwxr-xr-x 2 root xiaogan 6 8月   6 15:07 /test
    [root@xiaogan ~]# chmod 775 /test
    [root@xiaogan ~]# chmod g+s /test
    [root@xiaogan ~]# ll -d /test/
    drwxrwsr-x 2 root xiaogan 6 8月   6 15:07 /test/
    [root@xiaogan ~]# su - gan1
    [gan1@xiaogan ~]$ cd /test/
    [gan1@xiaogan test]$ touch a
    [gan1@xiaogan test]$ touch b
    [gan1@xiaogan test]$ ll 
    total 0
    -rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 a
    -rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 b
    [gan1@xiaogan test]$ exit
    logout
    [root@xiaogan ~]# su - gan2
    [gan2@xiaogan ~]$ cd /test/
    [gan2@xiaogan test]$ touch c
    [gan2@xiaogan test]$ touch d
    [gan2@xiaogan test]$ ll
    total 0
    -rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 a
    -rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 b
    -rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:10 c
    -rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:10 d

    别人在此目录中创建的任何目录和文件,所属组都是此目录的所属组

    但是属主还是自己

    但是任何人在此目录创建的文件,都可以被删除

    ============================================================

    SBIT(Sticky):只针对目录有效,对文件无效,作用是防止别人删除掉对方的资料

    [root@xiaogan ~]# ll -d /test/
    drwxrwsr-x 2 root xiaogan 38 8月   6 15:14 /test/
    [root@xiaogan ~]# chmod o+t /test
    [root@xiaogan ~]# ll -d /test/
    drwxrwsr-t 2 root xiaogan 38 8月   6 15:14 /test/
    [root@xiaogan ~]# su - gan1
    Last login: 六 8月  6 15:13:23 CST 2016 on pts/0
    [gan1@xiaogan ~]$ cd /test/
    [gan1@xiaogan test]$ ll
    total 0
    -rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 a
    -rw-rw-r-- 1 gan1 xiaogan 0 8月   6 15:10 b
    -rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:14 c
    -rw-rw-r-- 1 gan2 xiaogan 0 8月   6 15:10 d
    [gan1@xiaogan test]$ rm -rf c
    rm: cannot remove ‘c’: Operation not permitted
    [gan1@xiaogan test]$ 

    ============================================================

    因为SUID、SGID、Sticky占用x的位置来表示,所以在表示上会有大小写之分。

    加入同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的:

    [root@xiaogan ~]# ll test.txt 
    -rw-r--r-- 1 root root 0 8月   6 15:17 test.txt
    [root@xiaogan ~]# chmod 777 test.txt 
    [root@xiaogan ~]# ll test.txt 
    -rwxrwxrwx 1 root root 0 8月   6 15:17 test.txt
    [root@xiaogan ~]# chmod u+s test.txt 
    [root@xiaogan ~]# ll test.txt 
    -rwsrwxrwx 1 root root 0 8月   6 15:17 test.txt
    [root@xiaogan ~]# chmod u-x test.txt 
    [root@xiaogan ~]# ll test.txt 
    -rwSrwxrwx 1 root root 0 8月   6 15:17 test.txt
    [root@xiaogan ~]# 

    ===================================================================

    三、文件权限操作命令 chmod

    我们可以使用chmod命令修改文件权限,

    u --> 拥有者权限

    g -->属组权限

    o -->其他人权限

    例如:chmod u+x 1.txt

    [root@xiaogan ~]# ll 1.txt 
    -rwxr--r--. 1 root root 1598 8月 5 13:48 1.txt

    我们还可以使用三个数字来表示目前1.txt文件的访问权限

    如图:

    前三个字符,代表拥有者权限,中间三个字符代表属组权限,最后三个字符,其他人权限

    可分别用一个数字表示三者对应权限,即744,如图:

    rwx中,r对应二进制位中的第三位2的2次方,等于4

    w对应二进制位中第二位2的一次方,等于2

    x对应二进制位中第一位2的零次方,等于1

    若没有对应权限取值为0,故1.txt文件访问权限用三位数表示如图

     

    -rwx------:  文件所有者对文件具有读取、写入和执行的权限。  

    -rwxr―r--:    文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。

    -rw-rw-r-x:   文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。

    drwx--x--x:   目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。

    drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

    -rwx------:等于数字表示700

    -rwxr―r--:等于数字表示744

    -rw-rw-r-x:等于数字表示665

    drwx―x―x:等于数字表示711

    drwx------:等于数字表示700

    ===================================================================

    使用命令chown命令,改变目录或文件的所有权

    chown:

    作用:修改文件拥有者和所属组

    语法:chown USER:GROUP 对象

         chown 用户:组  文件

     

    操作更改属主:

    chown 用户 对象

    单独更改属组:

    chown :组 对象

    文件与目录不仅可以改变权限,其所有权及所属用户组也能修改,和设置权限类似,

    用户可以通过图形界面来设置,或执行chown命令来修改。

    要修改目录的权限,使用-R参数就可以了,方法和前面一样。 (-R 递归)

    [root@xiaogan ~]# ll 1.txt
    -rw-r--r-- 1 root root 0 8月   6 15:22 1.txt
    [root@xiaogan ~]# chown gan:gan 1.txt 
    [root@xiaogan ~]# ll 1.txt 
    -rw-r--r-- 1 gan gan 0 8月   6 15:22 1.txt
    [root@xiaogan ~]# chown root 1.txt 
    [root@xiaogan ~]# ll 1.txt 
    -rw-r--r-- 1 root gan 0 8月   6 15:22 1.txt
    [root@xiaogan ~]# chown :root 1.txt 
    [root@xiaogan ~]# ll 1.txt 
    -rw-r--r-- 1 root root 0 8月   6 15:22 1.txt
    [root@xiaogan ~]# 

    ===================================================================

    我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢?

    umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反.

    mask设置的是权限补码,而chmod设置的是文件权限码。

    一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

    vim /etc/profile

    umask采用的是补码算法,对于文件,最大值是6,对于目录最大值是7

    当我们使用root用户新建一个文件时,umask 022会执行

    如此,会采用补码算法,拿掉我们新建文件的 属组 与 其他人 的 读权限,故权限是 755 如上图

    对于Linux来说,文件默认是没有执行权限的,所以最大值是6,故在新建文件时,权限是644

    umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。

    对于文件来说,这一数字的最大值分别是6。

    系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。

     

    目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。

     该命令的一般形式为:umask nnn 其中nnn为umask置000 - 777。

    我们只要记住u m a s k是从权限中拿走相应的位即可。

     如:umask值为022,则默认目录权限为755,默认文件权限为644。

    计算方法:

    文件默认权限=666-umask值   666-022=644

    目录默认权限=777-umask 值   777-022=755

    #这是一个好的记忆方法,但不严谨。

    举例:创建 一个文件:

    umask=033

    touch c.txt 

    那么c.txt的默认文件权限是?

     

    umask掩码为033 .

    666-033=633  结果为: 644

  • 相关阅读:
    很多网络库介绍
    CFileFind
    C#编写COM组件
    使用javascript调用com组件
    C++ 解析Json——jsoncpp
    休眠与开机自动运行等VC代码
    win7 vs2012/2013 编译boost 1.55
    VC中的字符串转换宏
    InstallShield 静默安装
    CAD版本 注册表信息
  • 原文地址:https://www.cnblogs.com/xiaogan/p/5744201.html
Copyright © 2020-2023  润新知