Linux中文件的属性

Linux的文件属性,简单的说,有这么几种

  • 权限
  • 所属者
  • 所属组

下面是一个文件

1
-rw-r--r--. 1 root root 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz

对应关系为

1
2
3
-rw-r--r--. 1    root     root  51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 权限 ][连结][拥有者][群组][文件容量][ 修改日期 ][ 文件名 ]

Linux中的文件权限

上述权限一栏可以3个一组,分为3组

1
-, rw-, r--, r--

注意到,第一个字符单独分组,这个表示文件类型。

  • 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
  • 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
  • 若是[ l ]则表示为连结档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

剩下的三组主要由[rwx]组成,r-read, w-write, x-execute, [-]表示占位符,即没权限。

  • 第一组为『文件拥有者的权限』,上栗中文件拥有者可读可写
  • 第二组为『同群组的权限』;上栗中文件所属组可读
  • 第三组为『其他非本群组的权限』,上栗中其他人可读

权限除了字母表示外还可以用数字,

1
r=4, w=2, x=1, -=0

关于为什么是4210,见参考[权限详解]。

所以,上述文件的权限也可以表示为644

修改文件权限

命令

1
chmod [可选项] <mode> <file...>

可选项

1
2
3
4
5
6
7
8
9
10
可选项:
-c, --changes like verbose but report only when a change is made (若该档案权限确实已经更改,才显示其更改动作)
-f, --silent, --quiet suppress most error messages (若该档案权限无法被更改也不要显示错误讯息)
-v, --verbose output a diagnostic for every file processed(显示权限变更的详细资料)
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively (以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)
--help 显示此帮助信息
--version 显示版本信息

mode

1
2
3
4
5
6
7
8
9
10
权限设定字串,详细格式如下 :
[ugoa...][[+-=][rwxX]...][,...],

其中
[ugoa...]
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。
[+-=]
+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
[rwxX]
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

示例,修改所属者添加可执行权限

1
2
3
4
5
[root@localhost es]# ls -la
-rw-r--r--. 1 es es 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz
[root@localhost es]# chmod u+x kibana-5.6.5-linux-x86_64.tar.gz
[root@localhost es]# ls -la
-rwxr--r--. 1 es es 51894267 May 15 12:58 kibana-5.6.5-linux-x86_64.tar.gz

另一个比较常用的修改方式是数字法。

rwx = 4+2+1 = 7 可读可写可执行
r-x = 4 + 1 = 5 可读可执行

最常用的是755,即所属者拥有所有权限,所属组和其他人没有写权限。

1
chmod 755 kibana-5.6.5-linux-x86_64.tar.gz 

修改文件所属者

chown :改变文件拥有者

基本用法
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录

示例

1
2
3
4
5
[root@localhost jdata]# ls -la
drwxr-xr-x. 2 root root 4096 Jun 14 00:05 es
[root@localhost jdata]# chown -R es:es es
[root@localhost jdata]# ls -la
drwxr-xr-x. 2 es es 4096 Jun 14 00:05 es
  • R recursive 递归

修改文件所属组

也可以单独修改文件所属组

基本用法

1
chgrp [-R] 用户组名称 dirname/filename ...

参考