Linux课程学习笔记来源于网易云课堂:Linux 入门基础
1 linux 默认权限
新建文件默认权限:-rw-rw-r--
新建文件夹默认权限: -rwxrwxr-x
l 每一个终端都拥有一个umask属性,来确定新建文件、文件夹的默认权限
l umask 使用数字权限方式表示,如:022
l 目录的默认权限:777-umask
l 文件的默认权限:666-umask
l 一般,对于普通用户默认的umask是002,root用户的默认是022
l 即对于普通用户来说:
新建文件的权限是:666-002=664
新建目录的权限是:777-002=775
一般普通用户的umask是002,root用户是022
命令umask用来查看、设置默认的umask值:
umask022
2 特殊权限
除普通权限外,还有三个特殊权限:(root不受文件权限的限制,权限无穷大)
权限 对文件的影响 对目录的影响
l suid 以文件的所属组用户身份执行,而非执行文件的用户 无
eg:例如,修改用户的密码,/usr/bin/passwd文件在passwd指令运行时,不是以执行文件的用户(普通用户),而是以文件的所属用户(root用户)进行执行的
l sgid 以文件所属组身份执行 在该目录中创建的任意新文件的所属组与该目录的所属组相同
eg:例如,对新建一个文件夹后,有一个默认所属组,对其所属组修改后,在该文件夹创建新的文件后,文件的所属组还是原来的默认所属组,并不是新修改后的所属组。在这种情况下,该命令可以解决该问题。
l sticky 无 对目录拥有写入权限的用户仅可以删除其拥有其拥有的文件,无法删除其他用户的文件
eg:例如,两个用户共用一个目录,都可以对该目录进行读写,但是一般情况下,一个用户进入该目录,可以读取另外一个用户的文件,同时可以删除该文件。从实际来讲,一个用户的文件应当仅可以由该用户删除,其他用户无法删除的。在此情况下,需要使用到该命令。
3 设置特殊权限
l 设置suid:(都是设置给可执行文件的,会用高亮显示)
chmod u+s dirtemp
l 设置sgid:
chmod g+s filetemp (将group的权限的x位替换为s)
l 设置sticky:
chmod o+t filetemp (将others的权限的x位替换为t)
l 与普通权限一样,特殊权限也可以使用数字方式表示
- SUID = 4
- SGID = 2
- Sticky = 1
所以可以通过以下命令设置:
chmod 4755 filename
4 练习
[root@localhost liqianzhong]# groupadd testgrp
[root@localhost liqianzhong]# useradd -G testgrp user1
[root@localhost liqianzhong]# useradd -G testgrp user2
[root@localhost liqianzhong]# mkdir /tmp/test
[root@localhost test]# cd /tmp
[root@localhost tmp]# chgrp testgrp test
[root@localhost tmp]# chmod g+rwx test
[root@localhost tmp]# su - user1
[user1@localhost ~]$ cd /tmp/test
[user1@localhost test]$ touch user1
[user1@localhost test]$ ls
user1
[user1@localhost test]$ exit
logout
[root@localhost tmp]# su - user2
[user2@localhost ~]$ cd /tmp/test
[user2@localhost test]$ ls
[user2@localhost test]$ exit
logout
[root@localhost tmp]# chmod o+t test
[root@localhost tmp]# ls -ld test
drwxrwxr-t. 2 root testgrp 4096 Aug 3 11:12 test
[root@localhost tmp]# su - user1
[user1@localhost ~]$ cd /tmp/test
[user1@localhost test]$ ls
[user1@localhost test]$ touch user1
[user1@localhost test]$ ls
user1
[user1@localhost test]$ exit
logout
user1
[user2@localhost test]$ rm -rf user1
[user2@localhost test]$ ls
[root@localhost tmp]# su - user2
[user2@localhost ~]$ cd /tmp/test
[user2@localhost test]$ ls
user1
[user2@localhost test]$ rm -rf user1
rm: cannot remove `user1': Operation not permitted
[user2@localhost test]$ cat user1
[user2@localhost test]$