array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Linux-基础学习(4) - 爱码网

一、ls命令

Linux-基础学习(4)

1、文件类型:文件类型是“-”表示这是一个普通文件;

                      d  表示这是一个目录
                      c  表示这是一个字符设备
                      s  表示 套接字
                      p  表示 管道
                      b  表示  快设备
                      l  表示   连接

 2、文件权限:文件权限是rw-r--r-- ,表示文件属主可读、可写、不可执行;文件所归属的用户组不可写,可读,不可执行;其它用户不可写,可读,不可执行。

rw- 表示所有人的权限

r-- 表示所有组的权限

r-- 表示其他的权限

(1)rwx对于文件代表的意思:

r=read 可读取文件的实际内容 ;

w=write 可以编辑、新增或者是修改该文件的内容 ;

x=execute 该文件具有可以被系统执行的权限;

(2)rwx对于目录代表的意思

r :能读文件清单内容,能读到目录下有那些文件;

w :能修改目录内容,简单的讲能删除、新建目录或文件;

x :指能切换至该目录成为工作环境。但此时能不能做什么事情要看你的w权限是否有。


3、“ 1 ”

对文件:文件内容被系统记录的次数

对目录:目录中文件属性的字节数

 

4、文件属主:也就是这个文件归哪于哪个用户 ,它归于root,也就是第一个root;


5、文件属组:也就是说,对于这个文件,它归属于哪个用户组,在这里是root用户组;


6、“2005 Apr 3 04:07 ”:这里的时间是最后访问的时间,最后访问和文件被修改或创建的时间,有时并不是一致的;


7、file:文件名称


当然文档的属性不仅仅包括这些,这些是我们最常用的一些属性。


二、文件、目录的所有人、所有组修

  1、chown  username  filename|directory

                更改文件的所有人
               Linux-基础学习(4)     

2、chown username.groupname filename 

更改所有人所有组
Linux-基础学习(4)
 

3、chown -R username filename

更改目录本身及里面所有内容的所有人

Linux-基础学习(4)

4、chgrp -R groupname dir 

更改目录本身及里面所有内容的所有组

Linux-基础学习(4)

三、对文件或目录权限的修改

1、字符的方式修改文件或目录的权限

  chown [-R] <u|g|o><+|-|=><r|w|x> filename |directory


(1)chmod u-x file1

file拥有者去掉x权限

Linux-基础学习(4)

Linux-基础学习(4)


(2)chmod g+w file1 

file拥有组添加w权限

Linux-基础学习(4)


(3)chmod u-x,g+w o-r file

file拥有者去掉x权限,file拥有组添加w权限,file其他去掉o权限

Linux-基础学习(4)



(4)chmod ug-r file

file的用户组去掉r权限

Linux-基础学习(4)



(5)chmod ugo+r file

file用户、组、其他人增加r权限

Linux-基础学习(4)


2、数字方式修改该文件权限

(1)在linux中

r=4;          w=2;           x=1;

(2)文件权限数字表示方式

rw-|r--|r--

 u   g   o

u=rw-=4+2+0=6

g=r--=4+0+0=4

o=r--=4+0+0=4

所以文件系统初始默认权限表示为:644

 

chmod 修改后权限值 file

chmod 777 file

使用 chnod 777 file 让文件file为最高权限

Linux-基础学习(4)

修改为777后:

Linux-基础学习(4)


三、系统默认权限的设定

       从系统存在的角度来讲,开放的权利越大,系统的存在意义越高,但是从系统的安全角度来讲,开放的权利越少,系统的安全性越高,所以系统在设定新建文件或目录会去掉一些权限。

     系统权限的满值为777。umask 是系统在新建文件或目录时保留的权利大小(即系统给文件的权限则为777-umask,umask的值越大,系统创建的文件的权限越小)。

 1、查看系统保留权限默认值

  umask         #查看系统保留权限的默认值(未经过改动一般为022)

Linux-基础学习(4)

 2、暂时设置文件权限

 umask  077      #将系统的保留权限值设置为077,但是此种方法只是临时设置,只在当前shell中有效

 3、永久更改系统保留权限默认值

vim /etc/bashrc 

70     if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

71     umask 002    ##普通用户umask

72     else

73     umask 077    ##超级用户umask   

74     fi

 

vim /etc/profile ##系统

59    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

60     umask 002    ##普通用户umask

61     else

62     umask 077     ##超级用户umask

63        fi

 

以上两个文件umask设定值必须保持一致

source /etc/bashrc

source /etc/profile

让设定立即生效(执行以上两条命令设置才会生效,本作者因没有执行命令耽误了很多时间,此处红字也是在提醒自己)



Linux-基础学习(4)

    但是我们在建立新的文件时会发现我们依旧没有可执行权力,这是因为系统为了安全会,无论在任何时候新建文件,都会默认的将文件的可执行权限去掉。

Linux-基础学习(4)


四、文件的访问控制(acl列表)


1、acl定义

    acl = access control  它用来指定特殊用户对特殊文件有特殊权限。

   当我们使用 ls -l  directory命令的时候  我们就会获取directoy文件夹的所有属性列表和所有者、所有组

 等信息 ,"drwxrwx ---+",中的“+”就代表权限列表已经被**,

Linux-基础学习(4)

    这里的“.”不代表权限,它代表权限列表未被**。当“+”存在时,我们使用getfacl命令 来获取文件的访问控制列表(权限列表)

 使用方法 : getfacl           [参数]      filename|directory

                                 -a                                        显示访问控制列表

                                 -d                                        仅显示默认的访问控制列表

                                  -c                                         不显示注释表头

                                  -e                                        显示所有有效权限

                                  -E                                         显示无效权限

                                  -R                                         递归显示子目录

如果我们看到 test权限列表已经别**(+),使用  getfacl  -a  filename|directory 查看权限列表,

注意:当文件上有权限列表时,ls -l 能看到的权限是假的

   # file: test                 #文件名称

   # owner: root         #文件所有人
   # group: root         #文件所有组
   # user::rwx                 #拥有者权限
   # user:student:rwx             #特殊用户权限
   # group::r-x                 #组权限
   # mask::rwx                 #权限掩码
   # other::r-x                 #其他人权限

2设定acl列表

 setfacl -m <u|g>:<username|groupname>:权限 文件|目录

         -m #设定

              u #用户

              g #组

Linux-基础学习(4)

Linux-基础学习(4)

    我们使用下面的命令删除列表中的特殊用户或特殊组的权限

     setfacl -x <u|g>:<username|groupname> 文件|目录

Linux-基础学习(4)

Linux-基础学习(4)

 setfacl -b 文件|目录      #关闭列表


3、acl mask值

mask     权限掩码,一般用来对特组权限和殊权限进行限制的,用来表示能够赋予用户最大权限,当时用chmod改变文件普通权限时可能会被破坏,我们使用下面的命令行修复

setfacl -m m:rwx  filename|directory               #对文件的读写权限进行限制。

4、acl 默认权限

当我们需求某个目录对于student可写,并且目录中新建的子目录对student也可写。

注意:就要设定默认默认权限认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,对于目录本身也无效。

setfacl -m d:u:student:rwx  directory 

 

五、特殊权限

    1、suid

      当S这个标志出现在文件所有者的x权限上时,例如文件权限状态“-rwsr-xr-x”,此时就称为 Set UID,简称为SUID的特殊权限。SUID=4,SUID有这样的限制和功能:
        (1)SUID权限仅对二进制程序有效;
        (2)执行者对于该程序需要具有x的可执行权限;
        (3)本权限仅在执行该程序的过程中有效;
        (4)执行者将具有该程序所有者的权限,进程发起人身份无关。
         设定方式:
                    chmod u+s file

                    chmod 4xxx file

          SUID 的值是 4

Linux-基础学习(4)


下面我又对“g”“o”进行测试

Linux-基础学习(4)



2、sgid

   当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)SGID =2。SGID有如下功能:
    (1)、对文件:
                (1)SGID对二进制程序有用;
                (2)程序执行者对该程序需具备x权限;
                (3)执行者在执行过程中会获得该程序用户组的支持,程序发起人组的身份无关。

     (2)对目录:

             当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组

         之中,和文件建立者所在的组无关    

      (3)设定方式:

                chmod g+s file|dir

                chmod 2xxx file|dir

    理论上locate命令普通用户不可以执行,但是因为,locate拥有SGID权限,所以locate生成进程时候,这个进程会得到locae命令的用户组权限,相当于student用户被临时加入了slocate这个组,因此student对这个文件拥有了r权限。

     对于目录,当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关。

        例如:当我们在团队在某个目录下共同工作来做一个项目时,那么团队成员都得对这个目录下的所有文件具有rwx权限,当我们有A、B、C、三个用户属于不同组时,但都在同一个目录下工作,我。当用户A创建了一个权限为770的文件后,B、C用户的无法访问这个文件,这个时候我们可以对该工作目录加入SGID权限,那么目录中的所有新建文件的归属组就属于目录的所有组之中,由于其他用户和目录属于同一个组,其他用户也可以对该文件进行读写执行操作。

3、SBIT

        只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录只有自己与root用户才可以删除 ,SBIT = 1,SBIT在其他用户权限本应该是x的地方显示位t

        设定方式

        chmod     o+t directory

        chmod     1777 directory


 


相关文章: