Возможно, это не совсем то, о чем просит ОП, но это может помочь:
sudo -u the_user sh -c 'PATH=$PATH:/opt/godi/bin echo $PATH'
Это изменяет ПУТЬ внутри команды sudoed.
Шаг, который вы не упомянули, связан с созданием файловой системы ext4, которая и является источником проблемы. Использование mkfs.ext4 /home/user/drive.img
создаст корневой индекс, принадлежащий пользователю root, поэтому, когда вы его смонтируете, он по-прежнему будет принадлежать пользователю root.
Решение состоит в том, чтобы добавить параметр -E root_owner
, чтобы сделать его принадлежащим пользователю, выполняющему mkfs.ext4
, или даже -E root_owner=$uid:$gid
для некоторого явного числового идентификатора пользователя и группы. (Другим решением является использованиеdebugfs
(пакета e2fsprogs
для Fedora )для редактирования индексного дескриптора. )Этот пример у меня сработал:
uid=$(id -u)
gid=$(id -g)
rm -f /tmp/ext4fs
truncate -s 50M /tmp/ext4fs
if true
then mkfs.ext4 -E root_owner=$uid:$gid /tmp/ext4fs
else mkfs.ext4 /tmp/ext4fs
debugfs -w -R "set_inode_field. uid $uid" /tmp/ext4fs
debugfs -w -R "set_inode_field. gid $gid" /tmp/ext4fs
fi
# echo '/tmp/ext4fs /tmp/mymnt ext4 loop,rw,user,noauto,noexec' >>/etc/fstab
mkdir -p /tmp/mymnt
mount /tmp/ext4fs
ls -lRa /tmp/mymnt
touch /tmp/mymnt/afile
ls -l /tmp/mymnt
umount /tmp/ext4fs
При монтировании ls
показывает точку монтирования как
drwxr-xr-x 3 meuh users 1024 May 15 21:04.
и позволяет мне создать там файл.