Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux 文件权限 #103

Open
amandakelake opened this issue Feb 27, 2020 · 0 comments
Open

Linux 文件权限 #103

amandakelake opened this issue Feb 27, 2020 · 0 comments

Comments

@amandakelake
Copy link
Owner

amandakelake commented Feb 27, 2020

一、使用者与群组

Linux是个多人多任务的系统,经常会有多个人同时使用这部主机来进行工作的情况,所以需要给每个人一个使用者身份(用户),身份直接跟文件权限关联

在Linux里面,文件的权限跟使用者身份有关,关于使用者有3个概念

* 文件拥有者
* 群组
* 其他人(非本群组成员)

这三个概念很好理解,初中数学就够用了
9A5DB615-45E9-4D47-AF8A-6F02E399AA90

关于群组,用的最多的应该是在团队开发资源的情况下,不同团队之间的资源权限分配

二、Linux文件权限

文件权限,我们先来看一条命令ll
C709BEC1-AEF6-43C0-BB5B-29F6A6B347F9

我们直接看第一列,是个10位的东西,是关于文件权限的,让我们来拆一下,分为四部分
F18849AD-B691-41B5-9DCD-127DD662EB32

先看第一部分,档案类型,认得d-基本就够了
* d 目录
* - 文件
* l 连接档(link file)
* b 装置文件里面的可供储存的接口设备(可随机存取装置)
* c 装置文件里面的串行端口设备,例如键盘、鼠标

后面三部分类似,分部代表不同使用者的权限,我们把几个字母拆开来看
* r 可读,read
* w 可写, write
* x 可执行, execute
* 如果是目录,一定要有该权限才能进入,否则有了r也只能查询,不能cd进入
* 跟文件后缀名是否可执行没有任何关系,跟window下的后缀不一样
- 代表无该权限

然后我们设置或者更改权限的时候,会按照二进制转八进制的读法,还是按照上面的例子,我们只读后面三部分
A0D5700F-84AB-4477-9129-296C1FD1E1C0

如果该位是-,填二进制的0,有字母就是1
每隔3位读一个数字,从二进制转8进制
111 -> 7
101 -> 5
所以,上面这个例子的权限就是755

再简单一点,读4,写2,执行1,需要什么权限就加起来得到权限数字
三类用户*三类权限 = 9种基本权限

让俺再造一个例子来加深理解

-rw-r--r-- [连接数] root  root   [容量] [时间] file1
-rwxr-xr-- [连接数] user1 group1 [容量] [时间] file2
drwxr-xr-- [连接数] user2 group1 [容量] [时间] dir1
  • 文件file1的拥有者是root,所属群组是root,权限644
    • 只有root账号拥有读写权限,不可执行;其他组和其他人只有读的权限
  • 文件file2的拥有者是user1,所属群组是group1,权限754
    • user1可读可写可执行该文件
    • group1群组下的user2user3等用户,可读可执行,但不可写(不可修改)
    • group1群组下的,亦即其他人,只能读,不可写和执行
  • 目录dir1的拥有者是user2,所属群组是group1,权限754
    • user2可以在本目录进行任何操作
    • group1群组下的其他账号,可进入该目录,可读可执行,但不能写
    • 其他组的账号,虽然有r读权限,但是由于没有x执行权限,也就是无法进入该目录,只能简单查一下该目录下有啥

对于目录来说,最大权限是777
对于文件来说,最大权限是666 ,对所有用户读写权限全开

另外,在Linux系统中,root用户是神,拥有任何权限,所以一般人都不会以root目录来进行日常操作,避免误删一些系统文件等操作,严重会直接导致机器瘫痪

修改文件/目录权限与所属

* `chmod` 改变文件的权限
* `chown` 改变文件拥有者
* `chgrp` 改变文件所属群组

首先是chmod,我们直接看最常用的修改法

# 修改文件权限
# -R可选 递归 该目录下所有的文件/目录都一起更改
chmod [-R] [权限数字] [文件/目录]

# 修改文件拥有者
# 用户必须是已经存在系统中的账号 存在/etc/passwd中
chown [-R] [账号:组名] [目录/文件]

# 修改所属群组
# 群组必须是已经存在系统中的群组 存在/etc/group
chgrp [-R] [新的群组] [目录/文件]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant