文件或目录权限chmod

概念:linux目录或者文件,都会有一个所有者和所属组; 所有者是指文件的拥有者;所属组指是这个文件属于哪一个用户组; linux这样设置文件属性的目的是为了文件的安全; 所有者(user) 所属组(group) 其他用户(others)

目录或文件权限九个字节分为三段,每段三个字节;例:如下表示 第一段表示:所有者的权限; 第二段表示:所属组的权限; 第三段表示:其他用户。 r:表示是否可读 (数字表示4) w:表示是否可写 (数字表示2) x:表示是否可执行 (数字表示1) -rw-r--r-- 拿这个做例子,最一开始"rw"前面的“-”这个表示文件或目录类型 1.假设:rw-r--r-x=645,第一段4+2=6,第二段4,第三段5. 这样的话,所有者有可读可写不可执行;所属组拥有可读不可写不可执行,其他用户可读可写可执行

ls -l 命令可以来查看这些属性

例:查看/tmp/zhang/1这个目录的属性 [root@zhangzhen-01 ~]# ls -l /tmp/zhang/1 -rw-r--r--. 1 root root 0 3月 27 00:07 /tmp/zhang/1 (权限)(目录名)(所有者)(所属组)( 日期 )

注:第一个root是所有者 ,第二个root是所属组

1.1chmod命令 (修改权限)

创建一个.txt文件

[root@zhangzhen-01 ~]# touch /tmp/zhang/1.txt

查看这个文件的属性

[root@zhangzhen-01 ~]# ls -l /tmp/zhang/1.txt -rw-r--r--. 1 root root 0 3月 28 00:50 /tmp/zhang/1.txt 这个文件(644)所有者可读可写,所属组可读,其他用户可读

现在我想把这个文件修改成所有者可读可写可执行(rwx 700),其他的没有权限,如下:

[root@zhangzhen-01 ~]# ls -l /tmp/zhang/1.txt -rw-r--r--. 1 root root 0 3月 28 00:50 /tmp/zhang/1.txt [root@zhangzhen-01 ~]# chmod 700 /tmp/zhang/1.txt [root@zhangzhen-01 ~]# !ls ls -l /tmp/zhang/1.txt -rwx------. 1 root root 0 3月 28 00:50 /tmp/zhang/1.txt

如果想把目录及目录下的子文件批量修改权限,在这里用到大“R”

[root@zhangzhen-01 tmp]# ls -l zhang 总用量 0 -rw-r--r--. 1 root root 0 3月 28 01:15 1.txt -rw-r--r--. 1 root root 0 3月 28 01:15 2.txt [root@zhangzhen-01 tmp]# chmod -R 770 zhang [root@zhangzhen-01 tmp]# !ls ls -l zhang 总用量 0 -rwxrwx---. 1 root root 0 3月 28 01:15 1.txt -rwxrwx---. 1 root root 0 3月 28 01:15 2.txt -R 这个表示文件下所有的文件包括目录修改统一的权限

chmod还有一个“a+”“a-”选项参数,给三段都加上权限

[root@zhangzhen-01 tmp]# chmod a+x zhang [root@zhangzhen-01 tmp]# ls -ld zhang drwxrwxr-x. 2 root root 32 3月 28 01:15 zhang [root@zhangzhen-01 tmp]# chmod a-x zhang [root@zhangzhen-01 tmp]# ls -ld zhang drw-rw-r--. 2 root root 32 3月 28 01:15 zhang

更改所有者和所属组chown (change owner)

概念:chown命令可以更改文件的所有者
命令格式如下:
chown [-R] 账户名(root) 文件名 更改文件所有者
chown [-R] 账户名(root):组名(root,中间不加空格) 文件名
-R 选项只适合于目录,作用是级联更改,不仅更改当前目录,连目录里的目录或文件也全部更改

示例命令如下:

[root@zhangzhen-01 ~]# ls anaconda-ks.cfg [root@zhangzhen-01 ~]# mkdir dior #创建一个dior目录 [root@zhangzhen-01 ~]# useradd user1 #创建一个用户user1 [root@zhangzhen-01 ~]# touch dior/test1 #在dior下创建一个test1文件 [root@zhangzhen-01 ~]# ls -ld dior/ #查看dior这个目录所有者和所属组是谁 drwxr-xr-x. 2 root root 19 3月 28 21:59 dior/ [root@zhangzhen-01 ~]# chown user1 dior/ #修改dior所有者为user1 [root@zhangzhen-01 ~]# ls -ld dior/ #查看dior文件所有者是谁 drwxr-xr-x. 2 **user1 root **19 3月 28 21:59 dior/

文件所属组修改,示例命令如下:

[root@zhangzhen-01 ~]# mkdir dior #创建一个dior目录 [root@zhangzhen-01 ~]# groupadd user1 #创建一个组名 [root@zhangzhen-01 ~]# chown root:user1 dior/ #修改所有者为root,所属组为user1 后面跟文件名 [root@zhangzhen-01 ~]# ls -ld dior/ #查看dior文件的详细信息 drwxr-xr-x. 2 root** user1 **19 3月 28 21:59 dior/

目录及文件级联更改,不仅修改目录,还有目录下所有的文件,示例如下,-R:

[root@zhangzhen-01 ~]# mkdir dior #创建一个dior目录 [root@zhangzhen-01 ~]# touch dior/test1 #创建2个文件 [root@zhangzhen-01 ~]# touch dior/test2 [root@zhangzhen-01 ~]# tree dior/ #查看这个目录树是否创建成功 dior/ ├── test1 └── test2 [root@zhangzhen-01 ~]# ls -l dior/ #查看两个文件的属性及所有者,所属组 总用量 0 -rw-r--r--. 1 root root 0 3月 28 22:44 test1 -rw-r--r--. 1 root root 0 3月 28 22:44 test2 [root@zhangzhen-01 ~]# chown -R root:user1 dior/ #“-R”可以更改当前目录,连目录里的目录或文件全部修改。 [root@zhangzhen-01 ~]# !ls #查看是否修改成功 ls -l dior/ 总用量 0 -rw-r--r--. 1 root user1 0 3月 28 22:44 test1 -rw-r--r--. 1 root **user1 **0 3月 28 22:44 test2

chgrp命令 (所属组,change group)

概念:chgrp可以修改目录或文件的所属组
命令格式:chgrp [组名] [文件名]

示例命令如下:

[root@zhangzhen-01 ~]# groupadd user1 [root@zhangzhen-01 ~]# tail -5 /etc/group postfix:x:89: sshd:x:74: chrony:x:996: zhangzhen-03:x:1000: user1:x:1001:

umask (设置默认权限)

概念:默认情况下,目录的权限制是755;普通文件的权限制为644.
那么这个值是谁来规定的呢,就是umask。

查看umask默认值:

[root@zhangzhen-01 dior2]# umask #查看系统默认值 0022 #只看后三位 [root@zhangzhen-01 dior2]# umask 002 #修改umask默认值为002 0002

在umask不自定义前,目录权限值为:755,普通文件权限值为:644
umask的值是可以自定义的,假设umask为002,你再创建目录或者文件时,默认权限分别为:
rwx rwx rwx -  --- --- -w- (目录的权限) 777
rw- rw- rw- - --- --- -w-(文件的权限)666

示例如下:

[root@zhangzhen-01 dior2]# umask 002 #设置umask默认值为002 [root@zhangzhen-01 dior2]# mkdir dior3 #创建个dior3目录 [root@zhangzhen-01 dior2]# ls -ld dior3/ #查看dior3目录的权限775 drwxrwxr-x. 2 root root 6 3月 28 23:25 dior3/ [root@zhangzhen-01 dior2]# touch test1 #在dior3下创建个test1文件 [root@zhangzhen-01 dior2]# ls -l test1 #查看lest1文件的权限664 -rw-rw-r--. 1 root root 0 3月 28 23:26 test1

拿上述命令为例,目录算法如下:

[root@zhangzhen-01 dior2]# mkdir dior3/ #创建个dior3目录 [root@zhangzhen-01 dior2]# ls -ld dior3/ #查看dior3目录的权限775 drwxrwxr-x. 2 root root 6 3月 28 23:25 dior3/ 我们用默认权限(777)减去你所设定的权限(002),目录算法应该是: rwx(7) rwx(7) rwx(7) 减去所设定的权限 ---(0) ---(0) -w-(2) =775

同样拿上述命令为例,文件算法如下:

[root@zhangzhen-01 dior2]# touch test1 #在dior3下创建个test1文件 [root@zhangzhen-01 dior2]# ls -l test1 #查看lest1文件的权限664 -rw-rw-r--. 1 root root 0 3月 28 23:26 test1 我们用默认权限(666)减去你所设定的权限(002),文件算法应该是: rw-(6) rw-(6) rw-(6) 减去你所设定的权限 ---(0) ---(0) -w-(2) =664

隐藏权限lsattr_chattr

概念:chattr设置隐藏文件;lsattr查看隐藏文件

命令chattr格式 : chattr [+-=] [Asaci] [文件或者目录名],其中,+ - =分别表示增加、减少和设定。 各个选项的含义如下:
A :增加该属性后,表示文件或目录的atime(时间)将不可修改
s:增加该属性后,会将数据同步写入磁盘中
a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性。
c:增加该属性后,表示自动压缩该文件,读取时会自动解压
i:增加该属性后,表示文件不能删除、重命名、设定链接、写入以及新增数据。

以上选项中,常用的为“i”选项,示例命令如下:

[root@zhangzhen-01 ~]# mkdir dior3 #创建一个目录 [root@zhangzhen-01 ~]# chattr +i dior3 #添加不能删除重命名等操作 [root@zhangzhen-01 ~]# touch dior3/test1 #创建文件 touch: 无法创建"dior3/test1": 权限不够 #设定成功,创建不了文件 [root@zhangzhen-01 ~]# chattr -i dior3 #给该权限取消 [root@zhangzhen-01 ~]# !touch #继续创建文件 touch dior3/test1 [root@zhangzhen-01 ~]# ls dior3/test1 #ok,取消成功,正常创建文件 dior3/test1 [root@zhangzhen-01 ~]# chattr +i dior3 [root@zhangzhen-01 ~]# rm -fv dior3/test1 #在这里,如果目录有了“i”权限以后,里面的文件也是删除不了的 rm: 无法删除"dior3/test1": 权限不够

lsattr命令

概念:该命令用于读取文件或目录的特殊权限
格式:lsattr [-aRd] [文件/目录名]
选项:
-a:类似于ls -a选项,目录里隐藏文件一同列出
-R:连同子目录的数据一并列出。
-d 查看目录本身

-a 使用方法: 查看全部的(包括隐藏的文件)全都显示出来

[root@zhangzhen-01 ~]# lsattr -a dior ---------------- dior/. ---------------- dior/.. ---------------- dior/test1 ---------------- dior/test2

-R 使用方法:连同目录下的子目录的数据一并列出 可以看见N层目录

[root@zhangzhen-01 ~]# lsattr -R dior ---------------- dior/test1 ---------------- dior/test2

-d 使用方法:查看目录本身

[root@zhangzhen-01 /]# lsattr -d root/ ---------------- root/