命令chown
更改文件的所有者,格式:chown [-R] 账户名 文件名 chown [-R] 账户名:组名 文件名。 -R选项只适用于目录,作用是级联更改,不仅更改当前目录,目录里面的目录或者文件也劝不回更改
[root@lizhipeng01 ~]# mkdir dir3
[root@lizhipeng01 ~]# useradd user1
[root@lizhipeng01 ~]# touch dir3/test3
[root@lizhipeng01 ~]# chown user1 dir3
[root@lizhipeng01 ~]# ls -ld dir3
drwxr-xr-x. 2 user1 root 18 12月 19 04:42 dir3
[root@lizhipeng01 ~]# ls -l dir3
总用量 0
-rw-r--r--. 1 root root 0 12月 19 04:42 test3
[root@lizhipeng01 ~]# chown -R user1:testgroup dir3
chown: 无效的组: "user1:testgroup"
[root@lizhipeng01 ~]# groupadd testgroup
[root@lizhipeng01 ~]# chown -R user1:testgroup dir3
[root@lizhipeng01 ~]# ls -l test
ls: 无法访问test: 没有那个文件或目录
[root@lizhipeng01 ~]# ls -l test3
ls: 无法访问test3: 没有那个文件或目录
[root@lizhipeng01 ~]# ls -l dir3
总用量 0
-rw-r--r--. 1 user1 testgroup 0 12月 19 04:42 test3
命令chmod
用于改变用户对文件/目录的读写执行权限,格式:chmod [-R] xyz 文件名(xyz表示数字),R表示级联
[root@lizhipeng01 ~]# ls -ld dir3 查看目录dir3权限
drwxr-xr-x. 2 user1 testgroup 18 12月 19 04:42 dir3
[root@lizhipeng01 ~]# ls -l dir3 查看目录dir3下文件的权限
总用量 0
-rw-r--r--. 1 user1 testgroup 0 12月 19 04:42 test3
[root@lizhipeng01 ~]# chmod 750 dir3
[root@lizhipeng01 ~]# ls -ld dir3
drwxr-x---. 2 user1 testgroup 18 12月 19 04:42 dir3
[root@lizhipeng01 ~]# ls -l dir3/test3
-rw-r--r--. 1 user1 testgroup 0 12月 19 04:42 dir3/test3
[root@lizhipeng01 ~]# chmod 700 dir3/test3
[root@lizhipeng01 ~]# ls -l dir3/test3
-rwx------. 1 user1 testgroup 0 12月 19 04:42 dir3/test3
[root@lizhipeng01 ~]# chmod -R 700 dir3 级联更改
[root@lizhipeng01 ~]# ls -ld dir3 目录权限改成700
drwx------. 2 user1 testgroup 18 12月 19 04:42 dir3
[root@lizhipeng01 ~]# ls -l dir3 目录下的文件权限700
总用量 0
-rwx------. 1 user1 testgroup 0 12月 19 04:42 test3
[root@lizhipeng01 ~]# chmod u=rwx,og=rx dir3/test3
[root@lizhipeng01 ~]# ls -l dir3
总用量 0
-rwxr-xr-x. 1 user1 testgroup 0 12月 19 04:42 test3
[root@lizhipeng01 ~]# chmod u-x dir3/test3
[root@lizhipeng01 ~]# ls -l dir3
总用量 0
-rw-r-xr-x. 1 user1 testgroup 0 12月 19 04:42 test3
[root@lizhipeng01 ~]# chmod a-x dir3/test3
[root@lizhipeng01 ~]# ls -l dir3/test3
-rw-r--r--. 1 user1 testgroup 0 12月 19 04:42 dir3/test3
[root@lizhipeng01 ~]# chmod u+x dir3/test3
[root@lizhipeng01 ~]# ls -l dir3
总用量 0
-rwxr--r--. 1 user1 testgroup 0 12月 19 04:42 test3
命令umask
默认情况下,目录的权限值755,普通文件的权限值644
[root@lizhipeng01 ~]# umask
0022
umask数值代表的含义是文件(666)或目录(777)需要减去的权限
umask的值是可以自定义的,如
[root@lizhipeng01 ~]# umask=002
[root@lizhipeng01 ~]# mkdir dir4
[root@lizhipeng01 ~]# ls -ld dir4
drwxr-xr-x. 2 root root 6 12月 19 05:51 dir4
[root@lizhipeng01 ~]# touch test4
[root@lizhipeng01 ~]# ls -l test4
-rw-r--r--. 1 root root 0 12月 19 05:52 test4
可以看到目录的默认权限为755,文件的默认权限664。umask可以在/etc/bashrc/里面更改,默认情况下,root的umask为022,而一般使用者002。
修改文件的特殊属性
命令chattr,格式:chattr [+-=] [Asaci] [文件或者目录名]
A:增加该属性后,表示文件或目录的atime将不可修改。
s:增加该属性后,会将数据同步写入磁盘中。
a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性。
c:增加该属性后,表示自动压缩该文件,读取时会自动解压。
i:增加该属性后,表示文件不能删除、重命名、设定链接、写入以及新增数据。
[root@lizhipeng01 ~]# chattr +i dir2
[root@lizhipeng01 ~]# touch dir2/test5
touch: 无法创建"dir2/test5": 权限不够
[root@lizhipeng01 ~]# chattr -i dir2
[root@lizhipeng01 ~]# touch dir2/test5
[root@lizhipeng01 ~]# chattr +i dir2
[root@lizhipeng01 ~]# rm -f dir2/test5
rm: 无法删除"dir2/test5": 权限不够
[root@lizhipeng01 ~]# chattr -i dir2
[root@lizhipeng01 ~]# touch dir2/test6
[root@lizhipeng01 ~]# ls dir2
test5 test6
[root@lizhipeng01 ~]# chattr +a dir2
[root@lizhipeng01 ~]# rm -f dir2/test6
rm: 无法删除"dir2/test6": 不允许的操作
[root@lizhipeng01 ~]# touch dir2/test7
[root@lizhipeng01 ~]# ls dir2
test5 test6 test7
dir2目录增加a权限后,只可以在里面创建文件,而不能删除文件。文件亦是如此。
[root@lizhipeng01 ~]# chattr +a dir2/test7
[root@lizhipeng01 ~]# echo '11111'>dir2/test7
-bash: dir2/test7: 不允许的操作
[root@lizhipeng01 ~]# echo '11111' >> dir2/test7
[root@lizhipeng01 ~]# cat dir2/test7
11111
[root@lizhipeng01 ~]# chattr +i dir2/test6
[root@lizhipeng01 ~]# echo '11111'>> dir2/test6
-bash: dir2/test6: 权限不够
[root@lizhipeng01 ~]# echo '11111' > dir2/test6
-bash: dir2/test6: 权限不够
[root@lizhipeng01 ~]# rm -f dir2/test6
rm: 无法删除"dir2/test6": 不允许的操作
命令lsattr,该命令用于读取文件或者目录的特殊权限,格式:lsattr [-aR] [文件/目录名]
-a:类似于ls的-a选项,即连同隐藏文件一同列出。
-R:连同子目录的数据一同列出。
[root@lizhipeng01 ~]# lsattr dir2
---------------- dir2/test5
----i----------- dir2/test6
-----a---------- dir2/test7
[root@lizhipeng01 ~]# lsattr -aR dir2
-----a---------- dir2/.
---------------- dir2/..
---------------- dir2/test5
----i----------- dir2/test6
-----a---------- dir2/test7