【权限】是Linux入门的一个重要的点,深入对权限的理解可以帮助以后对系统的深入学习。
下面我们进入这篇文章的正题,Linux权限。
shell运行原理
什么是shell?为什么要存在shell?
shell是人与操作系统交互的中间软件层。
人不善于直接使用操作系统,直接使用操作系统成本特别高,而且会带来不安全因素。shell的存在可以在一定程度上起到保护操作系统的作用。
Linux权限的概念
Linux下有两种用户:root用户(超级用户),普通用户。
超级用户:可以在Linux系统下做任何事,不受限制。
普通用户:在Linux系统下做有限的事。
超级用户的命令提示符事“#”, 普通用户是“$”。
命令:
su[用户名]
功能:
切换用户
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
Linux权限管理
1.文件访问者的分类
文件和文件目录的所有者:u---User(中国平民 法律问题)文件和文件目录的所有者所在的组的用户:g---Group(不多说)其它用户:o---Others (外国人)
2.文件类型和访问权限(事物属性)
文件类型
d :文件夹- :普通文件l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(例如屏幕等串口设备)s :套接口文件
基本权限
i. 读( r/4 ): Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限ii. 写( w/2 ): Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限iii. 执行( x/1 ): execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限iv. “—”表示不具有该项权限
3.文件权限值的表示方法
(1)字符表示方法
(2)8进制表示方法
4.文件访问权限的相关设置方法
(1)chmod
功能:设置文件的访问权限
格式:chmod[参数] 权限 文件名
常用选项:
R->递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
目录的权限
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
粘滞位
了解目录的权限后,又有一个新的问题
通俗一点来说就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。
这似乎不太科学,A创建的一个文件凭什么能被B删掉? 下面验证一下
[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[litao@localhost ~]$ exit
logout
为了解决这个不科学的问题,引入了粘滞位的概念
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:
一、超级管理员删除二、该目录的所有者删除三、该文件的所有者删除