文件和目录权限chmod 、更改全部者和所属组chown 、 umask 、隐藏权限lsattr/chattr

Linux文件属性

在Linux当中的文件和目录都会有一个全部者和所属组。全部者是指文件或目录的拥有者,所属组指的是这个文件属于哪个用户组。这样设置文件属性是为了文件和目录的安全。安全

使用ls-l命令能够查看文件或目录的权限

[root@localhost ~]# ls -l 22
-rw-r--r--. 1 root root 0 1月  31 03:33 22

如上图所示,执行ls-l 命令后显示出来的内容就是该文件的属性了。-rw-r--r-- 其中第一个字符“-”表示该文件是个普通文件,下面列举一下各个不一样的字符表示的意思。bash

第一个字符表示的意思

  • d 表示该文件是目录
  • -表示该文件是普通文件
  • l 表示该文件为连接文件
  • b 表示该文件为块设备,好比/dev/sda 这样的硬盘分区文件就是这种类型 -c表示该文件为串行端口设备文件,好比键盘、鼠标、打印机、tty终端等
  • s表示该文件为套接字文件,用于进程之间的通讯

文件属性当中后九位,每三位一组,都是rwx-这四个字符的组合,前三位表示该文件全部者的权限,中间三位表示该文件所属组的权限,后三位表示其余用户对该文件的权限

  • r为可读权限,用数字表示r=4
  • w为可写权限,用数字表示w=2
  • x为可执行权限,用数字表示x=1 因此当咱们在赋予一个文件权限时,好比赋予它全部者可读可写可执行,所属组可读可执行,其余用户可执行的权限时 ,可使用chmod 731 filename

咱们还能够看到,在权限属性字符的后面还有一个字符“·”

这个是由于新版本的ls添加了SELinux或者acl的属性。若是文件或目录使用了SELinux context的属性,这里就会显示一个. ,若是设置了acl属性,这个地方会显示一个+。指针

[root@localhost ~]# ls -l 22
-rw-r--r--. 1 root root 0 1月  31 03:33 22
  • 在“.”后面还有一个“1”这个数字表示该文件占用的节点,若是是目录,那么这个数值与该目 -下的子目录数量有关。
  • 后面的第一个“root”表示该文件的全部者
  • 第二个“root”表示该文件的所属组
  • “0”表示文件的大小
  • 再后面表示文件最后一次被修改的时间(mtime),依次是月,日,点
  • 最后一组字符是文件名

chmod命令

chmod (change mode)命令是用来更改文件或目录权限的命令 格式为chmod 权限 filename 上面咱们提到了读写执行权限用数字表示的方式,那么在系统中默认的目录权限为755 ,文件的默认权限是644,除了用数字表示,咱们在更改权限的时候也能够直接用字符更改。举个例子:code

[root@localhost ~]# ls -l 22
-rw-r--r--. 1 root root 0 1月  31 03:33 22
[root@localhost ~]# chmod 777 22
[root@localhost ~]# ls -l
总用量 4
-rwxrwxrwx. 1 root root   0 1月  31 03:33 22
-rw-------. 1 root root 973 1月  31 02:11 anaconda-ks.cfg

[root@localhost ~]# chmod u=rwx,g=rw,o=--- 22
[root@localhost ~]# ls -l 22
-rwxrw----. 1 root root 0 1月  31 03:33 22
[root@localhost ~]# ^C
[root@localhost ~]#

能够看到,在使用字符修改的时候须要使用u=rwx ,g=rw,o=--- ,其中u表示user,g表示group,o表示others 的权限 ,此外还可使用a ,a表示全部,包括全部者,所属组和其余用户进程

[root@localhost ~]# chmod a+rw 22
[root@localhost ~]# ls -l 22
-rwxrw-rw-. 1 root root 0 1月  31 03:33 22

chmod命令还有一个-R的选项,这个指针对目录使用,表示级联更改目录属性,将该目录下全部的目录和文件都改为和该目录相同的权限。同步

chown命令

chown命令(change owner)能够更改文件和目录的全部者 格式为:chown_ 用户名:组名 文件名_,当文件是目录时,且要讲目录下全部的文件都更改全部者,须要使用 chown -R 用户名:组名 文件名,当不须要更改所属组时,将":组名"这个参数删掉便可。test

[root@localhost ~]# ls -l 22
-rwxrw-rw-. 1 root root 0 1月  31 03:33 22
[root@localhost ~]# chown lic 22
[root@localhost ~]# !ls
ls -l 22
-rwxrw-rw-. 1 lic root 0 1月  31 03:33 22
[root@localhost ~]#

chgrp命令

chgrp命令(change group)更改文件的所属组,格式为:chgrp 组名 文件名 ,一样的,若是要更改一个目录及该目录下左右文件的所属组,须要使用:chgrp- R命令。file

umask命令

umask的值用来改变文件的默认权限,一个目录预设权限时777,一个文件预设权限是666,分析一下umask的值和默认权限的关系能够得出的结论是,文件默认权限=预设值-umask值。举个例子:终端

[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir test01
[root@localhost ~]# ls -ld test01/
drwxr-xr-x. 2 root root 6 2月  23 23:35 test01/
[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# mkdir test02
[root@localhost ~]# ls -ld test02
drwxrwxr-x. 2 root root 6 2月  23 23:36 test02
[root@localhost ~]# umask 077
[root@localhost ~]# umakd
-bash: umakd: 未找到命令
[root@localhost ~]# umask
0077
[root@localhost ~]# mkdir test03
[root@localhost ~]# ls -ld test03
drwx------. 2 root root 6 2月  23 23:37 test03
[root@localhost ~]#

chattr命令

chattr命令(change attribute),格式为:chattr [+、-、=] [参数] 文件名或目录名 其参数以下:权限

  • A:增长改属性后,表示文件或目录的Atime将不可修改。
  • s:增长该属性后,表示数据会同步写入磁盘中。
  • a :增长改属性后,表示文件只能追加,不能删除,只有root用户才能设定改属性。
  • c :增长该属性后,表示自动压缩该文件,在读取时会自动解压。
  • i :增长该属性后,表示文件不能删除,重命名,设定连接、写入及新增数据。
[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir test01
[root@localhost ~]# ls -ld test01/
drwxr-xr-x. 2 root root 6 2月  23 23:35 test01/
[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# mkdir test02
[root@localhost ~]# ls -ld test02
drwxrwxr-x. 2 root root 6 2月  23 23:36 test02
[root@localhost ~]# umask 077
[root@localhost ~]# umakd
-bash: umakd: 未找到命令
[root@localhost ~]# umask
0077
[root@localhost ~]# mkdir test03
[root@localhost ~]# ls -ld test03
drwx------. 2 root root 6 2月  23 23:37 test03
[root@localhost ~]#

上面例子中,给test01 设置“i”权限后,即便root用户也不能在这个目录中建立目录或文件。减掉-i 权限后就能够正常执行建立目录的命令了。

[root@localhost ~]# chattr +a test01
[root@localhost ~]# touch test01/123
[root@localhost ~]# rm test01/123
rm:是否删除普通空文件 "test01/123"?y
rm: 没法删除"test01/123": 不容许的操做
[root@localhost ~]# chattr -a test01
[root@localhost ~]# rm test01/123
rm:是否删除普通空文件 "test01/123"?y
[root@localhost ~]#

在这里能够看到,给该目录设置a权限后,只能在该目录下建立文件,不能删除文件了。

lsattr命令

lsattr命令(list attribute),用于读取文件或目录的特殊权限 ,其格式为:lsattr -[a 、R] [文件名或目录名]

  • a表示连同隐藏文件一同列出
  • R 表示连同子目录的数据一同列出
[root@localhost ~]# lsattr test01
---------------- test01/test04
[root@localhost ~]# lsattr -a test01
---------------- test01/.
---------------- test01/..
---------------- test01/test04
[root@localhost ~]# lsattr -R test01
---------------- test01/test04

test01/test04:

[root@localhost ~]#
相关文章
相关标签/搜索