20220317 day13——特殊权限与其它补充知识
昨日作业笔记
1、如何验证文件被修改过了
(该文件的唯一值是否发生了变化)
用法,对如下四个文件,修改之前,检验md5值,以及修改之后,查看它的值是否变化
md5sum /etc/passwd /etc/shadow /etc/gshadow /etc/group

2、不允许创建家目录
useradd -M usernmae #此参数记忆不牢靠
创建⽤户(useradd)chaoge01,要求uid为1200(-u参数),gid为2000(),不允许创建家⽬录(-M),不允许登录。(-s)
useradd -u 1200 -g 2000 -M -s /sbin/nologin chaoge01
3、关于控制命令提示符以及损坏解决方法
su - chaoge01
系统想加载用户环境变量,进入家目录,没有/home/chaoge01,导致命令提示符错误,如何修复呢?
# linux中可以查询用户相关的,环境变量,命令是 env
# linux中还有一个查询,全系统的环境变量,命令是set
# PS1变量,就是控制命令提示符的
[root@pig ~]# 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
#当命令提示符出现损坏,以及家目录显示不正常的解决办法
比如如下损坏信息时,
[root@yuanlai-0224 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/chaoge01
2. 用户在登录时,自动加载 /home/chaoge01 下所有的文件内容
3.修复手段,手动的拷贝 前2步操作即可修复
cp -r /etc/skel/ /home/chaoge01
4.
[root@yuanlai-0224 tmp]# su - chaoge01
上一次登录:四 3月 17 10:08:12 CST 2022pts/0 上
[chaoge01@yuanlai-0224 ~]$
[chaoge01@yuanlai-0224 ~]$ pwd
/home/chaoge01
4、修改用户密码的三种方式
1、直接:passwd 用户名
2、echo '123456' |passwd --stdin 用户名
3、准备一个文件,比如用vim /passwrod.txt
用户名:密码
用户名:密码
用户名:密码
然后 cat /password.txt | chpasswd
5、请修改/data/下所有⽬录,及其⼦⽬录的⽂件,属主改为chaoge01,属组改为devops。

创建完该目录内容后
chown -R chaoge01.devops /data
今日笔记———特殊权限
基础知识
linux提供的12个权限
默认的9个权限
rwx rwx rwx
还有三个隐藏的特殊权限,如下
suid 比如 /usr/bin/passwd
sgid
sbit

1.suid
suid特殊权限仅适用于可执行的二进制命令。 如:/usr/bin/ls usr/bin/rm 等等
suid作用是:只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件 。一旦命令执行结束,身份的切换也随之消失。
以/usr/bin/passwd可执行命令举例
就是让普通用户,执行该命令时,临时以文件属主身份(root)执行,获得root的权限。
实际suid可以让普通用户,修改自己的密码,是因为可执行文件/usr/bin/passwd 有了suid权限。
如何找出系统中包含suid权限的二进制命令。
# find提供权限查找的参数 -perm -ls find提供的格式化打印参数,就好比-exec -ok -delete 一样
find / -type f -perm -4000 -ls

2.sgid
1.对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限。
2.sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用。
简单举例:
简单总结
1.一个普通的文件夹,普通用户cc03进入后,创建文件,user,group都属于谁?都属于cc03
baoqiang01 进入后,创建文件 ,都属于谁? baoqiang01
2.当一个文件夹设置了sgid,普通用户cc03进入后,创建的文件,user属于cc03,group属于了文件夹的属组。
baoqiang01 进入后,创建了文件,user,group属于谁?user属于baoqiang01,group属于文件夹的属组。

3.sgid结合红帽试题
考生账号是 user01
[user01@yuanlai-0224 ~]$
1.创建一个共享目录/home/admins
mkdir /home/admins
2.要求该目录属组是adminuser,adminuser组内成员对该目录的权限是,可读,可写,可执行。
创建组adminuser
groupadd adminuser
修改/home/admins的属组
chgrp adminuser /home/admins
修改group角色的权限是 r,w,x
chmod g=rwx /home/admins
3.其他用户均无任何权限(root特例)
chmod o='' /home/admins
4.这道题,的最后一个难关,是这个》》》》 进入/home/admins创建的文件,自动继承adminuser组的权限。
(这里用到了sgid的权限吗,你需要给/home/admins设置sgid权限,得用root去设置)
用字母表示法,给文件夹设置sgid权限
chmod g+s /home/admins 或:chmod 2770 /home/admins
[root@yuanlai-0224 ~]# ll /home/admins/ -d
drwxrws---. 2 root adminuser 6 3月 17 11:50 /home/admins/
5.此时你在这个目录下,创建的文件,自动继承adminuser的权限(文件的group,默认就是adminuser了)
[root@yuanlai-0224 ~]# touch /home/admins/我是root.log
[root@yuanlai-0224 ~]#
[root@yuanlai-0224 ~]# mkdir /home/admins/我是root文件夹
[root@yuanlai-0224 ~]#
[root@yuanlai-0224 ~]# ll /home/admins/
总用量 0
-rw-r--r--. 1 root adminuser 0 3月 17 11:56 我是root.log
drwxr-sr-x. 2 root adminuser 6 3月 17 11:56 我是root文件夹
[root@yuanlai-0224 ~]#
发现文件夹,也自动有了s权限,还实现了递归继承的效果

4.sbit
1.创建一个公共目录,给与777权限
mkdir /0224linux/
chmod 777 /0224linux/
2.分别用2个普通用户,去操作,查看权限是如何
3.
比如用户一:ysl01 用户二:ysl02
这俩用户都能同时cd到 /0224linux/目录内,且分别创建文件:
ysl01 touch 一个 ysl001.txt
ysl02 touch 一个 ysl002.txt
此时这俩文件权限属性默认分别为:
-rw-rw-r-- 1 ysl01 ysl01 时间 ysl001.txt
-rw-rw-r-- 1 ysl02 ysl02 时间 ysl002.txt
按理来说这俩文件属主属组都属于自己,o的权限为只能r。
但是他俩却可以互相删除对方所touch的文件,为什么呢?
原因是:他俩都在同一个目录下,而这个目录的权限为777,那么他俩在这个文件夹内创建的文件当然也就属于这个文件夹,所以他俩都可以删除此文件夹内的文件。
那么如何禁止他俩用户可以互相删除对方文件的这个问题呢?
首先,我们当然可以先修改此文件夹的o的权限,去掉w权限。那么他俩就不可以操作此文件夹内的文件了。
那么如果不修改文件夹的权限,那么就可以引入sbit。
比如系统的/tmp 临时文件夹,它的权限就是777。
但是我们ll -d /tmp 看一下它的权限情况,
drwxrwxrwt. 8 root root 4096 3月 16 18:54 /tmp/
此时o处的x出现了一个特殊权限t
那么sbit(t)的作用就是:这个目录,当然除了root外,其他任何用户,都只能删除、移动、自己创建的文件,而不能操作其他人的文件。如果没有设置粘滞位,且目录是777权限时,也就是任意的user、group、other角色在这个目录下,可以进行读、写、执行任意文件。
如何移除/tmp 的sbit权限(只做命令演示,不建议做此操作)
[root@yuanlai-0224 0224linux]# chmod o-t /tmp
[root@yuanlai-0224 0224linux]# ll -d /tmp
drwxrwxrwx. 11 root root 260 3月 17 12:26 /tmp


5.如何查看 系统所有环境变量 ,且过滤出与root相关的变量。
[root@pig ~]# set | grep 'root'
HISTFILE=/root/.bash_history
HOME=/root
LOGNAME=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
USER=root
colors=/root/.dircolors
6.如何查看 ⽤户个⼈的环境变量 ,且过滤出与root相关的变量。
[root@pig ~]# env | grep 'root'
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
7.解释下PS1变量,以及如何修改使⽤PS1。
可以控制命令提示符的显示。该变量只临时生效,重新登陆后,会重新加载用户环境变量,该设置丢失。
[root@pig ~]# set | grep 'PS1' #查看下当前的命令提示符具体设置情况
PS1='[\u@\h \W]\$ '
[root@pig ~]# PS1='[\u@\h \w]\$ '
[root@pig ~]#
8.如何永久修改PS1变量⽣效?分别演示root、和普通⽤户的配置。
[root@pig ~]# vim /etc/profile #root用户下


[YSL@@pig ~]$ vim ~/.bash_profile #普通用户下

9.按如下要求,创建⽤户,以及解决⽤户故障。
1.创建⽤户,⽆家⽬录
useradd jack01 -M
2.登录⽤户jack01
[root@yuanlai-0224 ~]# su - jack01
su: warning: cannot change directory to /home/jack01: No such file or directory
-bash-4.2$
3.请解决该问题
[root@pig ~]# cp -r /etc/skel/ /home/jack01
[root@pig ~]# su - jack01
Last login: Thu Mar 17 18:05:41 CST 2022 on pts/0
[jack01@pig ~]$
今日自学笔记
1.解释umask的作用.
2.如何使用umask.
3.如何修改umask.
1.umask作用:限制新创建文件夹或者文件的权限,防止创建出来权限过大而造成的安全性问题。

2.
linux默认文件夹最大权限是777(文件夹必须、可读、可写、可执行)
linux文件默认最大权限是666(缺少x,因为x专门给可执行命令用,而不是普通文件)
创建的文件或文件夹的初始权限 = 默认最高权限 - umask
文件的
root 666-022=644 rw-r--r--
YSL 666-002=664 rw-rw-r--
文件夹的
root 777-022=755 rwxr-xr-x
YSL 777-002=775 rwxrwxr-x
如果遮罩码(umask)设置为奇数,会自动+1变成偶
3.
方法一:临时修改umask
[root@pig YSL]# umask 044
[root@pig YSL]# touch ./umask_test
[root@pig YSL]# ll umask_test
-rw--w--w-. 1 root root 0 Mar 17 21:28 umask_test
方法二:永久修改umask
vim /etc/profile

umask存在就有它存在的意义,有两面性。
合理的修改umask的后果是好的,方便各类用户操作。
不合理的修改后果就是坏的,严重降低系统安全性稳定性或者降低用户的体验(比如直接设置为666)。
4.锁定/var/log/my_website.log ,限制⽂件只能追加写⼊数据,不得删除⽂件、或清除⽂件内容。
[root@pig YSL]# touch /var/log/my_website.log
[root@pig YSL]# cd /var/log/
[root@pig log]# chattr +a my_website.log
[root@pig log]# echo 'hahaha' > my_website.log
-bash: my_website.log: Operation not permitted
5.去除/var/log/my_website.log的⽂件锁定,清空⽂件内容后,再删除⽂件。
[root@pig log]# cat my_website.log
woshiwuyanzu
[root@pig log]# chattr -a my_website.log
[root@pig log]# echo '' > my_website.log
[root@pig log]# cat my_website.log
[root@pig log]# rm my_website.log
rm: remove regular file ‘my_website.log’? y
[root@pig log]#
6.锁定⽂件/var/spool/cron/root,限制⽂件不得被删除、改名、修改内容。
[root@pig log]# touch ysl_test.log
[root@pig log]# chattr +i ysl_test.log
[root@pig log]# echo 'hahaha' >> ysl_test.log
-bash: ysl_test.log: Permission denied
[root@pig log]# mv ysl_test.log ysl_test.log.bak
mv: cannot move ‘ysl_test.log’ to ‘ysl_test.log.bak’: Operation not permitted
[root@pig log]# rm ysl_test.log
rm: remove regular empty file ‘ysl_test.log’? y
rm: cannot remove ‘ysl_test.log’: Operation not permitted
[root@pig log]#
7.去除/var/spool/cron/root⽂件的锁定限制,删除⽂件。
[root@pig log]# chattr -i ysl_test.log
[root@pig log]# rm ysl_test.log
rm: remove regular empty file ‘ysl_test.log’? y
[root@pig log]#
8.如何查看⽂件 /var/spool/cron/root 是否存在特殊属性。
[root@pig log]# mkdir -p /var/spool/cron/
[root@pig log]# touch /var/spool/cron/root
[root@pig log]# lsattr -a /var/spool/cron/root
---------------- /var/spool/cron/root #没有i或a,证明没有特殊属性
[root@pig log]#
拓展:
只查看目录本身的属性:
[root@pig log]# lsattr -d /var/spool/cron/
---------------- /var/spool/cron/
递归列出目录以及其下内容的属性:
[root@pig log]# lsattr -R /var/spool/cron/
---------------- /var/spool/cron/root

浙公网安备 33010602011771号