您的位置:首页 > 其它

2017-12-20 2周3次课

2017-12-21 00:38 232 查看

2.14 文件和目权限chmod

1.linux文件属性
用ls -l 命令查看当前目录下文件的详细信息。共显示了9列内容(用空格划分内容)。例如

[root@hanshuo-10 ~]# ls -l
总用量 8
-rw-------. 1 root root 1411 8月   4 05:10 anaconda-ks.cfg
-rw-r--r--. 1 root root 1650 8月   3 21:50 initial-setup-ks.cfg

根据上例中的9列内容分别了解下他们的含义。

第1列:-rw-r--r--.来说含义:前面的-是文件的类型。文件类型后面的9位,每3位为一组,他们均为rwx这3个参数的组合。其中r代表可读,w代表可写,x代表可执行。前3位为所有者(user)权限,中间3个为所属组(group)的权限,最后3位为其他非本群组用户(others)的权限。
举例说明如下


假设一个文件的属性为-rwxr-xr-,它代表的意思是,该文件为普通文件,文件所有者可读可写可执行,文件所属组可读不可写但可以执行,其他用户对其只可读。

注意:对于一个目录来讲,打开这个目录即为执行这个目录,所以任何一个目录必须要有X权限才能打开并查看该目录下的内容。

权限也可以用数字表示r=4 w=2 x=1 如果一个权限rwx就是这三个数相加等于7(rwx=7),如果rw-就是等于6(rw-=6),如果这个权限--x等于1(--x=1)例如上列中rw-r--r--就是等于644(re-r--r--=644)。

2. 命令chmod (更改文件/目录的权限)
把上列中的anaconda-ks.cfg文件用chmod改下权限
举例: 以前anaconda-ks.cfg权限是rw-------=600改为rwx------=700 如下所示

[root@hanshuo-10 ~]# ls -l
总用量 8
-rw-------. 1 root root 1411 8月   4 05:10 anaconda-ks.cfg
[root@hanshuo-10 ~]# chmod 700 anaconda-ks.cfg
[root@hanshuo-10 ~]# ls -l
总用量 8
-rwx------. 1 root root 1411 8月   4 05:10 anaconda-ks.cfg


注意:chmod更改权限对目录也好对文件也好生效的仅仅是这个目录的本身,如果想把目录下的子目录还有子文件全部一次性的更改权限可以加个大R选项格式为:chmod -R 777 文件名

2.15 更改所有者和所属组chown

chown(change owner的简写)可以更改文件的所有者,也可以更改所有组,还有个-R选项只适合目录,作用级联更改。举例
[root@hanshuo-10 ~]# ls -l
总用量 8
-rwx------. 1 root root 1411 8月   4 05:10 anaconda-ks.cfg
[root@hanshuo-10 ~]# chown hanshuo anaconda-ks.cfg
[root@hanshuo-10 ~]# ls -l
总用量 8
-rwx------. 1 hanshuo root 1411 8月   4 05:10 anaconda-ks.cfg
[root@hanshuo-10 ~]# useradd user1         //更改组之前先建个组
[root@hanshuo-10 ~]# chown  hanshuo:user1 anaconda-ks.cfg      //更改组用:号隔开
[root@hanshuo-10 ~]# ls -l
总用量 8
-rwx------. 1 hanshuo user1 1411 8月   4 05:10 anaconda-ks.cfg


命令chgrp也可以更改组格式:chgrp 组名 文件名

2.16 umask

默认情况下,新建目录的默权限为755,普通文件的权限值644,这些默认值都是umask规定的。

更改新建目录的默权限值命令umask,格式为umask xxx如果要查看umask的值,只要在命令行输入umask回车即可

[root@hanshuo-10 ~]# umask
0022

这里umask的预设值是0022,代表什么意思如下

若用户建立普通文件,则预设没有可执行权限,只有r、w两个权限,最大值为666(-rw-rw-rw).
若用户建立目录,则预设所有权限均开放,即777 (rwxrwxrwx)

umak数值代表的含义为以上两条规则中的默认值(文件为666,目录为777)需要减掉的权限,所以:
目录的权限为rwxrwxrwx - ----w--w-=rexr-xr-x
普通文件的权限为rw-rw-rw- - ----w--w- =rw-r--r--
umask的值是可以自定义的,比如设定umask为002,你在创建目录或者文件时,默认权限分别为:
目录的权限为rwxrwxrwx - -------w-=rwxrwxr-x
普通文件的权限rw-rw-rw- - -------w-=rw-rw-r--

举例如下:

[root@hanshuo-10 ~]# umask 002
[root@hanshuo-10 ~]# mkdir han
[root@hanshuo-10 ~]# ls -ld han
drwxrwxr-x 2 root root 6 12月 21 00:19 han
[root@hanshuo-10 ~]# touch han1
[root@hanshuo-10 ~]# ls -l han1
-rw-rw-r-- 1 root root 0 12月 21 00:19 han1

以上举例中创建的目录的默认权限变为775,文件的默认权限变为664.

2.17 隐藏权限lsattr/chattr

·i权限 (隐藏权限)
`设置隐藏权限 chattr +i xxx(设置隐藏权限后无法写入数据)

[root@aming-01 ~]# chattr +i 1.txt
[root@aming-01 ~]# vi 1.txt
-- INSERT -- W10: Warning: Changing a readonly file

[root@aming-01 ~]# head -n2 /etc/passwd > 1.txt
-bash: 1.txt: 权限不够

·查看隐藏权限 lsattr xxx

[root@aming-01 ~]# lsattr 1.txt
----i----------- 1.txt

编辑有隐藏权限的文件时,会生成一个和该文件名称类似的缓存文件,例如1.txt的缓存文件为1.txt~,那么在保存退出后,该缓存文件会覆盖原文件,但是由于增加了隐藏权限,退出时无法保存,自然也无法覆盖原文件,所以多出一个缓存文件*

去除隐藏权限 chattr -i xxx

[root@aming-01 ~]# chattr -i 1.txt
[root@aming-01 ~]# lsattr 1.txt
---------------- 1.txt

·给目录增加i权限(不能删除、不能改名,不能再目录下增加子目录和文件,但可以更改目录下文件内容)

[root@aming-01 ~]# rm -r 123/
rm:是否进入目录"123/"? y
rm:是否删除目录 "123/456"?y
rm: 无法删除"123/456": 权限不够
[root@aming-01 ~]# mv 123/ 234/
mv: 无法将"123/" 移动至"234/": 不允许的操作
[root@aming-01 ~]# chattr +i 123/
[root@aming-01 ~]# lsattr -d 123/
----i----------- 123/
[root@aming-01 ~]# head -n2 /etc/passwd > 123/1.txt
[root@aming-01 ~]# cat 123/1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

·a权限 (可以追加、可以更改时间信息(touch);不能更改文件内容、不能删除、不能改名字)

·设置追加权限 chattr +a 1.txt

[root@aming-01 ~]# touch 1.txt
[root@aming-01 ~]# ll
总用量 20
-rw-r--r--. 1 root root 10208 12月 19 21:41 1.txt
-rw-r--r--. 1 root root 928 12月 19 20:30 2.txt
-rw-------. 1 root root 1546 12月 13 06:40 anaconda-ks.cfg
[root@aming-01 ~]# rm 1.txt
rm:是否删除普通文件 "1.txt"?y
rm: 无法删除"1.txt": 不允许的操作
[root@aming-01 ~]# mv 1.txt 3.txt
mv: 无法将"1.txt" 移动至"3.txt": 不允许的操作
[root@aming-01 ~]# vi 1.txt
"1.txt" E212: Can't open file for writing

[root@aming-01 ~]# head -n2 /etc/passwd > 1.txt
-bash: 1.txt: 不允许的操作
[root@aming-01 ~]# head -n2 /etc/passwd >> 1.txt
[root@aming-01 ~]# cat 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@aming-01 ~]# touch 1.txt
[root@aming-01 ~]# ll 1.txt
-rw-r--r--. 1 root root 65 12月 19 22:31 1.txt #时间更改

·给目录增加a权限,可以在目录下增加子目录和子文件

[root@aming-01 ~]# chattr +a 123/
[root@aming-01 ~]# lsattr -d 123/
-----a---------- 123/
[root@aming-01 ~]# mkdir 123/234/
[root@aming-01 ~]# ll 123/
总用量 4
-rw-r--r--. 1 root root 65 12月 19 22:16 1.txt
drwxr-xr-x. 2 root root 6 12月 19 22:26 234
drwxr-xr-x. 2 root root 6 12月 19 21:52 456
[root@aming-01 ~]# touch 123/2.txt
[root@aming-01 ~]# ll 123/
总用量 4
-rw-r--r--. 1 root root 65 12月 19 22:16 1.txt
drwxr-xr-x. 2 root root 6 12月 19 22:26 234
-rw-r--r--. 1 root root 0 12月 19 22:27 2.txt
drwxr-xr-x. 2 root root 6 12月 19 21:52 456
[root@aming-01 ~]# cat 123/1.txt
[root@aming-01 ~]# head -n2 /etc/passwd >123/1.txt
[root@aming-01 ~]# cat 123/1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

·查看全部文件权限,包括隐藏文件 lsattr -a

[root@aming-01 ~]# lsattr -a /root/
---------------- /root/.
---------------- /root/..
---------------- /root/.bash_logout
---------------- /root/.bash_profile
---------------- /root/.bashrc
---------------- /root/.cshrc
---------------- /root/.tcshrc
---------------- /root/.bash_history
---------------- /root/.ssh
---------------- /root/anaconda-ks.cfg
---------------- /root/2.txt
---------------- /root/.lesshst
---------------- /root/1.txt
---------------- /root/1.txt~
----i----------- /root/123

·查看目录下的子目录和子目录下文件的权限 lsattr -R

[root@aming-01 ~]# lsattr -R 123/
---------------- 123/456

123/456:

---------------- 123/1.txt

·查看目录本身权限 lsattr -d

[root@aming-01 ~]# mkdir 123/
[root@aming-01 ~]# mkdir 123/456/
[root@aming-01 ~]# lsattr 123
---------------- 123/456
[root@aming-01 ~]# lsattr -d 123/
---------------- 123/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  2周 3次课