道阻且长,行则将至。埋头苦干,不鸣则已,一举成名!加油骚年 掘金第一篇文章,望你们多多关照,谢谢各位前辈!html
鸟哥的Linux私房菜:“Linux最优秀的地方之一,就在于它的多用户,多任务环境。而为了让各个用户具备较保密的文件数据,所以文件的权限管理就变得很重要了。”linux
本文为本身认真阅读《鸟哥的Linux私房菜》对应内容后,总结记录所得。若是有误,还望指正!谢谢shell
Linux通常将文件可存取访问的身份分为3个类别,分别是:owner、group、others,且三种身份各有read、write、execute等权限。数据库
本文将会围绕如下方面展开: vim
用户及用户组的基本概念,以实际中一个家庭为例,假设有一家人,家里只有三兄弟,分别是王大毛、王二毛、王三毛这3我的,家庭的户主是王大毛。简要分析以下:windows
用户、用户组、其余这几个类别的特征是什么呢?数组
在Linux系统下,是有一个默认的路径,默认文件来存放用户和用户组的相关信息,分别以下:安全
须要特别注意的是:这三个文件是Linux系统里面帐号、密码、用户组信息的集中地,必定不要随便删除这三个文件。服务器
当咱们在Linux系统下,使用 ls -l 命令查看目录文件时,会发现有不少的内容,我刚开始的时候了解的也不是很深刻,只是知道个大概,今天认认真真看了看书,作一个总结。编辑器
关于Linux下 ls 命令的相关参数,能够参考菜鸟教程 - ls,部分命令参数截图以下:
我参考本身的Ubuntu,拿以下几个文件举例:
列1 | 列2 | 列3 | 列4 | 列5 | 列6 | 列7 |
---|---|---|---|---|---|---|
drwxrwxrwx | 2 | zhaoc | zhaoc | 4096 | 10月 16 22:50 | Music |
drwxr-xr-x | 2 | root | root | 4096 | 3月 24 21:50 | vim |
-rw-r--r-- | 1 | root | root | 438 | 3月 15 15:49 | exports |
ls -l --full-time
复制代码
有几个经常使用的更改文件属性、文件权限的命令。先列出来,在一一分析:
更改文件/目录所属用户组,通常咱们较为经常使用的就是使用 chgrp 命令。其实这个命令就是英文 change group 的缩写;
须要注意的是,要被改变的组名必需要在 /etc/group 文件内存在才能够,不然就会报错。
基本的命令格式以下:
chgrp [-R] [所属群组] [文件或目录]
[-R]:进行递归的持续更改,即修改此目录及其下属全部文件/目录的群组。
复制代码
更为详细的信息能够参考:菜鸟教程 - chgrp,里边有更为详尽的解释及示例。
更改文件/目录的全部者,通常经常使用的命令就是 chown 命令,也就是英文 change owner 的缩写;
一样须要注意的是,用户必须是已经存在于系统中的帐号,也就是在 /etc/passwd 这个文件中有记录的用户名称才能改变。
基本的命令格式以下:
chown [-R] [帐号名称] [文件或目录]
[-R]:进行递归的持续更改,即修改此目录及其下属全部文件/目录的群组。
复制代码
若是须要同时更改文件的全部者和用户组,可使用以下命令:
chown root:root filename
复制代码
须要同时更改文件全部者及用户组时,推荐使用冒号 “:” ;若是须要单纯的修改用户组怎么办?可使用以下命令:
chown .root filename
复制代码
此种状况下,可使用英文的小数点 “.”
这个命令,能够说是在实际使用中,最经常使用的一个命令之一。
基本的命令格式以下:
chmod [-R] [xyz] [文件或目录]
[-R]:进行递归的持续更改,即修改此目录及其下属全部文件/目录的群组。
复制代码
而这个命令,稍微大点来讲,有两种不一样的用法,下边分开描述。
经过直接使用数字方法,改变文件权限,在实际中是较为经常使用的方法。简单的来讲,一个文件/目录,有三种不一样的身份,每种身份有三种不一样的权限,按照二进制来划分以下:
r | w | x | r | w | x | r | w | x |
---|---|---|---|---|---|---|---|---|
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
一样,拿上述三个文件,作个分析
列1 | 列2 | 列3 | 列4 | 列5 | 列6 | 列7 |
---|---|---|---|---|---|---|
drwxrwxrwx | 2 | zhaoc | zhaoc | 4096 | 10月 16 22:50 | Music |
drwxr-xr-x | 2 | root | root | 4096 | 3月 24 21:50 | vim |
-rw-r--r-- | 1 | root | root | 438 | 3月 15 15:49 | exports |
若是我要将 Music 设置为当前权限(rwxrwxrwx),应该怎么作,分析,此文件拥有所有的权限,若是要设置为此权限类型,应该使用以下命令:
chmod 777 Music
复制代码
同理,若是要将 exports 设置为当前权限(rw-r--r--),设置命令以下:
chmod 644 exports
复制代码
总结一下经验就是,使用数组类型改变文件权限时,将对应位权限转换为二进制数值,经过此命令设置文件权限便可。
所谓的符号类型,就是使用相似于字母的方式,来改变文件权限。咱们经常使用的身份有 user、group、others 这三种身份,所以 Linux 中经过 u g o 来表明三种身份,另外用 a 表明所有的身份;
具体的权限类型就能够用 r w x 来表示;
操做方式能够用以下三种方式表示:
用上述 “exports” 文件举例,此文件的权限为(rw-r--r--),咱们在设置时,可使用以下命令:
chmod u=rw,go=r exports
复制代码
上述命令解释过来,就是给文件全部者 “u” ,设置可读,可写的权限;给用户组和其余用户设置可读权限。
须要注意的是:u=rw,go=r 这条命令,是连在一块儿的,中间不能有任何空格
若是咱们不知道某个文件原来的属性,只想给这个文件的每一个用户增长一个可写入的权限,就可使用以下命令:
chmod a+w filename
复制代码
一样的,若是是要给这个文件的全部用户去掉可执行权限,则可使用以下命令:
chmod a-x filename
复制代码
经过上面两个示例,能够知道,在 + - 状态下,只要是没有指定到的选项,则该权限“不会被变更”。
目录与文件的权限,对于数据的安全是有很重要的做用的,下边分开来介绍文件权限对于通常文件与目录文件有何不一样
文件是实际含有数据的地方,包括通常文本文件、数据库内容文件、二进制可执行文件等,所以权限对于文件来讲,有以下意义:
文件是存放实际数据的所在,目录主要的内容是记录文件名列表,文件名与目录有强烈的关联。因此对于目录时,不一样的权限也有不一样的做用:
举例说明目录的可执行权限有什么做用,假设有个目录,权限以下:
drwxr--r-- 3 root root 4096 3月 24 21:50 filename
复制代码
此时系统有个帐号名称为 zhaoc,这个帐号并无支持 root 用户组,请问 zhaoc 对这个目录有何权限?是否能够切换到此目录中?
回答:zhaoc 对此目录仅具备 r 的权限,所以 zhaoc 能够查询此目录下的文件名列表。由于 zhaoc 不具备 x 的权限,因此 zhaoc 并不能切换到此目录内。这一点很重要
假设个人帐号名称为 zhaoc,个人主文件夹在 /home/zhaoc 这个路径下,zhaoc对此目录具备彻底的 [rwx] 权限,若是在此目录下有一个文件 filename,改文件的权限以下:
-rwx------ 1 root root 4365 Sep 19 23:20 filename
复制代码
问题:zhaoc 对此文件夹的权限是什么?能否删除此文件?
回答:由上述文件权限列表可知,此时 zhaoc 对此文件来讲是 “others”的身份,所以这个文件他没法读,没法编辑,也没法执行,也就是说他没法变更这个文件的内容。可是,因为这个文件在他的主文件夹下,他在此目录下具备 [rwx] 的完整权限,所以对于 filename 这个 “文件名” 来讲,zhaoc 是可以 “删除” 的,也就是说 zhaoc 这个用户可以删除 “filename” 这个文件。
结合我目前工做经验来看,在实际工做中,文件权限的重要性在开发服务器上会获得明显体现。好比我刚到公司的时候,全部文件权限都是只读;目录权限为可读、可执行;也就是说,我对服务器上的任何东西都没有写入权限;这样很明显的一个好处就是,防止新人不当心删除服务器的文件,给公司形成损失。
等到后来我在公司待了一段时间,熟悉了一些东西、须要接触项目开发的时候,就给我开放了对服务器特定目录的可写操做,保证我能够在此文件夹内,进行代码修改、提交等操做。
本篇文章就是基于书本内容的一个阅读,与本身深刻了解后的一个笔记总结。如有错误之处还望指正,但愿对您能有帮助!感受不错能够留个赞哈,方便更多的人看到,谢谢各位!