基本功修炼之Linux-文件与文件夹权限的使用

179 阅读6分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

Linux 组管理

基本介绍

我们都知道Linux是一个多用户的系统,可以有很多个用户,也可以有很多个组。并且每一个用户都必须属于一个组,不能独立于组外,在Linux中每个文件都有所有者,所在组,其他组的概念,通过分组可以对文件的权限进行统一管理。

文件/目录的所有者

一般来说都是谁创建了这个文件,这个文件的所有者就是这个创建者。

常用命令

ls -ahl: 查看文件的所有者

应用案例

查看任意目录下的文件或目录的所有者

[root@iZuf6dljn9u61o2livt0xqZ dream]# ls -l
总用量 20
drwxr-xr-x  2 root root    26 616 15:18 http

修改文件所有者

常用命令

chown 用户名 文件名: 修改文件所有者

应用案例

使用root用户创建一个文件test.txt,然后将其所有者设置为uzi。

# 用户uzi已经存在了
[root@iZuf6dljn9u61o2livt0xqZ dream]# id uzi
uid=1004(uzi) gid=1005(ig) 组=1005(ig)
#新增一个文件
[root@iZuf6dljn9u61o2livt0xqZ dream]# touch test.txt
# 目前的所有者事root
[root@iZuf6dljn9u61o2livt0xqZ dream]# ls -l
-rw-r--r--  1 root root     0 11月 22 21:24 test.txt
# 修改所有者后所有者变成了uzi
[root@iZuf6dljn9u61o2livt0xqZ dream]# chown uzi test.txt 
[root@iZuf6dljn9u61o2livt0xqZ dream]# ls -l
-rw-r--r--  1 uzi  root     0 11月 22 21:24 test.txt

文件/目录的所有组

一般来说都是谁创建了这个文件,这个文件的所有组就是这个创建者所属的组。

应用案例

现在有一个用户uzi,所属组是ig,使用uzi创建一个文件看看,所有组是什么。

#使用su切换用户
[root@iZuf6dljn9u61o2livt0xqZ dream]# su uzi
# 切换到uzi的家目录,不是家目录是没有权限创建文件的
[uzi@iZuf6dljn9u61o2livt0xqZ dream]$ cd /home/uzi/
# 新增文件
[uzi@iZuf6dljn9u61o2livt0xqZ ~]$ touch test.txt
# 可以看到所有者事uzi,所有组是ig
[uzi@iZuf6dljn9u61o2livt0xqZ ~]$ ls -l
-rw-r--r-- 1 uzi ig 0 1122 21:45 test.txt

其他组

除了文件所有者和所在组的用户外,系统的其他用户跟其他的组都是其他组

Linux文件权限

基本介绍

我们进入一个目录可以通过ls -l 查看目录下面的文件,如下:

-rw-r--r-- 1 uzi ig 0 11月 22 21:45 test.txt

我们分别来看看分别代表什么含义

  • 0-9位:
    • 0位:表示文件的类型, d表示目录,c表示字符设备文件,如鼠标,键盘,l表示连接,b表示块设备比如硬盘(Linux中万物皆文件,所有不要觉得硬盘是个文件很意外)
    • 1-3位: 确定所有者拥有该文件的权限(user)
    • 4-6位: 确定所在组拥有该文件的权限(group)
    • 7-9位: 确定其他拥有该文件的权限(other)

rwx权限详细

作用到文件上

  • r : 代表可读(read),可以读取,可以查看。
  • w : 代表可写(write),可以修改,但是不代表可以删除文件,删除一个文件的前提条件是对该文件所在的目录有写的权限才可以修改,因为删除文件相当于就是修改文件夹的内容。
  • x : 代表可以执行(execute),可以被执行

作用到目录上

  • r : 代表可读(read),可以读取,可以通过ls查看文件夹下的内容。
  • w : 代表可写(write),可以修改,对目录的创建、删除、重命名。
  • x : 代表可以执行(execute),可以进入该目录。

rwx的使用方式

第一种: +、—、= 进行权限变更。

  • u: 表示所有者(user)
  • g: 表示所有组(group)
  • o: 其他人(other)
  • a: 所有人(all,是u,g,o的总和)

常用命令

chmod u=rwx,g=rwx,o=x 文件名/目录名: 设置文件所有者跟所有组的用户有读写执行的权限,其他用户只有执行权。

chmod g+w 文件名/目录名: 给文件的所有组加上w权限,是加上,不是覆盖,比如原所有组有读写权限,执行此命令后所有组就有读写执行全部权限了。

chmod a-x 文件名/目录名: 把文件所有用户都去掉执行权限。

应用案例

通过rwx的方式,使用root账户创建一个文件aaa.txt,将其所有组的权限设置为可以写跟可以执行,其他用户设置可以读写执行。

[root@iZuf6dljn9u61o2livt0xqZ uzi]# touch aaa.txt
#刚创建文件可以发现所有组跟其他用户都只有读的权限
[root@iZuf6dljn9u61o2livt0xqZ uzi]# ls -l
-rw-r--r-- 1 root root 0 1122 22:17 aaa.txt
[root@iZuf6dljn9u61o2livt0xqZ uzi]# chmod g=wx,o=rwx aaa.txt
# 设置完后可以看到所有组有了写跟执行的权限,其他用户有了读写执行的权限
[root@iZuf6dljn9u61o2livt0xqZ uzi]# ls -l
-rw--wxrwx 1 root root 0 1122 22:17 aaa.txt

第二种:通过数字进行权限变更。

Linux设计者在设计权限的时候,用了一个很巧妙的方式对权限进行了简化,就是用数字进行表示,巧妙在哪呢,就是你能想到的rwx的所有组合都是可以通过数字表示出来,比如3=w+x,5=r+x。

r=4,w=2,x=1 rwx=4+2+1=7, chmod 777 就等价于 chmod rwx,rwx,rwx

常用命令

chmod 751 文件名/目录名: 给文件或者目录设置权限为: 所有者有读写执行权限,所有组有读跟执行的权限,其他用户都只有执行权限。

chmod 7 文件名/目录名: 给文件或者目录设置权限为: 所有者,所有组什么权限都没有,其他用户有读写执行权限。

chmod 77 文件名/目录名: 给文件或者目录设置权限为: 所有者什么权限都没有,所有组跟其他用户,有读写执行权限。

chmod 777 文件名/目录名: 给文件或者目录设置权限为: 所有者,所有组跟其他用户,都有读写执行权限。

应用案例

通过数字的方式,使用root账户创建一个文件bbb.txt,将其所有组的权限设置为可以写跟可以执行,其他用户设置可以读写执行。

[root@iZuf6dljn9u61o2livt0xqZ uzi]# touch bbb.txt
[root@iZuf6dljn9u61o2livt0xqZ uzi]# ls -l
总用量 0
-rw--wxrwx 1 root root 0 1122 22:17 aaa.txt
-rw-r--r-- 1 root root 0 1122 22:21 bbb.txt
[root@iZuf6dljn9u61o2livt0xqZ uzi]# chmod 737 bbb.txt 
[root@iZuf6dljn9u61o2livt0xqZ uzi]# ls -l
总用量 0
-rw--wxrwx 1 root root 0 1122 22:17 aaa.txt
-rwx-wxrwx 1 root root 0 1122 22:21 bbb.txt

结束语

一万个美丽的未来,抵不上一个温暖的现在;每一个真实的现在,都是我们曾经幻想的未来,愿你爱上现在,梦见未来。