LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: wawxdyy

父shell如何能取得子shell的执行权限

[复制链接]
发表于 2006-9-19 01:27:24 | 显示全部楼层
我记起来了, 你说你想用zenity做可是zenity并没有提供su的GUI界面,如果你用text field的话, 密码是明文的,这不符合规范,所以没有什么太大用啊。GUI界面的su程序gtk下就是gksu了吧,还有别的吗? (kde下也有一个,但我想如果你想基于gkt做,应该不会考虑kde) 不过如果你会perl或python, 你可以用他们的gtk库自己写一个界面。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-19 17:01:45 | 显示全部楼层
晕,你记错了吧,zenity里有个选项是--hide-text是可以用来输入密码,你说expect脚本能放在bash脚本里吗,如果可以应该怎么弄啊
回复 支持 反对

使用道具 举报

发表于 2006-9-20 01:16:30 | 显示全部楼层
Post by wawxdyy
晕,你记错了吧,zenity里有个选项是--hide-text是可以用来输入密码,你说expect脚本能放在bash脚本里吗,如果可以应该怎么弄啊

hmm.. ok, 没有注意到。不过也能凑合着用。我是写两个脚本,然后用shell来调用expect脚本。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-20 02:07:46 | 显示全部楼层
Post by yongjian
hmm.. ok, 没有注意到。不过也能凑合着用。我是写两个脚本,然后用shell来调用expect脚本。


那怎么把root权限回传给副进程啊,我记得你说过用exec,可我不知道怎么用,能给点简单的代码说明一下吗,麻烦了
回复 支持 反对

使用道具 举报

发表于 2006-9-21 03:15:53 | 显示全部楼层
Post by wawxdyy
那怎么把root权限回传给副进程啊,我记得你说过用exec,可我不知道怎么用,能给点简单的代码说明一下吗,麻烦了

比如说你的主程序叫A.sh,调用的子程序叫B.exp。
A.sh:

  1. #!/bin/bash

  2. if [[ "$USER" != "root" ]]; then
  3.       rootpw=$(zenity --title="require root auth" --text="input the root passwd" --entry --hide-text)
  4.       ./B.exp $rootpw
  5.       exit 0
  6. fi
  7. echo "whatever you need from root"
  8. exit 0
复制代码

B: (expect)

  1. #!/usr/bin/expect -f
  2. set pw [lrange $argv 0 0]
  3. spawn su - root -c 'A.sh'
  4. expect ...
  5. ...
复制代码

Another way using gksu

  1. #!/bin/bash

  2. if [[ "$USER" != "root" ]]; then
  3.       echo "Need root to run"
  4.       exec gksu -u root ./A.sh
  5. fi
  6. echo "whatever you need from root"
  7. echo $USER
  8. exit 0
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-22 02:42:57 | 显示全部楼层
好的,谢了,我试试
回复 支持 反对

使用道具 举报

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

本版积分规则

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