文件和目录权限/更改所有者和所属组/umask/隐藏权限lsat

2017-12-21  本文已影响0人  hch004

文件和目录权限

认识Linux文件属性以及它的所有者和所属组

[root@localhost ~]# ls -lh word1.txt

-rw-r--r--. 1 root root 0 12月 20 08:36 word1.txt

第一列:我们从一个杠(-)开始认识,第一个杠(-)是表示文件属于哪种类型

*-表示该文件为普通文件*d表示该文件为目录*l表示该文件为链接文件*b表示该文件为块设备文件(比如/dev/sda就是这样的文件,硬盘*c表示该文件为串行端口设备文件(又称字符设备文件),比如鼠标、键盘这些

第二列:9个权限位rw-r--r--,每三个权限位为一段,第一段rw-;表示所有者的权限,第二段r--;表示为所属组的权限,第三段r--;表示为其他用户的权限

权限里字母所表示的意思,以及权限位数字的表示:

*r(4):可读*w(2):可写*x(1):可执行*-(0):没有权限;为空

rw-r--r--;所有者权限为rw-既表示为可读可写不可执行,接下来的所属组和其他用户以此类推。

u表示:所有者,g表示:所属组,o表示:其他用户,a=u+g+o

第三列:(.)表示该文件占用的节点(inode),如果是目录,那这个数值与目录下是子目录数量有关

第四列:表示该文件的所有者

第五列:表示该文件的所属组

chmod命令

chmod是用来更改文件权限的一个命令,在Linux系统中,一个目录的默认权限为755:rwxr-xr-x,而一个文件的默认权限为644:

[root@localhost ~]# chmod 777 word1.txt

[root@localhost ~]# ls -lh word1.txt

-rwxrwxrwx. 1 root root 0 12月 20 08:36 word1.txt

更改所有者和所属组chown_chgrp

chgrp命令

chgrp命令可以用来更改文件的所属组,其格式为:chgrp[组名][文件名],示例

[root@localhost ~]# groupadd hch

[root@localhost ~]# chgrp hch word1.txt

[root@localhost ~]# ls -lh

总用量 4.0K

-rwxrwxrwx. 1 root hch    0 12月 20 08:36 word1.txt

-rw-r--r--. 1 root root    0 12月 20 08:37 word2.txt

上例中有用到groupadd命令,该命令是用来创建一个所属组的。

chown命令

chown命令是用来更改文件或者目录的所有者,其格式为:chown[账户名][文件名]或者chown[-R][账户名:组名][文件名],以下示例:

[root@localhost ~]# mkdir hch

[root@localhost ~]# cd hch

[root@localhost hch]# touch 123.txt

[root@localhost hch]# cd

[root@localhost ~]# chown -R hch1 hch

[root@localhost ~]# ls -lh hch/123.txt

-rw-r--r--. 1 hch1 root 0 12月 21 08:12 hch/123.txt

上例中用到useradd命令,该命令是用来创建一个用户的。

命令umask

命令umask是用来改变文件的默认权限值的,其格式为:umask xxx(这里xxx表示数字),我们可以在命令行输umask查看当前的默认值

*若用户建立普通文件时,则预设没有可执行权限,只有r、w两个权限,最大值为666(-rw-rw-rw-)*若用户建立普通目录时,则预设所有权限均开放,最大值777(drwxrwxrwx)

umask数值代表的行以为以上两条规则中的默认值需要减去的权限,所以结果为:

*目录的权限为rwxrwxrwx - ----w--w-=rwxr-xr-x*普通文件的权限为rw-rw-rw- - ----w--w- =rw-r--r--

以下我们示例使用umask将数值改为002,在看下创建文件或者目录的时候默认权限

[root@localhost ~]# umask 002

[root@localhost ~]# mkdir hch02

[root@localhost ~]# ls -l

总用量 4

drwxrwxr-x. 2 root root    6 12月 21 08:20 hch02

drwxr-xr-x. 2 root root  19 12月 20 08:44 hello

-rwxrwxrwx. 1 hch1 hch    0 12月 20 08:36 word1.txt

-rw-r--r--. 1 root root    0 12月 20 08:37 word2.txt

[root@localhost ~]# touch hch123.txt

[root@localhost ~]# ls -lh hch123.txt

-rw-rw-r--. 1 root root 0 12月 21 08:21 hch123.txt

隐藏权限lsattr/chattr

chattr命令

命令chattr的格式为:chattr[+-=][Asaci][文件或者目录]其中+、-和=分别表示增加、减少和设定,各个权限如下。

*A:增加该属性后,表示文件或目录的atime将不可以修改*s:增加该属性后,会见个数据同步写入磁盘中*a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性*c:增加该属性后,表示自动压缩该文件,读取是会自动解压*i:增加该属性后,表示文件不能删除、重命名、设定链接、写入以及新增数据。

以上参数中a和i连个常用的权限,我们举例说明示范一下

[root@localhost ~]# chattr +i hch

[root@localhost ~]# touch hch/1234.txt

touch: 无法创建"hch/1234.txt": 权限不够

[root@localhost ~]# chattr  -i hch

[root@localhost ~]# touch hch/1234.txt

[root@localhost ~]# chattr  +i hch

[root@localhost ~]# rm -f hch/1234.txt

rm: 无法删除"hch/1234.txt": 权限不够

示例中,给asklinux2目录加了i权限后,即使是root用户,也不能在asklinux2目录中创建或删除1.txt。

接下来我们看下a权限的作用

[root@localhost ~]# chattr -i hch

[root@localhost ~]# touch hch/456.txt

[root@localhost ~]# ls -lh hch

总用量 0

-rw-rw-r--. 1 root root 0 12月 21 08:26 1234.txt

-rw-r--r--. 1 hch1 root 0 12月 21 08:26 123.txt

-rw-rw-r--. 1 root root 0 12月 21 08:28 456.txt

[root@localhost ~]# chattr +a hch

[root@localhost ~]# rm -f hch/456.txt

rm: 无法删除"hch/456.txt": 不允许的操作

[root@localhost ~]# touch hch/789.txt

[root@localhost ~]# ls hch

1234.txt  123.txt  456.txt  789.txt

上例中,asklinux2目录增加a权限后,只可以在里面创建文件,而不能删除文件,文件同适用以上权限。

命令lsattr

lsattr命令是用来读取文件或者目录的特殊权限,格式为:lsattr[-aR][文件/目录],我们看下a和R两个参数的定义

*-a:类似于ls的-a参数,既连同隐藏文件一同列出* -R:连同子目录的数据一同列出

示例:

[root@localhost ~]# chattr +i hch/456.txt

[root@localhost ~]# chattr +a hch/789.txt

[root@localhost ~]# lsattr hch

---------------- hch/123.txt

---------------- hch/1234.txt

----i----------- hch/456.txt

-----a---------- hch/789.txt

[root@localhost ~]# lsattr -aR hch

-----a---------- hch/.

---------------- hch/..

---------------- hch/123.txt

---------------- hch/1234.txt

----i----------- hch/456.txt

-----a---------- hch/789.txt

上一篇下一篇

猜你喜欢

热点阅读