No.9 Linux的权限管理

172 阅读3分钟

前言

本文主要讲述在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

写在最后

各位老板,创作不易,更需不断地磨练和总结,欢迎关注我,我是言淦,为你分享各种实用的编程知识与编程技巧,你们的点赞与关注是我前进和创作的最大动力!!