歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> window中對ubuntu通過samba共享出來的文件沒有寫權限/無法修改

window中對ubuntu通過samba共享出來的文件沒有寫權限/無法修改

日期:2017/3/3 12:25:45   编辑:Linux技術
【問題】
已經實現了Ubuntu 10.10下,通過Samba共享出來文件夾,在Windows下面,已經實現了可以正常訪問,讀取文件或文件夾了。
但是卻發現沒有寫入的權限。從ubuntu共享出去的文件,只允許一個叫做tq2440的用戶訪問。
【解決過程】
1.最容易想到的原因就是smb的配置是否正確了,但是我這裡確保我的配置是正確的,是通過samba的圖形界面配置的,的確勾選了可寫入的那個選項的,而且共享出來的共3文件夾,其中一個文件夾也的確是可以寫入的,但是另外兩個文件夾不可以寫入而已。所以肯定不是這個原因。
2.網上說有關於SELinux的問題,而我此處的ubuntu都沒有裝它,所以執行getsebool,都會提示如下內容:
crifan@crifan-ubuntu10:~/develop$ getsebool
程序“getsebool”尚未安裝。 您可以使用以下命令安裝:
sudo apt-get install selinux-utils
復制代碼
所以,此處肯定不是這個原因。
3.有人在這裡:
http://www.linuxdiyf.com/bbs/thread-166768-1-1.html
提到了文件所屬於哪個用戶的問題:
“linux文件系統的權限設置是個前提,
無論samba的訪問權限怎麼設置, 用戶在linux中無權訪問的文件在samba中也肯定是不能訪問的.”
而當前這些文件都是我的root用戶crifan所建立的,但是共享出去給tq2440的用戶訪問,所以覺得貌似可能是這個原因。
所以想到去ubuntu下面改一下文件所屬的用戶,試試是否可行:
crifan@crifan-ubuntu10:~/develop$ pwd
/home/crifan/develop
crifan@crifan-ubuntu10:~/develop$ ls
EABI-4.3.3_EmbedSky_20091210.tar tq2440u
crifan@crifan-ubuntu10:~/develop$ sudo chown -hR tq2440 tq2440/
復制代碼
即,把共享出去的tq2440文件夾及其下面所有文件所屬的用戶從原先的crifan改成tq2440,然後再去windows下面重新訪問,的確就可以實現寫write的操作了。
看來此處問題原因就是這個文件/文件夾所屬用戶權限不正確,導致無法寫入的。
【後記 2011-04-02】
前面已經實現了從windows中修改ubuntu中的文件了,但是還是有個問題。
本身,我從ubuntu中共享出去的目錄是tq2440/ ,但是是用crifan用戶創建的,但是我共享出去的tq2440/文件夾,是給一個叫做tq2440的用戶所共享的,現在我雖然可以在windows下面對tq2440文件夾的上層文件夾develop進行寫入操作,但是卻無法對tq2440目錄及下面的文件進行修改。
後來,通過chown命令,將tq2440文件夾及下面文件的所有者owner都改為tq2440用戶:
chown -hR tq2440 tq2440/
復制代碼
雖然可以實現需要的效果,即,從windows上可以修改qt2440目錄及其下的文件了,但是回到ubuntu下,用現在登錄的crifan用戶去tq2440目錄下面操作,卻無法進行寫入修改等操作了,所以很是郁悶。
然後想到,是不是可以將crifan和tq2440兩個用戶都設置到一個組裡面,然後給該組設置權限為可以修改。
然後就去嘗試,新建了一個組叫做develop,然後把crifan和tq2440都加入到該組中。然後去設置tq2440目錄的組為develop:
chown -hR crifan:develop qt2440/
復制代碼
但是,結果去windows下面嘗試,結果還是沒有寫的權限。

【後記 2011-04-03】
後來經過嘗試,先去 系統 -> 系統管理 -> 用戶和組,把crifan和tq2440兩個用戶都設置為develop組,
然後再去把tq2440的用戶權限添加為 同組用戶也有讀和寫的權限:
sudo chown -hR crifan:develop tq2440/
復制代碼
這樣設置才是正確的,然後tq2440的用戶,在windows下訪問Ubuntu中通過samba共享出來的tq2440的文件夾,就也可以寫入了。

最後,經過折騰,還是通過修改組和其他用戶的操作權限才解決次問題:
chmod -R go+rwx qt2440/
復制代碼
其中:
-R: Recursive,遞歸模式,修改該文件夾及其下所有文件和文件夾
go: g是Group組,o是Other其他用戶
+ : 是添加權限
rwx:r是Read讀,w是Write寫,x是eXecute執行
這樣,就可以針對tq2440及其下所有文件都改成了,不僅創建者crifan自己可以修改,同組的其他用戶和其他的用戶,都可以有寫的權限了:
crifan@crifan-ubuntu10:~/develop$ chmod -R ga+rwx tq2440/
crifan@crifan-ubuntu10:~/develop$ ls -l
總計 499128
drwxrwxrwx 3 crifan develop 4096 2011-04-01 21:16 tq2440
復制代碼
【引用】
http://hanyuanbo.iteye.com/blog/751199
關於ls,chmod,chown等命令的具體解釋:
1. 終端的最基本操作
ls # 顯示當前文件夾下的內容
-a -l -R -d #所有文件 /詳細信息/遞歸的顯示所有目錄和文件/不遞歸
cd .. / - # 進入上/上一次 文件夾
mkdir cp rm rmdir rm -r vim chmod pwd mv # 創建文件夾 復制/刪除/刪除空文件夾/刪除文件夾 編輯/改變權限/查看當前目錄/移動文件
mv 文件名 新文件名 #重命名
其中的一些介紹
ls -l #顯示的內容意思
這是第一列的意義: -l連接文件
-d目錄文件
-普通文件 文本文件和二進制文件
[bcp]特殊文件(即b或c或p)
這是第二列到第十列的意思: 讀寫執行權限
- rwx rwx rwx 2 root root 1234 Jun 26 11:21 test.txt
1 2 3 4 5 6 7 8 9 10
1. 文件的類型
2. 擁有者對該文件的權限(read write execute)
3. 群組對該文件的權限
4. 其他人對該文件的權限
5. 與該文件[夾]的連接數目
6. 擁有者的用戶名
7. 群組的名稱
8. 文件大小
9. 創建日期
10. 文件[夾]名稱
2. 改變權限的命令:
1. chmod [-R] 750 filename/filelist 則是 111 101 000 改變各個用戶的權限。如: chmod 755 /usr/local/* 將該文件夾下的文件賦予755權限
2. chmod [-R] [ugoa] [+-=] [rwx] filename/filelist

http://www.opensourceproject.org.cn/article.php?id=456
“Symbolic Mode
The format of a symbolic mode is `[ugoa...][[+-=][rwxXs tugo...]...][,...]'.
Multiple symbolic operations can be given, separated by commas.
A combination of the letters `ugoa' controls which users' access to the file will be changed:
The user who owns it (u)
Other users in the file's group (g)
Other users not in the file's group (o)
All users (a)

If none of these are given, the effect is as if `a' were given, but bits that are set in the umask are not affected.
all users (a) is effectively
user + group + others
The operator '+' causes the permissions selected to be added to the existing permissions of each file; '-' causes them to be removed; and '=' causes them to be the only permissions that the file has.
The letters 'rwxXstugo' select the new permissions for the affected users:
Read (r),
Write (w),
Execute (or access for directories) (x),
Execute only if the file is a directory or already has execute permission for some user (X),
Set user or group ID on execution (s),
Save program text on swap device (t),
The permissions that the user who owns the file currently has for it (u),
The permissions that other users in the file's group have for it (g),
Permissions that other users not in the file's group have for it (o).
Copyright © Linux教程網 All Rights Reserved