linux文件系统上的特殊权限
SUID,SGID,Sticky
安全上下文
进程有属主和属组;文件有属主和属组
任何一个可执行文件,可否启动为进程,取决发起者是否有执行权限
启动为进程后,其属主为发起者,属组为发起者所属组
进程访问目标文件时的权限,取决于进程发起者属主
先对比进程发起者是否属于文件属主
再对比进程发起者是否属于文件属组
后应用文件“其它”权限
SUID权限:提权执行
拥有SUID权限程序,被发起者启动为进程后,进程属主为本身程序文件属主
权限设定
chmod u+s file:file属主x执行变为s权限,S为没执行权限
chmod u-s file
SGID权限
默认情况下,用户创建文件时,其属组为用户基本组
目录设定SGID权限后,目录下所创建的文件属组都为此目录的属组
权限设定
chmod g+s DIR:DIR属组x执行变为s权限,S为没执行权限
chmod g-s DIR
Sticky权限
对于多人可写目录,设置Sticky权限后,用户只对自己的文件可写
权限设定
chmod o+t DIR:DIR其它x执行变为t权限,T为没执行权限
chmod o-t DIR
权限设置
7777:4SUID,2SGID,1Sticky;777
bash脚本编辑:if
选择执行
if 条件判断;then
COMMAND...
fi
if 条件判断;then
COMMAND...
lese
COMMAND...
fi
例:脚本加user来创建用户并添加密码
#!/bin/bash
#
if [ $# -lt 1 ];then
echo "jia can shu";
exit 1;
fi
if id $1 &> /dev/null;then
echo "$1 exists"
else
useradd $1
[ $? -eq 0 ] && echo $1 | passwd --stdin $1 &> /dev/null && echo "yes" || exit 100
SUID,SGID,Sticky
安全上下文
进程有属主和属组;文件有属主和属组
任何一个可执行文件,可否启动为进程,取决发起者是否有执行权限
启动为进程后,其属主为发起者,属组为发起者所属组
进程访问目标文件时的权限,取决于进程发起者属主
先对比进程发起者是否属于文件属主
再对比进程发起者是否属于文件属组
后应用文件“其它”权限
SUID权限:提权执行
拥有SUID权限程序,被发起者启动为进程后,进程属主为本身程序文件属主
权限设定
chmod u+s file:file属主x执行变为s权限,S为没执行权限
chmod u-s file
SGID权限
默认情况下,用户创建文件时,其属组为用户基本组
目录设定SGID权限后,目录下所创建的文件属组都为此目录的属组
权限设定
chmod g+s DIR:DIR属组x执行变为s权限,S为没执行权限
chmod g-s DIR
Sticky权限
对于多人可写目录,设置Sticky权限后,用户只对自己的文件可写
权限设定
chmod o+t DIR:DIR其它x执行变为t权限,T为没执行权限
chmod o-t DIR
权限设置
7777:4SUID,2SGID,1Sticky;777
bash脚本编辑:if
选择执行
if 条件判断;then
COMMAND...
fi
if 条件判断;then
COMMAND...
lese
COMMAND...
fi
例:脚本加user来创建用户并添加密码
#!/bin/bash
#
if [ $# -lt 1 ];then
echo "jia can shu";
exit 1;
fi
if id $1 &> /dev/null;then
echo "$1 exists"
else
useradd $1
[ $? -eq 0 ] && echo $1 | passwd --stdin $1 &> /dev/null && echo "yes" || exit 100
fi
多分支if语句:从上至下最先匹配的分支执行后结束脚本
if COMMAND;then
COMMAND
elif COMMAND;then
COMMAND
elif COMMAND;then
...
else
COMMAND
fi