cms管理手机网站,做公司网站 烟台,网站模板打包,成绩查询系统网站开发本文为Ubuntu Linux操作系统- 第十九期~~ 其他特殊权限: 【SUID 权限】和【SGID 权限】 更多Linux 相关内容请点击#x1f449;【Linux专栏】~ 主页#xff1a;【练小杰的CSDN】 文章目录 Sticky#xff08;SBIT#xff09;权限基本概念Sticky Bit 的表示方式举例 设置和取… 本文为Ubuntu Linux操作系统- 第十九期~~ 其他特殊权限: 【SUID 权限】和【SGID 权限】 更多Linux 相关内容请点击【Linux专栏】~ 主页【练小杰的CSDN】 文章目录 StickySBIT权限基本概念Sticky Bit 的表示方式举例 设置和取消 SBIT 权限设置 SBIT 权限取消 SBIT 权限 有关 SBIT 权限的实例运用场景第一步在/目录下创建一个目录share_dir做为测试第二步设置share_dir的Sticky位 ⚠️ SBIT 权限注意事项特殊权限SUID,SGID,SBIT归纳数字设置规则总结举例 综合案例建立组project和用户userA,userB建立公用的工作目录为/user/com_project并设置权限为drwx rwx — root project在目录/user/com_project下分别以userA和userB的身份创建两个空文件fileA和fileB再将SGID权限设置到目录/user/com_project中并观察结果⚠️注意 StickySBIT权限基本概念 SBIT只对目录有效,对文件却是无效的,它的作用就是防止别人删除对方的资料。 当用户在该目录下创建新文件或目录时只有以下的用户可以删除或重命名该目录中的文件 文件的所有者目录的所有者超级用户root 在ContOS Linux系统中最具有代表性的就是/tmp目录。任何人都可以在/tmp内增加、修改文件“drwxrwxrwt. 25 root root 4096 Jul 1 06:58 tmp”)但仅有该文件/目录建立者与 root能够删除自己的目录或文件。 Sticky Bit 的表示方式
Sticky Bit 通常用字母 t 或 T 表示 小写 t表示目录的其他人other执行权限位被设置并且 Sticky Bit 被设置。 大写 T表示目录的其他人执行权限位未被设置但 Sticky Bit 被设置。 举例 drwxrwxrwt # t 表示 Sticky Bit 被设置。drwxrwxrwT#T 表示 Sticky Bit 被设置但其他人没有执行权限。设置和取消 SBIT 权限
使用 chmod 命令的符号模式 或八进制模式来设置和取消 Sticky Bit 权限
设置 SBIT 权限
字符设置法
chmod t 目录名八进制设置模式 Sticky Bit 对应的八进制值是 1通常放在权限的最前面
chmod 1777 目录名上面的 1 表示 Sticky Bit777 是目录的常规权限。 取消 SBIT 权限
字符模式
chmod -t 目录名八进制模式
chmod 0777 目录名有关 SBIT 权限的实例
运用场景 共享目录里只能删除自己创建或上传的文件除了root其他人不能删除。 第一步在/目录下创建一个目录share_dir做为测试 将share_dir设置777权限。创建文件file_a将file_a的所属用户以及所属组都改成myuser1 然后进入myuser2用户测试是否可以删除file_a文件 创建目录share_dir并设置777权限
[rootopenstack01 /]# mkdir share_dir
[rootopenstack01 /]# chmod 777 share_dir创建文件file_a并把该文件的所属用户以及所属组都改成myuser1
[rootopenstack01 /]# touch file_a
[rootopenstack01 /]#chown myuser1:myuser1 file_a 切换普通用户myuser2并尝试删除file_a文件
[rootopenstack01 share_dir]# su myuser2
[myuser2openstack01 share_dir]$ rm –r f file_a这时我们发现用户myuser2可以删除在公共目录share_dir里其他用户的文件这是有很大安全隐患的不应该让其他用户删除你的文件 第二步设置share_dir的Sticky位 创建文件file_b将file_b的所属用户以及所属组都改成myuser1 然后进入myuser2用户测试是否可以删除file_b 设置目录share_dir的SBIT权限
[rootopenstack01 /]# chmod ot share_dir | ll
drwxrwxrwt. 2 root root 20 Jun 5 22:13 share_dir创建文件file_b并将该文件的所属用户以及所属组都改成myuser1
[rootopenstack01 share_dir]# touch file_b
[rootopenstack01 /]#chown myuser1:myuser1 file_b切换普通用户myuser2并尝试删除file_b文件
[rootopenstack01 share_dir]# su myuser2
[myuser2openstack01 share_dir]$ rm -rf file_b
rm: cannot remove ‘file_b’: Operation not permitted可以看到设置共享目录share_dir的SBIT权限后只能删除自己创建或上传的文件除了root其他人不能删除 ⚠️ SBIT 权限注意事项 安全性 虽然 Sticky Bit 可以防止文件被删除但它不防止文件被读取或修改。要进一步保护文件需要设置适当的文件权限。 兼容性 大多数现代Linux系统都支持 Sticky Bit但在某些特殊环境下可能需要额外配置。
特殊权限SUID,SGID,SBIT归纳
数字设置规则总结 与设置文件或目录的rwx的数字法规则421类似suid,sgid,sbit的数字设置法也是421规则 SUID-4 SGID-2 SBIT-1 举例 假设一个文件的基本权限是“-rwxr-xr-x”若将其权限修改为“-rwsr-xr-x”因为s在用户权限中就是要设置这个文件的SUID所以原先的基本权限755前面还要加上4也就是4755 执行以下命令
chmod 4755 filename若是想把该文件既要设置SUID又要设置SGID则两个权限相加变成426 使用以下命令就可以了
chmod 6755 filename
-rwSrwSrwT 1 root root 0 Feb 6 21:49 filename可以发现还有可能会出现大写S和大写T的情况。 这是因为s和t是替代x这个权限的但是如果它本身没有x这个权限修改为s或t时就会变成大写的S或大写的T。 综合案例
实现需求进行项目开发时往往需要多人合作在同一环境下进行工作要求能互相访问和编辑彼此的文件那么项目组所有成员就构成一个组group 下面我们以项目组成员由A与B两个用户组成的情况说明 假设系统管理员将他们放到project组同时给他们分配了一个公用的工作目录为/user/com_project并设置该工作目录的权限为 : drwx rwx — root project 说句话来说就是除了root用户和project组内用户其它用户是不能访问这个目录的。 建立组project和用户userA,userB
[rootlocalhost /]# groupadd project
[rootlocalhost /]# useradd -G project userA
[rootlocalhost /]# useradd -G project userB
[rootlocalhost /]# id userA
uid1003(userA) gid1004(userA) groups1004(userA),1003(project)
[rootlocalhost /]# id userB
uid1004(userB) gid1005(userB) groups1005(userB),1003(project建立公用的工作目录为/user/com_project并设置权限为drwx rwx — root project
[rootlocalhost /]# mkdir -p user/com_project
drwxr-xr-x. 2 root root 6 Jul 2 20:13 com_project
[rootlocalhost user]# chgrp project com_project
[rootlocalhost user]# chmod 770 com_project | ls -l
drwxrwx---. 2 root project 6 Jul 2 20:13 com_project可以看到修改后的com_project权限为drwxrwx--- 在目录/user/com_project下分别以userA和userB的身份创建两个空文件fileA和fileB
[rootlocalhost user]# su userA
[userAlocalhost user]$ cd com_project
[userAlocalhost com_project]$ touch fileA
[userAlocalhost com_project]$ exit
[rootlocalhost user]# su userB
[userBlocalhost user]$ cd com_project
[userBlocalhost com_project]$ touch fileB
[userBlocalhost com_project]$ exit 分别查看文件fileA和fileB的基本权限
-rw-rw-r--. 1 root userA 0 Dec 27 20:31 fileA
-rw-rw-r--. 1 root userB 0 Dec 27 20:32 fileB从上面可以发现用户userA和userB虽然在同一组里但他们创建的文件所属的组并不是project文件fileA所属组为userA而fileB所属组为userB。这样userA和userB相对于对方还是属其它用户other并没有因为是同一个项目组而改变文件间的操作权限同时两个文件的权限与所在的目录/user/com_project也没什么联系实现不了同一个项目组对同组文件的权限设置的初衷。所以单纯使用基本权限rwx对于项目的管理还是不够的。 再将SGID权限设置到目录/user/com_project中并观察结果
[rootlocalhost /]# chmod gs /user/com_project
drwxrws---. 2 root project 32 Dec 27 21:32 com_project目录/user/com_project下分别以userA和userB的身份各自创建一个空文件fileA、fileB以及一个目录dirA和dirB比较设置SGID后的基本权限有什么不同
[rootlocalhost com_project]# su userA
[userAlocalhost com_project]$ touch fileA
[userAlocalhost com_project]$ mkdir dirA
[userAlocalhost com_project]$ exit
[rootlocalhost com_project]# su userB
[userBlocalhost com_project]$ touch fileB
[userBlocalhost com_project]$ mkdir dirB
[userBlocalhost com_project]$ exit比较设置完目录/user/com_project的SGID前后创建的文件权限
目录dirA和dirB的权限
drwxrwsr-x. 2 userA project 6 Dec 27 22:13 dirA
drwxrwsr-x. 2 userB project 6 Dec 27 22:14 dirB文件fileA、fileB的权限比较
#fileA设置SGID权限前
-rw-rw-r--. 1 root userA 0 Dec 27 20:31 fileA
#fileA设置权限之后
-rw-rw-r--. 1 root project 0 Dec 27 22:13 fileA
#fileB设置SGID权限前
-rw-rw-r--. 1 root userB 0 Dec 27 20:32 fileB
#fileB设置权限之后
-rw-rw-r--. 1 root project 0 Dec 27 22:14 fileB这时我们可以看到当目录/user/com_project拥有SGID权限后在这个目录下建立的文件所属的组都会强制变为project。 而且所创建的子目录会继承它的SGID权限。 同一项目组的成员就能够互相访问和编辑彼此的文件了从而达到协同工作的目的 ⚠️注意
这时目录/user/com_project的基本权限为drwxrws---除了root用户和project组成员外其它用户是无法访问目录/user/com_project下的文件的 至此Linux系统的三种特殊文件权限已经讲完了 如果还想了解更多查看主页【练小杰的CSDN】 2024年还有4天就结束了下周再见各位♂️大佬们~~