更改文件权限(二)
==============================
(参考于千锋教育教学笔记)
命令umask
[root@aminglinux ~]# umask
0022
[root@aminglinux ~]# touch 6.txt
[root@aminglinux ~]# mkdir dir6
[root@aminglinux ~]# ll 6.txt
-rw-r--r-- 1 root root 0 6月 24 22:54 6.txt
6 4 4
[root@aminglinux ~]# ll -d dir6
drwxr-xr-x 2 root root 6 6月 24 22:54 dir6
7 5 5
规则:
若用户建立普通文件,则预设没有可执行权限,只有r,w权限,最大值为666(-rw-rw-rw-);
若用户建立目录,则预设所有权限均开放,即777(drwxrwxrwx).
umask数值代表的含义为以上两条规则中的默认值(文件为666,目录为777)需要减掉的权限。
目录的权限为rwxrwxrwx(777)- ----w--w-(022) = rwxr-xr-x(755)
普通文件的权限为rw-rw-rw-(644) - ----w--w-(022) = rw-r--r--(644)
[root@aminglinux ~]# umask 002 //umask值设为002
[root@aminglinux ~]# touch 7.txt
[root@aminglinux ~]# ll 7.txt
-rw-rw-r-- 1 root root 0 6月 24 23:10 7.txt //文件权限变为664
[root@aminglinux ~]# mkdir dir8
[root@aminglinux ~]# ll -d dir8
drwxrwxr-x 2 root root 6 6月 24 23:10 dir8 //目录权限变为775
[root@aminglinux ~]# umask 022 //umask值设为正常值022
[root@aminglinux ~]# touch 8.txt
[root@aminglinux ~]# ll 8.txt
-rw-r--r-- 1 root root 0 6月 24 23:11 8.txt //文件权限就变为正常的644了
默认情况下,root的umask值为022,而一般普通用户的则为002。
修改文件的特殊属性
1,chattr (change attribute)change file attributes on a Linux file system(更改Linux文件系统上的文件属性)
选项:
a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性
i : 增加该属性后,表示文件不能删除,重命名,设定链接,写入以及新增数据。(不可改变的)
lsattr ( list attribute) list file attributes on a Linux second extended file system(列出Linux第二个扩展文件系统上的文件属性)
选项:
-a:连同隐藏文件一同列出
-R:连同子目录的数据一同列出。
示例:
[root@aminglinux ~]# touch file100 file200
[root@aminglinux ~]# lsattr file100 file200
---------------- file100
---------------- file200
[root@aminglinux ~]# chattr +a file100
[root@aminglinux ~]# chattr +i file200
[root@aminglinux ~]# lsattr file100 file200
-----a---------- file100
----i----------- file200
[root@aminglinux ~]# echo > 111 file100[
root@aminglinux ~]# cat file100
[root@aminglinux ~]# rm -rf file100
rm: 无法删除"file100": 不允许的操作
[root@aminglinux ~]# echo 222 >> file100
[root@aminglinux ~]# cat file100
222
[root@aminglinux ~]# echo 111 > file200
-bash: file200: 权限不够
[root@aminglinux ~]# echo 222 >> file200
-bash: file200: 权限不够
[root@aminglinux ~]# rm -rf file200
rm: 无法删除"file200": 不允许的操作
[root@aminglinux ~]# chattr -a file100
[root@aminglinux ~]# chattr -i file2002
,set uid、set gid、sticky bit
set uid: 该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。passwd命令就具有该权限
set gid: 任何用户在此目录下创建文件都具有和该目录所属组相同的组。
sticky bit: 就算用户对目录具有写权限,也不能删除其他用户的文件。
suid: 4; sgid: 2; sticky: 1
设置特殊权限
a,字符
chmod u+s file →suid
chmod g+s dir →sgid
chmod o+t dir →sticky
b,数字
chmod 777 file -rwsrwxrwx
chmod 770 dir drwxrws---
chmod 770 dir drwxrws--t
chmod 777 dir drwsrwsrwt
示例:
[root@aminglinux ~]# ll /usr/bin/passwd
-rw777 /home/dir2
[root@aminglinux ~]# ll -d /home/dir2
drwxrwxrwt 2 root root 19 6月 25 01:44 /home/dir2
[alice@aminglinux home]$ touch dir2/1.txt
[alice@aminglinux home]$ ll dir2
总用量 0
-rw-rw-r-- 1 alice alice 0 6月 25 01:44 1.txt
[it@aminglinux home]$ rm -v dir2/1.txt
rm:是否删除有写保护的普通空文件 "dir2/1.txt"?y
rm: 无法删除"dir2/1.txt": 不允许的操作