BASH: монтирование USB-накопителя на пользователя без прав root не дает права на запись на диск - PullRequest
0 голосов
/ 24 февраля 2012

Я использую команду mount в скрипте для монтирования USB-диска в Bash.Я отключил haldameon и autofs, чтобы привод не был автоматически смонтирован.

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

Вот некоторый псевдокод:

отключите автозапуск, haldaemon вставляет диски вручную в компьютер, запустите монтирование, попытайтесь записать, используя каталог / mnt /

разрешения на ошибку

Вот код отключения автомонтирования.

#stop automounter
/etc/init.d/autofs stop 
#stop hal daemon, this is the hardware abstraction layer
/etc/init.d/haldaemon stop 

Вот код монтирования:

    #WHITE---------------------------------------

    if grep -qs '/mnt/WHITE' /proc/mounts; then 
        echo "WHITE Mounted re-mounting Unnecessary" 
    else
        #check if the directories are already there and remove if necessary
        if [ -d "/mnt/WHITE" ] ; then
            rmdir "/mnt/WHITE"
        fi

        #create directory and mount by label
        mkdir -p /mnt/WHITE
        mount -L WHITE /mnt/WHITE

        #check if the WHITE USB Drive is mounted to the correct directory
        if [ -d "/mnt/WHITE" ] ; then 
            #check if USB is mounted by location
            if grep -qs '/mnt/WHITE' /proc/mounts; then 
                echo "WHITE Mounted"
            else
                echo $errorstatus_white_mount
                exit 1
            fi
        else
            echo $errorstatus_white_mount
            exit 1
        fi
    fi      

Вот код копирования с ошибкой:

echo "Copying Test Files to Drives"
#copy 
cp $copyfile "/mnt/WHITE"
cp $copyfile "/mnt/GREEN"
cp $copyfile "/mnt/RED"
sync
sleep 2

Также команды для монтирования, /etc / init.d / autofs stop, /etc/init.d/haldaemon stop находятся в файле sudoers.

Спасибо за помощь в разрешении этой загадки.

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Возможно, вы не передаете некоторые параметры в mount / fstab.Вы можете попробовать явно передать параметры в вашем скрипте следующим образом:

mount -L WHITE /mnt/WHITE -o rw

, который специально дает ему разрешения на чтение / запись, или

mount -L WHITE /mnt/WHITE -o rw,uid=test,gid=test

, который монтируется с чтением / записью, а такжеустройство, доступное для пользователя: группа test

1 голос
/ 24 февраля 2012

Проверьте права доступа к драйверам mnt

ls -l

они, вероятно, принадлежат пользователю root, поэтому вы не можете писать в них.

Возможно, их нужно набить:

chown domain:user /mnt/{WHITE|GREEN|RED}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...