2012-02-23 61 views
0

我在腳本中使用mount命令在bash中掛載usb驅動器。我已關閉haldameon,並自動確保驅動器不會自動掛載。BASH:在非root用戶上掛載usb驅動器不會賦予寫入驅動器的權利

一切工作在根,也如果你在根中運行它,然後切換到非root帳戶。但是,當關機進入非root帳戶並運行腳本時,驅動器將掛載但不允許寫入命令。

下面是一些僞代碼:

關閉的autofs,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文件中。

感謝您對此權限之謎的幫助。

+0

什麼fstab的項目for/mnt/WHITE的樣子? – 2012-02-23 21:23:19

+0

所有者:root,創建​​並刪除;組:根,訪問文件;其他:訪問文件 – bing281 2012-02-23 21:27:52

回答

1

這可能是你不傳遞一些參數在安裝/ fstab中。你可以嘗試在腳本中明確地傳遞選項,像這樣;

mount -L WHITE /mnt/WHITE -o rw 

其專門給它的讀/寫權限,或

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

與讀取安裝/寫入以及使用戶可訪問的設備:組test

+0

這工作。我還使用了一個chown來確保我可以訪問/ mnt/

1

檢查在MNT司機

ls -l 

它們是由根可能擁有的權限,因此,爲什麼你不能給他們寫信。

可能需要執行chown他們:

chown domain:user /mnt/{WHITE|GREEN|RED} 
+0

我將此與上面的內容結合使用,但它本身不起作用。 – bing281 2012-02-23 21:44:03

相關問題