LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1043|回复: 6

JHALFS里怎么实现su和chroot的?

[复制链接]
发表于 2010-4-22 16:14:25 | 显示全部楼层 |阅读模式
执行了测试脚本

#!/bin/sh
su - lfs
mkdir test
exit

但执行后并没有返回到root
而且创建的文件也不是属于lfs用户的
按我理解 是因为执行该脚本的是root
所以创建额文件也是root的
exit root也无效 所以有这样的结果
是不是啊?

奇怪jhalfs怎么实现LFS里那么多的su到LFS用户和chroot到临时系统的
发表于 2010-4-22 17:13:38 | 显示全部楼层
Su -c 脚本
回复 支持 反对

使用道具 举报

发表于 2010-4-23 00:46:44 | 显示全部楼层
shell调用shell?
回复 支持 反对

使用道具 举报

发表于 2010-4-23 00:50:21 | 显示全部楼层
首先 su 无法使用 echo "passwd" | su -l 方式接收密码,这是 su 当初撰写时的处理。

另外你的 script 写法也不对,因为就算是 su 真的成功变成 root 了,那就产生另外一个 shell 让你操作,你需要执行 exit 结束该 shell 后才会继续执行 script 后面叙述。

要执行叙述,可以写成 script,使用 su 可以搭配 -c 执行指定程式。

  1. su - root -c "/path/script.sh"
复制代码


要可以输入 root 密码,单纯一点要搭配 expect 来使用。像是:

usr/bin/expect

spawn su - root -c "/path/script.sh"
expect Password:
send "root_passwd\n"
interact


参见http://www.linuxgoo.com/bbs/archiver/77517.html
回复 支持 反对

使用道具 举报

发表于 2010-4-23 13:40:56 | 显示全部楼层
楼上思路方向正确,但从安全角度看恶习重重,expect 滥用范例。

root 用户可直接用 su 切换到普通用户,反之不行。
用 root 权限执行类似下面形式脚本即可:
  1. #!/bin/sh
  2. do something
  3. su - lfs -c /path/script.sh
  4. do something
  5. chroot /path/to/newroot /path/script.sh
  6. do something
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-26 09:29:13 | 显示全部楼层
多谢几位指点 尝试自行制作AHALFS。。。
回复 支持 反对

使用道具 举报

发表于 2010-5-7 09:22:56 | 显示全部楼层
Post by heuyck;2085778
多谢几位指点 尝试自行制作AHALFS。。。
楼主的AHALFS怎样了? 对写脚本感兴趣? 对使用自己的LFS系统感兴趣?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表