Монтируя как <пользователь>, цикл по-прежнему назначает права root

Возможно, это не совсем то, о чем просит ОП, но это может помочь:

sudo -u the_user sh -c 'PATH=$PATH:/opt/godi/bin echo $PATH'

Это изменяет ПУТЬ внутри команды sudoed.

1
15.05.2020, 20:49
1 ответ

Шаг, который вы не упомянули, связан с созданием файловой системы 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.

и позволяет мне создать там файл.

1
28.04.2021, 23:13

Теги

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