Linux权限

Posted @简单就好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux权限相关的知识,希望对你有一定的参考价值。

Linux下有两种用户:超级用户(root)、普通用户。

超级用户(root):可以在linux系统下做任何事,不受限制,只有1个。

普通用户:在linux系统下做有限的事,有N个。

超级用户的提示符'#';普通用户的提示符'$'

切换用户的命令:su

切换root时可以直接输入su,再按密码就可以切换。切换普通用户时,su XXX(普通用户的名称)

权限的概念

限制人的,访问的对象天然没有这种“属性”;权限 = 人(用户) + 事物(文件)属性 (rwx)

  1. 文件访问者的分类(人)

文件和文件目录的所有者:u---User(中国平民 法律问题) 文件和文件目录的所有者所在的组的用户:g---Group 其它用户:o---Others (外国人)

2. 文件类型和访问权限(事物属性)

2.1 文件类型

如上图所示,第一位:文件类型。

d:目录
-:普通文件
、文本、可执行、归档文件等
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

在Linux操作系统下,不用文件后缀区分文件类型,而是用 文件属性中第一列的第一个字符来区分文件类型(但是在Linux操作系统里面的软件需要看文件后缀,例如gcc 软件需要将文件后缀改为.c)

2.2 访问权限

  1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

  1. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

  1. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—”表示不具有该项权限

如上图,每三个字符对应着不同用户的权限,例如画横线前三位rwx,表示目录dir的所有者(user)具有可读可写可执行权限;紧接着中间三位r-x,表示该目录的所属组(group)具有可读不可写可执行权限;最后的后三位r-x,代表的其他用户(other)具有可读不可写可执行权限

3. 文件权限值的表示方法

3.1 字符表示

Linux表示

说明

Linux表示

说明

r--

只读

-w-

只可写

--x

仅可执行

rw-

可读可写

-wx

可写和可执行

r-x

可读可执行

rwx

可读可写可执行

---

无权限

3.2 八进制表示

权限符号(读写执行)

八进制

二进制

r

4

100

w

2

010

x

1

001

rw

6

110

rx

5

101

wx

3

011

rwx

7

111

---

0

000

4. 文件访问权限的相关设置方法

chmod

功能:设置文件的访问权限

格式:chmod [参数]权限 文件名

只有文件的拥有者和root才可以修改文件的权限

例如:

chomod u+w test.c #表示给当前目录下的test.c文件的所有者添加可写权限
chomod g-x test.c #表示给当前目录下的test.c文件的所属组删除可执行权限
chmod 664 /home/abc.txt  # 第一个'6'表示:rw-,以此类推
chmod 640 /home/abc.txt

chown

功能:修改文件的所有者

格式:chown [参数]用户名 文件名

例如:

chown user1 test.c #将test.c文件的所有者改为user1

chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数]用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

例如:

chgrp group1 file1  #将file1文件的所属组改为group1
chgrp -R group1 file2 

umask

功能:查看或修改文件掩码

新建文件夹默认权限=0666 新建目录默认权限=0777 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask)

为什么 我们创建的普通文件(不包括可执行),为什么默认权限是从664开始的,我i什么目录的默认权限是775开始的

默认权限: 你看到的

起始权限: 系统设定的 普通文件起始权限:666开始的(没有x的),目录文件的起始权限是:777(rwx)

因为,系统为了更好的控制文件权限,系统会有默认的权限掩码的概念! umask

(假如文件掩码为002,则对应的八进制为 000 000 010)

权限掩码:在起始权限中,去掉在umask中出现的权限,不能影响其他任何权限!

最终权限 = 起始权限 & (~umask),如下图。

# umask 755
# umask //查看
# umask 044//设置

file

功能说明:辨识文件类型。 格式:file [选项] 文件或目录...

5. 目录权限

如果目录没有(r/w/x)权限:

  1. 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

  1. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

  1. 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

6. 粘滞位

背景:在使用Linux的时候,未来可能会有一些共享目录,被所有普通用户共享,用来保存普通用户产生的临时数据

准备:共享文件通常都是由root提供的

文件被所有的人共享的时候,受权限约束,但是拦不住别人删我的文件!!

为什么拦不住别人删?因为,能够才特定目录下,创建或者删除文件由该目录的w权限决定!

为了让大家共享文件,且不让其他人随便删除别人的文件,所以要添加 粘滞位

当一个目录被设置为“粘滞位”(chmod +t),则该目录下的文件只能由:

  1. 超级管理员删除

  1. 该目录的所有者删除

  1. 该文件的所有者删除

Linux的用户体系与权限

参考技术A 使用这个用户登录linux系统后的一般操作(除sudo/su等操作外)都是这个用户权限的操作,包括 启动应用后,该应用具有的权限,也是和这个用户一致的 。Linux每个进程都是以某个用户身份运行, 进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大 。用户本身对系统的权限在创建用户时设置,也可后续更改(如不能登录等等)。

查看所有用户信息。

Linux权限授权,默认是授权给三种角色,分别是user、group、other。三种角色对目录的权限:chmod 设置数字权限4,2,1,分别对应的是r,w,x,即可读,可写,可执行。 对目录设置权限时,可以加-R递归参数。可以对文件的这三个角色进行目录读写可执行授权, 如图 。

以上图所示,第一组为文件所有者的权限,第二组为文件所属组的权限,第三组为其他人的权限。其表示的具体含义为:文件所有者具有对文件的读写权限,文件所属组的用户具有对文件读写的权限,而其他人只有读取文件的权限。

文件的所有者

文件的所有者一般是创建该文件的用户,对该文件具有完全的权限。在一台允许多个用户访问的 Linux 主机上,可以通过文件的所有者来区分一个文件属于某个用户。当然,一个用户也无权查看或更改其它用户的文件。

文件所属的组

假如有几个用户合作开发同一个项目,如果每个用户只能查看和修改自己创建的文件就太不方便了,也就谈不上什么合作了。所以需要一个机制允许一个用户查看和修改其它用户的文件,此时就用到组的概念的。我们可以创建一个组,然后把需要合作的用户都添加都这个组中。在设置文件的访问权限时,允许这个组中的用户对该文件进行读取和修改。

其他人

如果我想把一个文件共享给系统中的所有用户该怎么办?通过组的方式显然是不合适的,因为需要把系统中的所有用户都添加到一个组中。并且系统中添加了新用户该怎么办,每添加一个新用户就把他添加到这个组中吗?这个问题可以通过其他人的概念解决。在设置文件的访问权限时,允许其他人户对该文件进行读取和修改。

授权完各个角色的权限,那么怎么更改文件所属的角色。如下:

更改文件拥有者: chown 账号名称 文件或目录

更改文件所属用户组:chgrp 组 目录或文件名

web目录权限设置参考 。 注意Web服务器各自的运行用户如果要对web目录进行操作,也必须得到web目录的rwx授权才可以。

linux里面如何让某个程序以某个用户来运行?比如让mysql程序用mysql用户去运行。让httpd用httpd用户去运行。

以上是关于Linux权限的主要内容,如果未能解决你的问题,请参考以下文章

如何移除网站Response Headers中的X-Powered-By信息?

X-Powered-By中的Express在哪个地方能改呢

隐藏响应的server,X-Powered-By

DouPHP去除Powered by DouPHP版权的方法

Sysdig and Falco now powered by eBPF

X-Powered-By: ASP.NET是干啥用的