linux系统命令权限之特殊权限
一.查看系统/用户的环境变量命令
su - 用户名
系统想加载用户环境变量,进入家目路,没有/home/用户名,导致命令提示符错误,如何修复呢?
linux中可以查询用户相关的,环境变量,命令是 env
linux中还有一个查询,全系统的环境变量,命令是set
PS1变量,就是控制命令提示符的
[fyy01@yuanlai-0224 ~]$ set |grep PS1
PS1='[\u@\h \W]$ '
\u 显示用户名
\h 显示主机名
\W 显示用户所处目录的最后一级
\w 显示用户所处的绝对路径,省去你敲pwd
\t 以24小时制,显示时间
$ 显示用户的身份提示符,自动识别root还是普通用户
最终你可以调整PS1 命令提示符如下格式
PS1='[\u@\h \w \t]$ '
该变量,临时敲打,临时生效,重新登录后,系统重新加载用户环境变量,该设置丢失
如何永久生效?把你自定义的变量
- 写入到,系统全局环境变量配置文件中(/etc/profile)
- 那么就有关于用户个人的配置文件,在用户家目录下
~/.bash_profile
1.命令提示符的变量 (属于用户系统中自定义变量)
特别注意:变量名和值之间,不得有空格
通常会用到‘env’命令查看
列如;[root@linux0224 ~]# env |grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/cmatrix12/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
[root@linux0224 ~]#
- 当命令提示符出现损坏,家目录显示不正常的时候解决办法
比如:
[root@linux0224 tmp]# su - chaoge01
上一次登录:四 3月 17 09:51:51 CST 2022pts/0 上
su: 警告:无法更改到 /home/chaoge01 目录: 没有那个文件或目录/
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ echo \(PS1 \s-\v\$ -bash-4.2\)
修复原理:
1.系统读不到用户的个人配置文件,要去找一下,一般用户用useradd 创建用户时 个人配置文件会在/etc/skel 目录下
我们要去拷贝所有的用户个人环境配置文件
然后粘贴到用户生成的家目录/home/用户名
2.用户登录时,系统会自动加载/home/用户名 下的所有用户个人配置文件
3.修复方法 代码命令如下 手动拷贝
语法 : cp -r /etc/skel/ /home/用户名
然后用 su - 用户名 登录即可
证明用户完全切换
[zy1234567@linux0224 ~]$ pwd /home/zy1234567
/home/zy1234567
[zy1234567@linux0224 ~]$ echo \({PATH}
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/cmatrix12/bin:/home/zy1234567/.local/bin:/home/zy1234567/bin

非完全用户切换 su 用户名
[root@linux0224 ~]# su zy1234567
[zy1234567@linux0224 root]\) echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/cmatrix12/bin:/root/bin
二 .文件权限命令
1.特殊权限
linux系统权限共12位权限, 基本权限9位 分别是 rwx ,rwx,rwx, 还有三位特除权位
suid(setuid)
sgid(setgid)
sbit(sticky)
特除权限对照表

2.SUID特殊权限
基本原理:
1.suid特除权限仅限于可执行文件,也是个二进制命令列如比如系统的/usr/bin下提供的命令,如 /usr/bin/ls,如/usr/bin/rm
2.suid特殊权限只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件
3.一旦文件执行结束,身份的切换也随之消失
图解suid特殊权位

总结;
SUID位的文件被执行时,该文件将以所有者的身份运行,
也就是说无论谁来执行这个文件,他都有文件所有者的特权。
如果属主是root的话,那么执行人就有超级用户的特权了。
这时该位将变成一个安全漏洞,因此不要轻易设置该位。
1. suid功能是针对二进制可执行命令设置的,不能用在shell脚本上。
2. 用户权限位的x权限位置处,如果有s或S,表示该命令存在suid权限。
3. suid的作用就是,让普通用户在执行设置了suid权限的命令时,可以拥有其(属主)的权限(一般默认是root)。
4. 二进制命令,如系统提供的ls,mkdir等命令,都需要有x权限才可以操作。
5. suid是一个危险的命令,对系统有一定威胁,一般依然是用sudo命令代替suid等特殊权限操作。
6. 系统安全优化时,会尽量去除所有设置suid的命令。
7.查找系统中所有的suid权限文件
# find搜索,根据权限搜索
[root@yuchao-tx-server ~]# find / -type f -perm -4000 -ls
补充sgid
sgid原理篇:
1.对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限,和9位基本rwx那个理解概念一样。
2. suid是获得文件属主的权限,sgid是获得文件属组的权限
3. sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用
作用:
对文件来说
- sgid只对二进制命令生效,且需要二进制命令本身有x权限。
- 执行包含sgid权限的二进制命令时,会获得该命令在执行期间所属的组的身份与权限。
对文件夹来说 - linux中所有的用户,默认创建的文件,文件夹,属主和属组都是用户自身。
- 设置了sgid的目录,会保证在这个目录下创建的文件、文件夹都保持同样的权限属性,都属于该目录的属组权限。
列如:一些常见得题
1.创建一个共享目录/home/admins

2.要求该目录属组是adminuser,adminuser组内成员对该目录的权限是,可读,可写,可执行。

3.其他用户均无任何权限(root特例)

4.进入/home/admins创建的文件,自动继承adminuser组的权限。

sbit的作用
原理:在一个权限是 777的文件夹下,所有用户,可以进行 r,w,x的操作,也就意味着,可以随便,删除其他人的资料!!
linux中的确存在这么一个公共文件夹,名字叫做/tmp 对于系统特殊文件夹/tmp来说,是整个系统所有用户的临时文件存放地,谁都有任意的权限,你会发现该目录的权限巨大。
临时文件夹当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件,而不能影响到其他人。

列如 :
1.移除/tmp的sbit权限,查看该目录下的文件操作
[root@linux0224 0224linux]# chmod o-t /tmp
[root@linux0224 0224linux]# ll -d /tmp
drwxrwxrwx. 11 root root 260 3月 17 12:26 /tmp
请注意,还给人家加上去
2.自己创建一个共享目录,只能创建,不能删除别人的资料
[root@linux0224 0224linux]# chmod o+t /0224linux/
[root@linux0224 0224linux]#
[root@linux0224 0224linux]#
[root@linux0224 0224linux]# ll -d /0224linux/
drwxrwxrwt. 2 root root 47 3月 17 12:18 /0224linux/

浙公网安备 33010602011771号