Для учетных записей, в контейнерах, которые не имеют никакой оболочки (например, пользовательские www-данные) я хотел бы использовать sudo, не заканчивая в/root/папке.
Почему это только работает после использования его во второй раз? Как я могу постараться не заканчивать в/root/dir с sudo?
$ sudo lxc-attach -n hugo
root@hugo:~# sudo -H -u golanger /bin/bash && cd /home/golanger
golanger@hugo:/root$
golanger@hugo:/root$ exit
root@hugo:/home/golanger# sudo -H -u golanger /bin/bash && cd /home/golanger
golanger@hugo:~$
В sudo -H -u golanger /bin/bash && cd /home/golanger
, Ваша текущая оболочка выполняется sudo -H -u golanger /bin/bash
и когда это заканчивается успешно, выполнения cd /home/golanger
. Так cd
не влияет sudo
команда.
sudo
самостоятельно не сбрасывает рабочий каталог (-H
только сбрасывает корневой каталог, не текущий рабочий каталог). Если Вы хотите сделать sudo
cd
к корневому каталогу целевого пользователя нет никаких параметров командной строки, которые могут непосредственно сделать задание. У Вас будет к обходному решению он:
sudo -H -u golanger /bin/sh -c 'cd; /bin/bash'
Отметьте это, с -i
опция, sudo
попытается cd
к корневому каталогу целевого пользователя, но это также использует оболочку входа в систему пользователя, которая заставит его перестать работать в этом случае.