LinuxSir.cn,穿越时空的Linuxsir!

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

[原创脚本] sussh:一个使su能forward X的脚本。

[复制链接]
发表于 2005-4-26 06:08:55 | 显示全部楼层 |阅读模式
虽然现在多用sudo来执行root权限,但有时在某些情况下还是会用到su, 特别是在远程没有sudo配置的环境。这样,在转换到另外一个用户后(多数是root), X authentication的信息就丢失了。自己写了一个脚本可以使到su到另外一个用户后仍能保持X权限, 运行X apps.

[PHP]
#!/bin/sh
#
# -------------------------------------------------------------------------
# Script Name: sussh
# Author: yongjian Xu - i3dmaster
# Updated: 04/25/2005
#
# Description:
# Allows one to su to another user within a SSH session and still be
# able to launch X11 apps.
# -------------------------------------------------------------------------

# Check to see if a user id was supplied on the command line
case $# in
        1) uid="$1" ;;
        *) echo "Usage: $0 <username>"
        exit 1 ;;
esac

# Check if $DISPLAY is set
if [[ $DISPLAY = "" ]]; then
        echo "The DISPLAY environment variable must be defined."
        echo "You may need to turn on X11 forwarding in your SSH client."
        exit 1
fi

if [[ $(echo $DISPLAY | grep "localhost") != "" ]]; then
        DISPORT=$(echo $DISPLAY | awk -F: '{print $2}'| awk -F. '{print $1}')
        NEWDISPORT="$(uname -n)/unixDISPORT"
else
        NEWDISPORT=$DISPLAY
fi

XAUTH="/usr/bin/X11/xauth"        # Set the location of xauth
ARG=$($XAUTH list $NEWDISPORT)   # Get the X11 magic cookie

su - $uid -c \
"$XAUTH add $ARG; \
DISPLAY=$DISPLAY; \
SSH_TTY=$SSH_TTY; \
SSH_CLIENT='$SSH_CLIENT'; \
export DISPLAY SSH_TTY SSH_CLIENT; \
$SHELL"

exit 0
[/PHP]

拷贝请注明出处,谢谢!
发表于 2005-4-26 18:54:00 | 显示全部楼层
楼主的签名真牛! 喊一个!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-26 23:36:43 | 显示全部楼层
Post by DSL
楼主的签名真牛! 喊一个!


谢谢。现在用ubuntu了,感觉比SuSE爽。
回复 支持 反对

使用道具 举报

发表于 2005-4-27 01:45:40 | 显示全部楼层
Post by yongjian
谢谢。现在用ubuntu了,感觉比SuSE爽。

唉,你这些里,我只知道一个 FC
回复 支持 反对

使用道具 举报

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

本版积分规则

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