当使用 sudo 时,如何解决主目录更改为 /root 的问题?

当使用 sudo 时,如何解决主目录更改为 /root 的问题?

随着 Natty 即将推出,我一直在更新我的部署和自我配置脚本,以使我的 11.04 桌面能够按照我想要的方式运行和显示。

令人沮丧的是,dbus 似乎已经改变,并且不允许像 Lucid 和 Maverick 那样使用 grep 和 cat 通过终端调用对当前用户进行身份验证。

理想情况下,要运行该脚本,我会使用 sudo -s,然后将其启动为

# chmod +x install && ./install

它不再返回我的用户名,而是返回根并将更改应用于根配置文件,并且在路径不对应时中止。

这是我的脚本头:

#!/bin/bash

ON_USER=$(echo ~ | awk -F'/' '{ print $1 $2 $3 }' | sed 's/home//g')

export $(grep -v "^#" ~/.dbus/session-bus/`cat /var/lib/dbus/machine-id`-0)

if sudo -u $ON_USER test -z "$DBUS_SESSION_BUS_ADDRESS" ;
then eval `sudo -u $ON_USER dbus-launch --sh-syntax --exit-with-session`
fi

RELEASE=$(lsb_release -cs)

既然 natty 已经到来,我怎样才能让它返回实际用户呢?

谢谢您的帮助

答案1

听起来好像正在脚本环境中$HOME进行更改。尝试使用/root$SUDO_USER而不是$ON_USER,并且$(eval echo ~$SUDO_USER)代替~

ak@myo5a:~$ echo "$(grep -v "^#" ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)"
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012
DBUS_SESSION_BUS_PID=2013
DBUS_SESSION_BUS_WINDOWID=8388609
ak@myo5a:~$ sudo -sH
root@myo5a:/home/ak# echo "USER=$USER; HOME=$HOME; SUDO_USER=$SUDO_USER; SUDO_HOME=$(eval echo ~$SUDO_USER)"
USER=root; HOME=/root; SUDO_USER=ak; SUDO_HOME=/home/ak
root@myo5a:/home/ak# echo "$(grep -v "^#" $(eval echo ~$SUDO_USER)/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)"
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012
DBUS_SESSION_BUS_PID=2013
DBUS_SESSION_BUS_WINDOWID=8388609
root@myo5a:/home/ak# sudo -u $SUDO_USER touch /cant_touch_this
touch: cannot touch `/cant_touch_this': Permission denied

相关内容