前戏

    累了,也得写一番

正文

一、需求

有一个软件为了安全,该软件在运行时不推荐使用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

 

 

尾声

posted on 2016-09-18 22:52  fatsnake  阅读(1627)  评论(0编辑  收藏  举报