前戏
累了,也得写一番
正文
一、需求
有一个软件为了安全,该软件在运行时不推荐使用ROOT账户运行。所以我们会有个初始化shell脚本,来创建用户和初始化文件
分析:
1、判断用户是否存在(譬如叫god),没有则创建
2、创建后设置密码为123
3、把一些程序文件拷贝过去,并且除了root外,只能god用户运行(最好是root也不能方便的运行)
二、具体脚本
USER_COUNT=`cat /etc/passwd | grep '^god:' -c`
USER_NAME='god'
useradd $USER_NAME 2>/dev/null #2 为如果输出结果为错误,不输出错误信息
if [ $? -eq 0 ]
then
echo "123" | passwd $USER_NAME --stdin
echo "done"
else
#su - god
if [ ! -d /home/god/bin ] #判断文件夹是否存在 -d
then
su - god -c "mkdir bin" #su -xxx -c 使用某用户后还能切换回原来用户,切换用户后,路径为/home/god所以不用补全全路径
echo "bin is created"
fi
su - god -c 'echo "echo i am god" > bin/me '
su - god -c 'chmod +x bin/me '
fi
三、root不能直接执行me ?
主要是只有god的环境变量中才有/home/god/bin这个目录,使用echo $PATH可以打印出来。所以god用户可以直接me 执行,root就必须 ./me
四、bin文件夹下其实有隐藏的环境变量
ls -a
http://www.cnblogs.com/ManMonth/p/3469397.html
五、su 命令 切换用户
http://www.runoob.com/linux/linux-comm-su.html
su -xxx -c 使用某用户后还能切换回原来用户,切换用户后,路径为/home/god所以不用补全全路径
六、/dev/null 不输出错误信息
http://blog.csdn.net/hj33053252/article/details/9293189
尾声