文件和目录权限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-- 其中第一个字符“-”表示该文件是个普通文件,下面列举一下各个不同的字符表示的意思。

第一个字符表示的意思

  • 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,除了用数字表示,我们在更改权限的时候也可以直接用字符更改。举个例子:

[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 用户名:组名 文件名,当不需要更改所属组时,将":组名"这个参数删掉即可。

[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命令。

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 权限后就可以正常执行创建目录的命令了。

扫描二维码关注公众号,回复: 114737 查看本文章
[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 ~]# 

猜你喜欢

转载自my.oschina.net/u/3731306/blog/1622969
今日推荐