Linux的文件目录与属性
-
使用者与群组
-
这里面涉及三个概念,分别为user,group,other。
-
先讲group,即组的概念,可以理解为一个项目的开发,一个组里面有若干个组员,每个组员负责一个模块的功能开发,大家都能够访问公共部分的代码,但是没有权限访问别的同事负责的模块的代码。
-
user,即使用者,可以理解为项目经理,他有权限即访问每个人的接口 ,公共部分代码,也可以访问每个人的私人代码,为最高级别的权限了
-
other,即其他人,就像是其他项目组的,他在未参与此项目的开发时,没有权限访问公共代码,更无权限访问私人代码。假如由于项目进度加急,需要他协作,那么则可开放访问公共部分或者更高级别的权限
-
只有理解了这三个概念,才能更好的理解Linux的文件管理系统。由于Windows淡化了权限的概念,基本每个人都是管理员账户,所以很少会涉及到权限问题,所以刚开始引入权限概念时,可能会不适用。
-
使用权限可以很好的保护我们的隐私,给予不同的文件、路径以不同的权限,本身也是一件有趣的事情
-
Linux的文件属性
-
档案的属性
-
输入ls -l
-
-
上图为当前目录下所有文件的属性,先看第一栏,也称作档案的属性
-
如框框,d为目录,相应的-为文件
-
接着后面数一下有九个符号,可以分为三个一组,分别对应user,group,other的权限,w为write,r为read,e为execute
-
接着看红色框框,第一组,rwx则为user可读可写可执行权限,类似于项目经理对这个文件(目录)可读可写可执行,r-x为可读不可写,可执行,即为同一个组下的成员的权限,r-x为其他人的权限,也可以可读、不可写、可执行
-
这部分建议多看几组数据,理解一下
-
第二栏表示连接占用的节点,若是目录,则表示该目录下还有几层目录。此部分在link档案时做详细介绍
-
第三栏为此档案(此文件)的拥有者,就像是作为开发人员,我负责的模块一样,我是模块的拥有者。对应第一栏的user的权限
-
第四栏则是拥有者所在的组名,即group名称,对应第一栏的group权限
-
第五栏为档案(文件)的大小,4096byte,4K的数据
-
第六栏好理解,为文件最后一次修改的日期(当没有被修改时,则是第一次创建的时间)
-
第七栏则是档案(文件)名称,假如是.开头,则是隐藏文件
-
内容扩充与注意项
-
x表示可执行权限,假如没有它,则表示无法执行。与文件后缀是无关的,举个例子,Windows中可执行文件都是.exe .bat等结尾,而Linux中即使为这些后缀,但无可执行的权限,也是不能被执行
-
看一个例子,drwxr--r-- 2 dandelion dandelion 4096 Feb 10 00:44 .ssh。问题为other有木有读取此路径的权限
-
答案是没有,原因是,当档案为路径时,要操作此路径,则要使用ls,cd等指令,但是我们没有可执行的权限,所以即使给了read的权限,但是还差可执行权限,也就是说,两者缺一不可。
-
只有路径才这样,要是为-
rwxr--r-- 2 dandelion dandelion 4096 Feb 10 00:44 .ssh,则可以读取档案(文件)
-
在看两个例子,案例来自于《鸟哥私房菜》
-
例题一:如果有下面的两个档案:
-
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt -rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai 请说明两个档案的拥有者与其相关的权限为何? 答:
-
档案『 test.txt 』的拥有人为 root ,群组为 root 。至于权限方面则只有 root 这个账号可以存取此档案,其他人则仅能读此档案;
-
另一个档案『 ping_tsai 』的拥有人为 test1 ,而群组为 testgroup。其中, test1 可以针对此档案具有可读可写可执行的权力,而同群组的 test2, test3 两个人与 test1 同样是 testgroup 的群组账号,则仅可读可执行但不能写 (亦即不能修改),至于非 testgoup 这一个群组的人则仅可以读,不能写也不能执行!
-
例题二:如果我的目录为底下的样式:
-
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/ 请问 testgroup 这个群组的成员与其他人( others )是否可以进入本目录? 答:
-
档案拥有者 test1 可以在本目录中进行任何工作;
-
而 testgroup 这个群组的账号,例如 test2, test3 亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
-
至于 other 的权限中虽然有 r ,但是由于没有 x 的权限,因此 others 的使用者,并不能进入此目录!
-
Linux文件属性的重要性
-
此时你可以回过头看看使用者与群组的2、3项,相信你有更深层次的理解
-
如何更改档案权限,从大到小有三个可以改的地方
-
改变档案所属群组,可以理解为把A项目改为B项目组,那前者中的成员都会到后者里面去。
-
使用的指令是chgrp,charge group。值得注意的是,后者群组一定是存在的,否则会报错
-
改变档案拥有者,可以理解为换了项目经理。
-
使用的指令是chown,charge own。同理,后者拥有者必须是系统中存在的,否则会报错
-
改变档案自身的权限(九个权限),可以理解为档案自身的权限增加了或者减少了。
-
数字更改方式
-
rwx分别对应,8421的后三位,即r为4、w为2、x为1,三者都有时,对应的数字为7。
-
例如
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt
-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai,
对应的数字为644.
-
假如
-rwxrwxrwx,
为则为777
-
更改文件的代码为 chmod 权限数值 文件名,中间用空格隔开
-
如ping_tsai文件,想要给所有的权限,则可以用 chmod 777 ping_tsai
-
设置好只用用 ls -l ping_tsai查看文件的属性
-
建议自己创建一个文件,多多操作几遍权限的更改
-
符号更改方式
-
九种方式分别对应user,group,other三个小组,分别取首字母表示组,然后直接操作组,直接赋值权限
-
chmod u=rwx,g=rw,o=r file.c,这样就给file.c文件赋予了-rwxrw-r--的属性,这种方式相对于数字更改方式更直接
-
更进一步处理,假如想批量操作呢,毕竟一个一个操作太繁琐,那么引入all的概念,也用首字母a,再引入加与减
-
chmod a+w file.c,即file.c文件在原有的基础上都添加了写的功能,假如之前是-rwxrw-r--,那么则变成-rwxrw-rw-
-
同理chmod a-r file.c,是在原有的基础上减去读的功能
-
对于文件权限这块,从理论上理解好了往往不够,还需要实际多操作,能事半功倍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)