就像Java提倡一切都是对象,Linux提倡一切都是文件,这点从Linux的权限管理中体现的淋漓尽致,所有用户的权限都分为三种,读,写,可执行,对于Linux来说,所谓程序也不过是一段可执行的文件罢了
回归正题,想理解Linux的权限管理,首先要理解多用户的概念,其实在windows中,多用户的概念就已经存在了,但是存在感极低,我个人觉得有以下几个原因,首先,windows的稳定性差,闭源,高昂的使用花费,决定了它不太可能作为程序员之间的多人协作的系统,而对于普通用户来说,几个人用同一台电脑是较为少见的情况,即使存在,普通用户必然要使用图形化界面,家用电脑显然无法负担如此高额的额外性能开支,反正对于我个人来说,Windows的多用户给我的唯一印象是,有时候使用Java io操作某个文件会失败,不出意料的话是因为权限不足,需要切一下超级管理员,除此之外,再无交集
但是Linux中的多用户显然更加重要一些,尤其是对于团队协作来说,一般大型项目都会有不少维护人员,多人协作中,误操作显然会更多一些,权限管理可以保证一些重要的资料不会受到损失(虽然根据我同学的经验来说,基本上开发都是root,要么就是大家共用一个账号,什么多用户,不存在的,全靠备份╮(╯▽╰)╭)
Linux中的权限也是围绕多用户而来的,分为以下几种
权限 |
---|
所有者权限 |
所属群组权限 |
其他人权限 |
权限本身也分三种
权限种类 |
---|
r |
w |
x |
在Linux中表示如下
rwx=r 读 w 写 x 执行
rwx rwx rwx
使用者 所属群组 其他人
但是请注意,在Linux中,文件和文件夹的rwx权限是不同的,为什么呢?打个比方,你是一个图示管理员,你可以对翻阅图书(查看文件),把图书的位置进行调换(修改文件),但是你不能把图书带出图书馆(移动文件),更不能烧毁图书(删除文件),也就是说,虽然你拥有图书的查看和修改权限,但是图书本身并不属于你,而是属于图书馆(文件夹)
文件夹的rwx=r 查阅目录结构 w删除文件,移动文件,新建文件,修改文件名 x能否进入该目录
也就是说能否将当前目录作为默认目录
如果用二进制表示,rwx可以表示为111,转为十进制为7,所以类似于rwx rwx rwx这样表示所有人都可以读,写,执行的权限设置,也被叫做777权限,相对应的,666就表示所有人都可以读写,但是不能执行,555表示所有人都可以读,执行,但是不能写,以此类推
Linux中也提供了命令对权限进行修改,但是请注意,只有root用户才能进行修改,而root用户本身是包含所有权限,也就是默认777最高权限,修改权限的方式有很多,但是基本上都不常用,所以其实只需要记住一个命令即可,chmod,下面是使用实例
可以看到,test.txt目前是777权限,我们将其变为666权限
也可以使用chmod -R 777 /修改目录及其子目录及文件的权限,这个命令的意思就是把所有文件权限改为777
注意,请尽量不要使用这种命令,会导致很严重的问题,具体是什么我就不说了,不过我自己就因为这个重装了一次系统,你们可以自己试一下╮(╯▽╰)╭