• Linux档案/目录 权限及修改


    首先所有权限对于三类用户分别设定: User(所有者) / Group(组群) / Others(其他)。

    权限也是有三种:Read / Write / eXecute,这三种权限对于文档和目录有不同的意义。

    1. 对于文档:

    Read:可以查看文档的内容

    Write:可以修改文档的内容,添加、删除、修改内容等

    eXecute:文档可执行

    需要注意:对于文档,权限指的是对于文档内容的权限而不是对于文档本身的权限。举个例子就是说即使有对文档的read,write,execute全部的权限,也不能决定是否删除移动文档本身,这些权限是由目录权限规定的。

    2. 对于文件夹:

    Read: 可以查看文件夹下文件/目录列表

    Write:可以在目录下添加、删除文件/目录,当然还有修改文件名/目录名

    eXecute: 是否可以作为工作目录,即是否可以cd进来

    注意:对于文件夹,没有execute权限的话,Read write功能都不能被正常使用


    修改权限的命令:chown,chgrp,chmod, 

    chown:

    $sudo chown 账号名 文件名/目录名  #只改拥有者

    $sudo chown 账号名:组群 文件名/目录名 #改拥有者和组群

    $sudo chown 账号名.组群 文件名/目录名 #同上

    $sudo chown .组群 文件名/目录名 #只改组群

    chgrp:

    $sudo chgrp 组名 文件名/目录名

    chmod:修改权限的时候并不是每次都要写9个权限的,太长了

    每个权限有对应的整数值,read(4),write(2),execute(1), 用他们的和就可代表一类权限。

    $sudo chmod 744 文件名/目录名 

    虽然这样已经将参数从9减至3了,但依然不够简便。可以利用+/-/=来增加/删除/设定权限。其中用u/g/o/a分别表示拥有者/群组/其他用户/全部。

    $sudo chmod u+x,go-w 文件名/目录名 #给拥有者增加execute权限,其他用户撤销write权限。

    p.s.  上述的命令用语文件夹时可以加上选项 -R 表示对文件夹的所有目录递归使用。


    2010.12.7日补充:

    除了普通的r,w,x等权限,文档/目录还有默认权限,隐藏权限和特殊权限,下面分别介绍。

    默认权限:

    umask:新建档案或目录的默认属性,新建档案没有execute权限,新建目录有execute权限

    $umask -S

    u=rwx,g=rx,o=rx

    $umask

    0022

    注意,以数字显示权限中,数字表示的是该默认值需要减掉到权限,如2,表示没有w=2权限

    隐藏权限:lsattr,chattr,只有在ext2/ext3/ext4下面有效,其他文件系统下显示“lsattr: 对设备不适当的 ioctl 操作 While reading flags on ...”错,需要用到的请man

    特殊权限:SUID, SGID, SBIT

    我们已经知道了文档/目录有r,w,x三个权限,但是有时还会有s,t权限,比如passwd,/tmp,等的权限如下所示:

    -rwsr-xr-x 1 root root 37140 2010-01-27 01:09 /usr/bin/passwd*

    drwxrwxrwt 13 root root 4096 2010-12-07 09:58 ./

    s对应于文档所有者的权限时对应SUID(Set User ID)权限。SUID权限只存在于二进制程序,是指一般用户执行此二进制程序时获得root权限(要求一般用户对文档有x权限噢)。注意对目录和非二进制程序到文档不存在这样到权限。

    s对应与文档所属群组到权限时对应SGID(Set Group ID)权限。SGID权限对二进制程序文档和目录均有效:对于二进制程序文档,一般用户执行时获得文档所在群组到权限(要求一般用户对文档有x权限);对于目录,一般用户进入此目录时有目录所属群组的权限,当用户在此目录中新建文档/目录时,新建文档/目录到所属群为当前目录的所属群。

    t对应于目录权限时对应SBIT(Sticky BIT),在该目录下新创建到的文档和目录只有所有者和root可以删除(可以创建是要求有w,x权限)。 

    如何设定特殊权限呢? 我们知道一般可以用744这个三个数字代表所有者,所在群组和其他用户的权限。在这三个数前面再加上一个数则代表特殊权限,其中SUID(4),SGID(2),SBIT(1).

    liyx@liyx-ubuntu:~$ ll special

    -rw-r--r-- 1 liyx liyx 0 2010-12-07 11:15 special

    liyx@liyx-ubuntu:~$ chmod 4755 special

    liyx@liyx-ubuntu:~$ ll special

    -rwsr-xr-x 1 liyx liyx 0 2010-12-07 11:15 special*

    当然也可以用$chmod o+s special 的方式修改特殊权限。


    参考:《鸟哥的Linux私房菜基础篇》

  • 相关阅读:
    effective C++ 条款 46:需要类型转换时请为模板定义非成员函数
    effective C++ 条款 42:了解typename的双重意义
    effective C++ 条款 38:通过复合塑模出hasa或“根据某物实现出”
    effective C++ 条款 44:将与参数无关的代码抽离templates
    职场女性工作的六大禁忌
    正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起
    C# 截图 窗体截图 屏幕截图
    C# 创建DataSet 实例
    c# WinForm 中鼠标控制窗体的移动
    访问用户控件里面的控件的两种方法
  • 原文地址:https://www.cnblogs.com/liyuxia713/p/2540726.html
Copyright © 2020-2023  润新知