Linux权限机制

2023年 10月 12日 70.6k 0

1 Linux的权限

1.1 Linux从文件的属性看起

1.2 属主和属组的概念

上面图片中,后半部分,两个root ,第一个代表这个文件夹是属于root用户一个人的;第二个root代表这个文件夹是属于root这个组的。

换句话说就是:就是这个/root/文件夹承认root用户是主人,同时还承认一个root组中的所有成员也都是主人。

假如一个文件夹确定了属主是某个用户,属组是某个组,那就是说这两个用户可以对这个文件夹为所欲为了?

1.3 权限位

  • 位置1:决定是不是可以读,如果可以读就是 r ;如果不可以读就是 -
  • 位置2:决定是不是可以写,如果可以写就是 w ;如果不可以就是 -
  • 位置3:决定是不是可以执行,如果可以执行就是 x ;如果不可以执行就是 -

1.4 普通文件和权限位的关系

一个普通的文本文件,属主是 linuxuser,属组是 admin,linuxuser对应的权限是 rwx,也就是可读,可写,可执行;admin 组对应的权限是r-x,也就是,可读,不可写,可执行。

对于一个普通文件来说,如果有可读权限则可通过cat命令读取内容:

cat /home/linuxuser/1.txt   --有可读权限才能这样看文件里的内容,可读权限指的是文件中的内容是否可以被访问到

如果有可写权限的可以通过 vim 进行编辑文件:

vim /home/linuxuser/1.txt   --有可写权限的话,才可以编辑文件,并且允许你保存如果没有权限,Vim不让保存。

可执行权限,是针对Shell脚本而言的,有可执行权限才能被执行

可执行权限指的是如果这个文件是一个脚本文件,就必须得有可执行权限才能运行起来。脚本的意思就是一段代码,执行一段功能。

1.5 解读文件夹和权限位的关系

- 文件夹的权限与普通文件还是有一些差别的

对于文件来说,只有文件夹有可读权限才能通过 ls 命令访问这个文件夹下的内容

只有文件夹具有可写权限,才能在文件夹下进行 创建,删除,改文件名的操作

可执行权限,准确的说,就是不能进入这个文件夹,最直接的就是 cd 命令能不能用。

1.6 other其他用户权限是什么

其他用户权限,既不是属组,也不是属主,就算所是其他用户。

/root/ 文件夹的权限很严格,除了root用户外,其他的任何用户都没有任何权限。切换到 linuxuser 下测试,什么权限也没有(linuxuser 在这里就相当于是其他用户)。

1.7 修改权限

chown -R 属主:属组 用户文件夹      --chown命令配合-R可以一次性改变属主和属组。

chmod u=rwx g=rx o=r 用户文件夹
   -u代表user,也就是属主,g代表属组的权限,o代表其他权限chmod a=rwx 用户文件夹
   -a代表所有的权限包括属主,属组,其他还可以使用加减法,
   例如:u-w 表示去掉可写权限,u+w  表示加上可写权限。

1.8 用数字快速修改权限

规定:r = 4,w = 2,x = 0,-=0(没有权限就是0),然后用加法进行计算。

2. 权限扩展

2.1 文件默认权限 umask

当在Linux下创建一个新文件或文件夹时,就算没有设定权限,也会自带一个默认权限,下图这种情况就是 umask 的原因。

umask 的值是 0022,第一个0不用管先,在Linux操作系统中,有初始最大权限的概念,文件是 666,文件夹是 777,这就相当于锁定一个初始值。

Linux当前的umask是022,用它做一个减法,把最大初始权限每一位分别减去对应的umask的每一位,例如:777-022的每位相减的结果是 755,所以创建一个文件的默认权限就是 755。

需要特别说明的是,如果是针对一个文件夹,就直接用减法就可以了。如果是针对一个普通文件,还是可以用减法,不过要分两种情况,

第一种情况,减法后的每一位都是偶数,这就是最终结果

第二种情况,减法后的任意一位是奇数,那么这一位奇数需要 +1。

可以通过 vim /etc/profile 命令来修改 umask 的值

2.2 文件的特殊权限位

linuxuser是一个普通用户,没有任何权限,但是修改了密码,也就是修改了 shadow 文件。

当找到passwd命令时,发现这个命令的属主权限中有一个是 s,这代表了普通用户linuxuser使用passwd命令时,系统看到passwd命令中属主属性有大写 S 后,表示这个命令的属主权限被linuxuser用户获得,也就是linuxuser用户获得文件 /etc/shadow 的root 的rwx权限。

一个普通用户linuxuser是没有权限直接修改 /etc/shadow 文件的,因为这个文件的权限是 --- --- ---,而linuxuser修改自己密码时使用 passwd 命令,等于说 passwd是一个桥梁。passwd 这个命令也是一个文件,也就是 /usr/bin/passwd,并且这个文件的属主权限中有一位 SGID。有了这个 SGID 后,当普通用户 linuxuser 调用这个 passwd 命令时,linux系统就去找这个 passwd 文件的属主,发现 passwd 文件的属主是 root 管理员,并且 root 对这个 passwd 文件有 rw 权限。所以说,root 用户对passwd 文件有 读/写权限,于是Linux 操作系统让 linuxuser 用户继承了 读/写 权限,并可以临时用在 shadow 文件上,这样普通用户就通过passwd命令修改了 shadow 文件。SGID 就是一个继承属组的关系。

如果说一个目录没有 SGID 权限时,在这个目录下创建的子目录的属组就是默认的用户属组;
如果说一个目录有 SGID 权限时,不管是那个用户,在这个下面创建子目录都会继承上目录的属组。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论