进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.

权限

文件权限对用户的分类

  • 文件的所有者 – u user
  • 文件所属组 – g group
  • 其他用户 – o other

用户对文件操作的分类

  • r(读): 对于文件而言,具有读文件的权限,对目录而言,具有浏览目录的权限
  • w(写): 对文件而言,具有修改文件的权限,对目录而言,具有删除,移动目录的权限
  • x(执行): execute对文件而言,具有执行文件的权限,对于目录而言,具有进入目录的权限

二进制位图

  • rwxrwxr-x,表示为 111 111 101,字母表示可,"-" 表示不可,前三位表示文件所有者(u)的权限,中间三位表示文件所有组(g)的权限,后三位表示其他用户(o)权限,最后一位为沾滞位
  • 同样也可以用八进制表示,例如:rwxrwxr-x 表示为 775
  • 例如:735 所属组权限:可写可执行,其他用户:可读可执行

文件权限的常见命令

  • umask 查看/设置文件的默认权限掩码
    • 权限掩码:设置文件默认的创建权限
    • 实际权限 = 给定权限 & (~权限掩码)
    • (八进制)给定 635 ,掩码:033,求权限。635 & (~033)
  • chmod 修改文件的权限
    • chmod 644 filename – 通过八进制数字修改
    • chmod u+x filename – 增加用户的执行权限
    • chmod g-w filename – 删除用户组的写权限
    • chmod o+r filename – 增加其他用户的读权限
  • chown 修改文件所有者
    • chown username fliename
  • chgrp 修改文件所有组
    • chgrp groupname filename
  • 沾滞位

1. 进入目录的权限(cd):

  1. 创建一个目录_work并使用chmod 000 _work给目录work设置成无权限
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.
  2. 我们先给user加上r权限,(即chmod u+r _work)但是通过图片我们看到访问依然被拒绝,所以进入目录不需要可读权限,需要别的权限,我们继续再给user加上其他的权限。
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.
  3. 我们在给user加上w权限(即chmod u+w _work)进入目录访问的权限依然被拒绝,由此我们可知道进入目录的权限也不需要写权限。
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.
  4. 我们再给user加上执行权限(即chmod u+x _work)我们发现可以进入目录,所以目录需要的是可执行性权限。
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.

总结:

  1. 进入一个目录,对于普通用户至少需要可执行权限
  2. 在目录中创建一个新的文件时,用户需要可写可执行权限
  3. 在目录中创建文件并进行显示,用户需要可读可写可执行权限

说明

  1. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录有-r权限
  2. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令cd进入目录,但是由于目录没有读权限,所以在目录下即使可以执行ls命令,但是仍然没有全部读出目录下的文档
  3. 例如:第一次可读可写可执行进入_work(cd _word)然后使用ls命令看到了目录下的文件,然后删除掉用户的可读权限,同样进入目录使用ls命令,提示错误
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.

2. touch 需要的权限:

  1. 首先我们先删掉可读可写权限(chmod u-rw _work),我们进入_work中,使用touch test.c,创建一个新的test.c,发现权限不够,不能使用touch
  2. 我们给new加上可读权限(chmod u+r _work),我们进入_work,使用touch test.c,同1中权限不够,还是不能创建
  3. 当我们给new删除可读权限,加上可写权限(chmod u-r,chmod u+w),进入new,再次使用touch test.c,这次可以创建一个新的test.c了
  4. 综上所述: 我们发现touch需要的是可写权限(即w权限)
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.

3. ls所需要的权限:

  • 接上面的touch test.c后,ls一下,发现权限不够。这时我们给_work加一个r权限ls一下出现了test.c
  • 综上所述: 我们发现ls需要的是可读权限(即r权限)
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.

4. mv需要的权限:

  1. 我们先将_work的权限全部置零,然后我们给user加一个x的权限,进入_work,将test.c重命名为test,权限不够不能操作
  2. 我们再给user加一个r的权限,进入_work,将test.c重命名为test,权限还是不够,
  3. 最后我们再给user加一个w的权限,再次进入_work,将test.c重命名为test,ls一下,这次发现hehe目录下是test了
  4. 综上所述: 我们发现mv需要的是可写权限(即w权限)
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.

5. rm需要的权限:

  1. _work 只给用户执行权限(chmod u-wr),执行删除命令,rm test 发现权限不够不能够删除
  2. 再给_work 一个r权限,进入_work ,删除_work 中的test,还是权限不够不可以删除
  3. 最后我们给_work 一个w权限,进入_work 后,删除test,这次成功删除
  4. 综上所述: 我们发现mv需要的是可写权限(即w权限)
    进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.