文件或目录权限 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/
来源: http://www.bubuko.com/infodetail-2542385.html