Как обойти домашний каталог, изменяющийся на / root при использовании sudo?

С выходом Natty в скором времени я работал над обновлением сценария развертывания и самостоятельной настройки, чтобы мой рабочий стол 11.04 работал и выглядел так, как я хочу.

Один облом - то, что dbus, кажется, изменился и не позволяет, точно так же, как Люсид и Маверик, аутентифицировать текущего пользователя посредством вызова терминала с использованием grep и cat.

В идеале, чтобы запустить скрипт, я бы запустил sudo -s и затем запустил его как

# chmod +x install && ./install

Вместо того, чтобы возвращать мое имя пользователя .. теперь он возвращает root и применяет изменения к корневому профилю и прерывает всякий раз, когда пути не соответствуют.

Вот мой заголовок скрипта:

#!/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?

Спасибо за помощь

0
задан 12 March 2011 в 21:39

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
0
ответ дан 12 March 2011 в 21:39

Другие вопросы по тегам:

Похожие вопросы: