1. 程式人生 > >Linux mount Windows目錄遇到 write-protected 問題

Linux mount Windows目錄遇到 write-protected 問題

【問題描述】

Windows 機器192.168.1.103共享了 /share/yasi 目錄,並且賦予了寫的許可權,在Windows機器下可以用 yasi/pass 登入。在一臺CentOS 6.3機器上嘗試將該共享目錄 mount 到 /mnt/yasi 上

  1. mount -t cifs //192.168.1.103/share/yasi /mnt/yasi -o username="yasi",password="pass"  

結果失敗,錯誤提示如下:
  1. mount: block device //192.168.1.103/share/yasi is write-protected, mounting read-only  
  2. mount: cannot mount block device //192.168.1.103/share/yasi read-only  


【原因】

需要安裝cifs-utils

【解決】

安裝cifs-utils

  1. yum install cifs-utils.x86_64  

然後重新執行
  1. mount -t cifs //192.168.1.103/share/yasi /mnt/win -o username="yasi",password="pass"  
就mount上了,並且具有寫的許可權。

【利用Linux mount 上 Windows 共享目錄做點事情】

出於對資源的合理利用,公司對某個共享資料夾做了如下限制:該資料夾下的各個員工的個人資料夾中,last modified/access time 老於30天的檔案或子資料夾將會在每天定時執行的某個指令碼中被刪除。然而很多檔案很大但我們不希望被刪除。

下面,屌絲的逆襲來了:

1)將該共享資料夾下的個人資料夾(比如 //192.168.1.103/share/yasi)mount到一臺Linux機器上

  1. mount -t cifs //192.168.1.103/share/yasi /mnt/yasi -o username="yasi",password="pass"  
2)在Linux機器上編碼如下 Python 指令碼,/home/yasi/update_ts.py
  1. import os, sys, time  
  2. topdir = "/mnt/yasi"
  3. def update_time(timestamp, dirname, names):  
  4.         for name in names:  
  5.                 timestamps = (timestamp, timestamp)  
  6.                 os.utime(os.path.join(dirname, name), timestamps)  
  7. os.path.walk(topdir, update_time, time.time())  

3)在 Linux 機器上新增 cron job 如下,即每天23:00的時候執行 update_ts.py 指令碼

crontab -e

  1. 0 23 * * * python /home/yasi/update_ts.py  

於是,每天23:00 都會將  //192.168.1.103/share/yasi 下的所有檔案和子資料夾的 last modified/access time 改成當前時間,這樣就永遠不存在 “老於30天沒有訪問過” 的檔案和檔案夾了!

【注意】

update_ts.py 中指定的 /mnt/yasi 即 //192.168.1.103/share/yasi 裡面的所有檔案和子資料夾都會被更改時間戳,但是 //192.168.1.103/share/yasi 這個資料夾本身的時間戳不會被 update_ts.py 修改