1.变量的概念

文件特殊权限_普通用户

查看当前用户加载了哪些系统、环境变量

env

[root@localhost ~]# env
XDG_SESSION_ID=15
HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.106.1 57466 22
SSH_TTY=/dev/pts/2
USER=yiyuan
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
SHLVL=5
HOME=/root
LOGNAME=yiyuan
SSH_CONNECTION=192.168.106.1 57466 192.168.106.129 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

通过env查看系统环境变量,可证明su yiyuan是不完全的用户切换,还保留着root的环境变量信息,如邮件变量MAIL

文件特殊权限_环境变量_02

补充,查看系统/用户的环境变量命令

#linux中可以查询用户相关的环境变量,命令是env

#linux中查询全系统的环境变量,命令是set

2.PS1变量

PS1变量就是控制命令提示符的

[root@localhost ~]# set | grep PS1
PS1='[\u@\h \W]\$ '

\u    显示用户名

\h    显示主机名

\W   显示用户所处目录的最后一级

\w   显示用户所处的绝对路径,省去你敲pwd

\t     以24小时制,显示时间

\$    显示用户的身份提示符,自动识别root还是普通用户

最终你可以调整PS1,命令提示符如下格式

PS1='[\u@\h \W \t]\$ '

[root@localhost ~]# PS1='[\u@\h \W \t]\$ '
[root@localhost ~ 02:57:28]# 
[root@localhost ~ 02:57:42]# 
[root@localhost ~ 02:57:46]# 
###
[root@localhost ~ 03:13:03 ~ ]# cd /etc
[root@localhost etc 03:13:09 /etc ]#

该变量临时敲打,临时生效,重新登录后,系统重新加载用户环境变量,该设置丢失

如何永久生效:把你的自定义变量写入到系统全局环境变量配置文件中(/etc/profile)

用户个人的配置文件,在用户家目录下(~/.bash_profile)

3.用户修复

创建用户时禁止创建家目录

[root@localhost ~]# useradd  -M sanyuan
[root@localhost ~]# su - sanyuan
su: warning: cannot change directory to /home/sanyuan: No such file or directory
-bash-4.2$

修复原理:

1.表示系统读不到用户的个人配置,用户在useradd创建的时候,系统会去/etc/skel目录下,拷贝所有的用户个人环境变量配置文件,到用户生成的家目录下/home /sanyuan

2.用户在登录时,自动加载/home/sanyuan下所有的文件

3.修复手段,手动的拷贝,前2步操作即可修复

cp  -r  /etc/skel/    /home/sanyuan

[root@localhost ~]# cp -r  /etc/skel/    /home/sanyuan
[root@localhost ~]# su - sanyuan
Last login: Thu Oct 26 03:37:09 CST 2023 on pts/2
[sanyuan@localhost ~]$

4.suid特殊权限

Linux中提供的12个特殊权限,默认的9位权限:

rwx  rwx  rwx

还有三个隐藏的特殊权限

文件特殊权限_普通用户_03

suid特殊权限仅适用于可执行文件

二进制命令

比如系统的/usr/bin下提供的命令,如/usr/bin/ls,如/usr/bin/rm

只要是用户对设有suid的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件


当你给这个命令,设置了suid权限,那么普通用户在执行该命令时,就以属主的身份去执行(root)

一旦文件执行结束,身份的切换也随之消失

以这个/usr/bin/passwd可执行命令举例

就是让普通用户,执行该命令时,临时获得root的权限

[root@localhost ~ ]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

5.sgid

1.对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限,和9位基本rwx那个理解概念一样。

2.suid是获得文件属主的权限,sgid是获得文件属组的权限

3.sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用。

4.一般直接和文件夹结合使用,给文件夹设置sgid,等于设置了一个共享文件夹的概念

5.linux中所有的用户,默认创建的文件,文件夹,属主和属组都是用户自身。

6.设置了sgid的目录,会保证在这个目录下创建的文件、文件夹都保持同样的权限属性,都属于该目录的属组权限。

实践:

1.创建一个共享目录/home/admins

[root@localhost ~]# mkdir /home/admins

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

###创建组adminuser
[root@localhost ~]# groupadd adminuser

###修改/home/admins的属组
[root@localhost ~]# chgrp adminuser /home/admins 

###修改group角色的权限是w,r,x
[root@localhost ~]# chmod g=rwx /home/admins

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

[root@localhost ~]# chmod o='' /home/admins

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

###加上suid特殊权限
###字母表示法
[root@localhost ~]# chmod g+s /home/admins
####数字表示法
[root@localhost ~]# chmod 2770 /home/admins
[root@localhost ~]# ll -d /home/admins
drwxrws--- 2 root adminuser 6 Oct 31 00:31 /home/admins

5.此时你在这个目录下,创建的文件,自动继承adminuser的权限,(文件的group,默认就是adminuser了)

[root@localhost ~]# touch /home/admins/我是一原.log
[root@localhost ~]# mkdir /home/admins/运维组资料
[root@localhost ~]# ll /home/admins
total 0
-rw-r--r-- 1 root adminuser 0 Oct 31 02:32 我是一原.log
drwxr-sr-x 2 root adminuser 6 Oct 31 02:32 运维组资料

 6.Sbit粘滞位特殊权限

为什么要学sbit权限:

在一个权限是777的文件夹下,所有用户都可以进行r,w,x的操作,也就意味着可以随意删除其他人的资料

sbit粘滞位,用的已经很少了,但是对于系统特殊文件夹/tmp来说,是整个系统所有用户的临时文件存放地,谁都有任意的权限,你会发现该目录的权限巨大。

当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件,而不能影响到其他人。

[root@localhost ~]# ll -d /tmp

语法:

chmod     [选项]      文件夹

作用:只允许文件的创建者和root用户删除文件

常用选项:

o+t 添加粘滞位

o-t 去掉粘滞位

模拟:

公司多个部门公用一个文件夹运维组,为了让所有人都能访问,运维组文件夹赋予了777权限,用户root新建了一个文件,发现被别人删除了。

[root@localhost ~]# mkdir /运维组
[root@localhost ~]# touch /运维组/文件1    /运维组/文件2
[root@localhost ~]# chmod -R 777 /运维组
[root@localhost ~]# ll /运维组
total 0
-rwxrwxrwx 1 root root 0 Nov  1 00:54 文件1
-rwxrwxrwx 1 root root 0 Nov  1 00:54 文件2
[root@localhost ~]# ll -d /运维组
drwxrwxrwx 2 root root 36 Nov  1 00:54 /运维组

普通用户yiyuan可以随意删除文件

[yiyuan@localhost ~]$ ls /运维组
文件1  文件2
[yiyuan@localhost ~]$ ll -d /运维组
drwxrwxrwx 2 root root 36 Nov  1 00:54 /运维组
[yiyuan@localhost ~]$ touch /运维组/文件3
###写入文件
[yiyuan@localhost ~]$ ls /运维组
文件1  文件2  文件3
###删除文件
[yiyuan@localhost ~]$ rm -f /运维组/文件1
[yiyuan@localhost ~]$ ls /运维组
文件2  文件3

给这个文件夹加入sbit权限

[root@localhost ~]# chmod o+t /运维组
[root@localhost ~]# ll /运维组
total 0
-rwxrwxrwx 1 root   root   0 Nov  1 00:54 文件2
-rw-rw-r-- 1 yiyuan yiyuan 0 Nov  1 01:06 文件3
[root@localhost ~]# ll -d /运维组
drwxrwxrwt 2 root root 36 Nov  1 01:10 /运维组
[root@localhost ~]# ls /运维组
文件2  文件3

用户yiyuan可以删除自己创的文件1 ,删除不了root创建的文件2

[yiyuan@localhost ~]$ ll -d /运维组
drwxrwxrwt 2 root root 36 Nov  1 01:10 /运维组
[yiyuan@localhost ~]$ touch /运维组/文件1 
[yiyuan@localhost ~]$ ls /运维组
文件1  文件2  文件3
[yiyuan@localhost ~]$ cd /运维组
[yiyuan@localhost 运维组]$ rm -f 文件1
[yiyuan@localhost 运维组]$ rm -f 文件2
rm: cannot remove ‘文件2’: Operation not permitted
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6