在Linux当中的文件和目录都会有一个全部者和所属组。全部者是指文件或目录的拥有者,所属组指的是这个文件属于哪个用户组。这样设置文件属性是为了文件和目录的安全。安全
[root@localhost ~]# ls -l 22 -rw-r--r--. 1 root root 0 1月 31 03:33 22
如上图所示,执行ls-l 命令后显示出来的内容就是该文件的属性了。-rw-r--r-- 其中第一个字符“-”表示该文件是个普通文件,下面列举一下各个不一样的字符表示的意思。bash
这个是由于新版本的ls添加了SELinux或者acl的属性。若是文件或目录使用了SELinux context的属性,这里就会显示一个. ,若是设置了acl属性,这个地方会显示一个+。指针
[root@localhost ~]# ls -l 22 -rw-r--r--. 1 root root 0 1月 31 03:33 22
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命令(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命令(change group)更改文件的所属组,格式为:chgrp 组名 文件名 ,一样的,若是要更改一个目录及该目录下左右文件的所属组,须要使用:chgrp- R命令。file
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命令(change attribute),格式为:chattr [+、-、=] [参数] 文件名或目录名 其参数以下:权限
[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命令(list attribute),用于读取文件或目录的特殊权限 ,其格式为:lsattr -[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 ~]#