在Linux系统中,我们经常需要对文件改些权限,例如为了增加安全性改个属主属组啥的,或是访问权限,这是很常见的情况,所有我们需要了解一下几三个命令:chown,chgrp,chmod,umask
在上篇博文(Linux文件管理常用命令)最后我们简单讲解了一下文件属性,如有的地方不是很明白,就看这篇博文中有介绍
一、chown(change owner)
chown - change file owner and group # 修改文件的属主和属组 SYNOPSIS chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE... -R: 递归修改子目录属主和属组 --reference=/path/to/somefile:依据某文件修改文件属主和属组 [[email protected] ~]# ll total 8 -rwxr-xr-x 1 root root 518 Nov 1 20:02 iptables.sh
(1).只修改用户的属主
[[email protected] ~]# chown mysql iptables.sh # 修改文件的属主为mysql [[email protected] ~]# ll total 4 -rwxr-xr-x 1 mysql root 518 Nov 1 20:02 iptables.sh
(2).同时修改属主和属组
[[email protected] ~]# chown apache.apache iptables.sh # 修改文件的属主和属组都为apache [[email protected] ~]# ll total 4 -rwxr-xr-x 1 apache apache 518 Nov 1 20:02 iptables.sh
(3).递归修改目录及其子目录下所有文件的属主和属组
[[email protected] ~]# chown -R mysql:mysql test/ # 递归修改test下所有文件的属主和属组 [[email protected] /]# ll /test/ total 4 -rw-r--r-- 1 mysql mysql 0 Nov 6 16:33 a -rw-r--r-- 1 mysql mysql 0 Nov 6 16:33 b -rw-r--r-- 1 mysql mysql 208 Jul 6 13:41 id_rsa_1024.pub
(4).参考其他文件来修改文件属组属组
[[email protected] test]# ll total 4 -rw-r--r-- 1 mysql mysql 208 Jul 6 13:41 id_rsa_1024.pub # 此文件原先的属主属组为mysql [[email protected] /]# ll /etc/passwd -rw-r--r-- 1 root root 1592 Nov 5 15:55 /etc/passwd # passwd文件属主和属组为root [[email protected] test]# chown --reference=/etc/passwd id_rsa_1024.pub # 参考passwd来修改id_rsa_1024.pub [[email protected] test]# ll id_rsa_1024.pub -rw-r--r-- 1 root root 208 Jul 6 13:41 id_rsa_1024.pub # 此时属主属组都已经改为了root [[email protected] ~]# chown testuser iptables.sh # 修改文件的属主为一个不存的用户testuser chown: `testuser‘: invalid user
二、chgrp(change group)
chgrp - change group ownership # 只能修改文件的属组 SYNOPSIS chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... [[email protected] ~]# chgrp root iptables.sh # 修改文件的属组为root [[email protected] ~]# ll total 4 -rwxr-xr-x 1 apache root 518 Nov 1 20:02 iptables.sh
三、chmod(change mode)
chmod - change file access permissions # 修改文件的访问权限 SYNOPSIS chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... [[email protected] ~]# ll total 4 -rwxr-xr-x 1 root root 518 Nov 1 20:02 iptables.sh r 权限分为3类:文件属主,文件属组,其他用户 例如rwxr-xr-x其中三位为一组权限,分别为 文件属主的权限:rwx,可读,可写,可执行 文件所属组的权限:r-x,可读,不可写,可执行 其他用户的权限:r-x,可读,不可写,可执行 权限:read, write, execute r, w, x 文件: r: 可以使用内容查看类的命令来显示其相关内容 w: 可以使用文本编辑器修改其内容 x: 可以将其发起一个进程 目录: r: 可以使用ls命令查看目录内容的文件信息 w: 可以创建、删除文件 x: 可以使用ls -l命令查看目录内容的文件信息,并且可以使用cd命令切换进此目录
(1).数字表示法
---:0 不可读不可写不可执行 --x:1 不可读不可写可执行 -w-:2 不可读可写不可执行 -wx:3 不可读可写可执行 r--:4 可读不可写不可执行 r-x:5 可读不可写可执行 rw-:6 可读可写不可执行 rwx:7 可读可写可执行 [[email protected] ~]# ll total 4 -rwxr-xr-x 1 root root 518 Nov 1 20:02 iptables.sh # 现在的权限换成数字表示就是755 [[email protected] ~]# chmod 600 iptables.sh # 修改此文件的权限为600 [[email protected] ~]# ll total 4 -rw------- 1 root root 518 Nov 1 20:02 iptables.sh
(2).字母表示法
u:属主 g:属组 o:其他用户 a:所有用户 [[email protected] ~]# ll total 4 -rw------- 1 root root 518 Nov 1 20:02 iptables.sh [[email protected] ~]# chmod +x iptables.sh # 为所有用户添加可执行权限,此时可以a可以省略 [[email protected] ~]# chmod u=rwx,go=r iptables.sh # 修改iptables.sh文件权限为744 [[email protected] ~]# ll total 8 -rwxr--r-- 1 root root 518 Nov 1 20:02 iptables.sh
四、umask(遮罩码)
(1).创建文件默认权限:666-umask
ps:文件默认决不允许出现执行权限,即使666-umask后算出来文件有执行权限的话,也会被去掉可执行权限
[[email protected] ~]# umask # root用户默认umask为022,至于为什么看后面总结 0022 [[email protected] ~]# umask 023 # 临时修改umask值为023 [[email protected] ~]# touch testfile [[email protected] ~]# ll total 4 -rw------- 1 root root 518 Nov 1 20:02 iptables.sh -rw-r--r-- 1 root root 0 Nov 6 16:01 testfile # 本应该是643的权限,此时也会+1变为644
(2).创建目录默认权限:777-umask
[[email protected] ~]# umask # 默认umask为022 0022 [[email protected] ~]# mkdir testdir # 新建一个空目录 [[email protected] ~]# ll total 8 -rw------- 1 root root 518 Nov 1 20:02 iptables.sh drwxr-xr-x 2 root root 4096 Nov 6 16:05 testdir # 此新目录权限为777-022为755
总结:
- 修改属主和属组时,所对应的属主或者属组必须得存在,不存在时则会报错
- 如果用户名和基本组组名一致的话,umask值为002;否则为022
- chown和chmod都可以使用一下两个选项:①-R ②--reference=/path/to/somefile
时间: 2025-01-02 15:51:31