前言
本文主要讲述在Linux下,与文件有关的权限管理,包括如何查看文件的权限,以及修改文件权限的几个常用命令。
查看权限
查看权限最简单的命令是ls -l
,有些系统也会增加一个ll
的别名。
示例:
# 查看当前目录所有文件权限
ls -l
total 24
-rw-r--r-- 1 yangan staff 522 Jan 10 11:28 app.log
drwxr-xr-x 2 yangan staff 64 Jan 10 11:52 test
# 查看特定文件权限
ls -l /etc/php.ini
-r--r--r-- 1 root wheel 71890 Nov 30 20:36 /etc/php.ini
上面的输出可以拆解为六部分,第一部分是-rw-r--r--
,代表了文件类型以及所属权限(后面会详细说明);第二部分就是文件目录的总数,如果是文件,就是1,如果是空文件夹,就是2(即 . 和 ..); 第三部分就是所属用户,第四部分就是所属用户组,第五部分就是文件/目录的大小(字节为单位),第六部分就是文件的修改时间。
权限说明
如上可以看到,每一个文件/文件夹的前面都有十位字符,第1位是表示文件/文件夹的类型,d是目录,l是链接文件,-是普通文件,p是管道等。
后面的9位字符每3个为一组,分别代表文件所有者(user)、文件所有者所在组(group)、其他用户(other),对文件拥有的权限。
权限有三种,分别是读取(read)、写入(write)、执行(execute)这三种。
最后,每种权限对应着一个数字,read 对应 4, write 对应 2, execute对应 1. 组合起来有以下几种情况:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
所以,像上面的例子,-rw-r--r-- 1 yangan staff 522 Jan 10 11:28 app.log
,其含义就是有一份app.log文件,它的所属用户对其拥有读写权限,用户组和其他用户只有读权限,大小是522字节,修改时间是 1月10号11:28分
。
权限修改
常用命令:(从英文全称记忆命令更好记)
- chown: change owner 更改所有者
- chgrp: change group 更改所属组
- chmod: change mode 更改权限
chmod命令
chmod命令用于更改权限,以上面的app.log为例,如果要给其加上一个执行权限,有两种做法
# 第一种,744 对应 rwxr--r--
$ chmod 744 app.log
# 第二种
# u就是上面提到的所属用户(user),+号表示添加权限,x表示执行权限
$ chmod u+x app.log
chown命令
chown命令用于修改用户和用户组,但是需要超级管理员权限
# 将app.log这份文件的用户和用户组改为nobody
$ sudo chown nobody:nobody app.log
# 修改目录的用户和用户组
$ sudo chown -R nobody:nobody test/
chgrp命令
chgrp命令用于修改用户组,它与chown的区别在于,它不需要超级管理员权限,只要该用户是这个组的一员,就可以改变文件所属的组
$ chgrp -v nobody app.log
chgrp: you are not a member of group nobody
写在最后
各位老板,创作不易,更需不断地磨练和总结,欢迎关注我,我是言淦,为你分享各种实用的编程知识与编程技巧,你们的点赞与关注是我前进和创作的最大动力!!