Linux 权限

 在Linux操作系统中,权限管理是一个至关重要的概念,它确保了系统的安全性和稳定性。同时可以在工作中,设置对象的权限,就算我们很多人使用一台服务器,我们也可以让别人看不到我们文件的内容,或者让别人无法对自己的文件进行操作!

权限对应的各个组别

在系统中使用   " ls -al  "命令后

会将文件或者目录的具体信息打印出来,我们可以具体看到文件的权限,等信息,文件权限对应3个不同的类型,分别是:

  • 所有者(User,简称u):文件或目录的所有者。
  • 组(Group,简称g):拥有访问权限的组。
  • 其他人(Other,简称o):系统中其他所有用户。  

同时分为三种不同权限:

  • 读(r,Read):可以读取文件内容或列出目录内容。
  • 写(w,Write):可以修改文件内容或在目录中创建、删除文件。
  • 执行(x,Execute):可以执行文件(对于脚本和二进制文件)或进入目录。

但是为什么会多出来一个呢?

也就是   

linux系统识别文件

linux识别文件不是按照我们平常所了解到的(如.txt.jpg.sh等)

而这第一个字母  所代表的就是linux识别的文件的类型,它分为很多:

  • -:普通文件。这是最常见的文件类型,包括文本文件、二进制文件等。
  • d:目录。表示这是一个目录,而不是一个普通文件。
  • l:符号链接。表示这是一个指向另一个文件或目录的符号链接。
  • b:块设备文件。这些文件对应于块设备(如硬盘、光盘等)。
  • c:字符设备文件。这些文件对应于字符设备(如终端、键盘、鼠标等)。
  • p:命名管道。用于进程间通信。
  • s:套接字。用于网络通信。
  • D:门。一种进程间通信机制,主要用于Solaris操作系统。

 我们可以很清楚的看出,我们上方截图中 第一个为 ' - ' ' d ' 的文件,分别不就代表普通文件和目录

linux权限符号和权限的修改

在Linux系统中,使用ls -al命令可以直观地查看文件和目录的权限表示,例如rwxr-xr--。理解和修改这些权限,可以有效地管理文件的访问控制,从而提高系统安全性或促进团队协作。

如何修改权限呢?

chmod u -  //对拥有者 u (user)
chmod g -  //对所属组 g (group)
chmod o -  //对other o (other)
chmod a -  //对所有人(全部权限) (all)

我们先创建一个名为  ' text ' 的文件, 对它进行权限的更改

对所有者添加执行权限 

chmod u+x text //增添执行权限 X

我们使用 gcc命令生成的程序也就具有执行权限,可以执行二进制程序

对所属组去掉读权限

chomd g-r text 

验证这个,我们可以将同一服务器上的其他用户添加到该文件的所属组,命令是(这个命令需要管理员root 权限)

sudo usermod -aG group newuser
  • -a:表示追加用户到指定组,而不是替换用户的组列表。
  • -G:指定要添加用户的组。

先对other添加所有权限然后对other去掉所有权限

chmod o+wx text

 

相同方式去掉即可

使用八进制修改文件权限

通过权限的位数,我们可以很直观的看出每一部分权限是3位,正好可以对应一个八进制数代表

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1
  • 无权限(-)= 0

我们可以通过数字的结合一次性设置所有人,不同的权限 

user 全部权限 , group  ' r x ' 权限   , other  ' x ' , 权限 

chmod 751 text

 

权限之间的制约

1. 写权限的依赖
  • 文件写权限(w):对于一个文件,仅有写权限并不允许修改文件。要修改文件的内容,必须同时具有读权限(r)。
  • 目录写权限(w):对于一个目录,写权限允许在目录中创建、删除和重命名文件。但要删除目录中的文件,还需要目录的执行权限(x)。
2. 执行权限的依赖
  • 文件执行权限(x):执行文件时,通常需要读取文件的内容。因此,执行文件通常需要同时具有读权限(r),尤其是脚本文件。
  • 目录执行权限(x):目录的执行权限允许用户进入该目录并访问其内容。仅有读权限(r)不能进入目录,必须同时具有执行权限(x)。
3. 组合权限的常见场景
  • 700(rwx------):仅所有者可以读取、写入和执行文件或目录。非常严格的权限设置,适用于敏感文件。
  • 755(rwxr-xr-x):所有者可以完全访问,组和其他用户可以读取和执行文件或目录。常用于可公开访问但需保护的脚本或程序。
  • 644(rw-r--r--):所有者可以读取和写入文件或目录,组和其他用户只能读取。常用于配置文件或非执行文件。

更改文件的所属组或者拥有者

chgrp  + 组名
chown  + 用户名

但是这普通用户不行,也合理,在公司中,普通用户肯定不能随意更改文件所属组,或者是拥有者。 

权限掩码umask

在linux默认中,给目录的权限是 八进制( 7 7 7)也就是所有权限对所有人都开放,而文件的默认权限是 (6 6 6)都没有执行权限,但是,我们可以创建一个目录,和文件 看看他们的权限是不是linux默认

目录:

文件:

我们可以看到,并不是linux系统默认的权限分配,这也就是说,我们可以通过修改某个参数,改变我们之间生成的目录或者文件的权限,这就是umask:

我们可以通过输入umask来看到默认的umask(我们只用红三位),那么生成的目录或者文件的权限是如何计算呢,我们可以通过二进制来观察  如何从 777 变为 775 权限 

将每一位转化为二进制 与 umask 按位取反的数据按位与 也就是说 我们设置的umask是不需要的权限

如何设置umask

umask 0 _ _ _ //用八进制表示我们不需要的权限

粘滞位  t

通过上面的权限介绍,我们可以通过设置权限来限制同一服务器下的普通用户对某些文件,目录的操作,但是,这些用户可以直接把文件删除(玩赖的),我们上面的权限没有限制删除的权限,而粘滞位 ' t '就是限制删除,只能由  拥有者删除  同时,粘滞位只能由设置者去掉

chmod +t  文件/目录名

 

就会变成底蓝色的。

ps: 以上所有权限限制跟root无关,他想干嘛干嘛 

相关推荐

  1. linux权限

    2024-07-19 00:58:06       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 00:58:06       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 00:58:06       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 00:58:06       62 阅读
  4. Python语言-面向对象

    2024-07-19 00:58:06       72 阅读

热门阅读

  1. 理解 Nginx 中的 sites-enabled 目录

    2024-07-19 00:58:06       26 阅读
  2. GNN论文粗读

    2024-07-19 00:58:06       23 阅读
  3. 介绍一些编程语言— Mojo 语言

    2024-07-19 00:58:06       21 阅读
  4. RNN与CNN:昔日辉煌与今日应用的深度透视

    2024-07-19 00:58:06       21 阅读
  5. nvide shortcuts table

    2024-07-19 00:58:06       23 阅读
  6. style-components使用手册

    2024-07-19 00:58:06       19 阅读
  7. MySQL中的幻读究竟是怎么回事?

    2024-07-19 00:58:06       18 阅读