Linux更改文件权限(二)

时间:2023-07-17 11:09:32

更改文件权限(二)
==============================

(参考于千锋教育教学笔记)

命令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: 就算用户对目录具有写权限,也不能删除其他用户的文件。

Linux更改文件权限(二)

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": 不允许的操作