CIFS通常用于Windows之間的共享,Windows、Linux之間共享。
NFS通常用于Unix、Linux之間資料共享
SMB提供CIFS檔案系統
檔案共享使用端口:tcp139,445(服務名:smb)
名稱解析使用端口:udp137,138(服務名:nmb)
smbclient -L //172.17.8.74 -U administrator #檢視SMB共享
如果不指定使用者名,就是匿名登入,Linux支援匿名登入,Windows不支援匿名。
<code>[root@rh1 ~]</code><code># smbclient -L //172.17.8.74 -U administrator</code>
<code>Enter administrator's password: </code>
<code>Domain=[WIN-3F7Q3K0ONCA] OS=[Windows Server 2008 R2 Datacenter 7600] Server=[Windows Server 2008 R2 Datacenter 6.1]</code>
<code> </code><code>Sharename Type Comment</code>
<code> </code><code>--------- ---- -------</code>
<code> </code><code>ADMIN$ Disk 遠端管理</code>
<code> </code><code>C$ Disk 預設共享</code>
<code> </code><code>D$ Disk 預設共享</code>
<code> </code><code>IPC$ IPC 遠端 IPC</code>
<code> </code><code>oms Disk </code>
<code> </code><code>暫存 Disk </code>
<code>Connection to 172.17.8.74 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)</code>
<code>NetBIOS over TCP disabled -- no workgroup available</code>
/etc/samba/smb.conf 配置檔案
<code> </code><code>workgroup = MYGROUP</code>
<code> </code><code>server string = Samba Server Version %</code><code>v</code> <code>#Samba版本,此處建議修改,避免露出。</code>
<code> </code>
<code>; netbios name = MYSERVER</code>
<code>#此處的名字是在網路上的芳鄰裡面看到的名字,如果用;注釋了,預設使用計算機名。</code>
<code>; interfaces = lo eth0 192.168.12.2</code><code>/24</code> <code>192.168.13.2</code><code>/24</code>
<code>#代表Samba監聽在哪些接口上,;注釋之後預設監聽所有。</code>
<code>; hosts allow = 127. 192.168.12. 192.168.13.</code>
<code>#代表允許哪些主機通路,;注釋之後預設允許所有</code>
<code>; max protocol = SMB2 </code><code>#協定版本</code>
使用者認證相關
<code> </code><code>security = user</code>
<code> </code><code>passdb backend = tdbsam </code><code>#密碼存放方式</code>
user:代表通路需要身份驗證
share:代表不需要身份驗證,相當于Windows的guest賬号
使用者需要從本地使用者中添加,如何把本地使用者添加到Samba:
<code>[root@rh1 ~]</code><code># id user1</code>
<code>uid=1001(user1) gid=1001(user1) </code><code>groups</code><code>=1001(user1)</code>
<code>[root@rh1 ~]</code><code># smbpasswd -a user1</code>
<code>New SMB password:</code>
<code>Retype new SMB password:</code>
<code>Added user user1.</code>
檢視Samba使用者有哪些:
<code>[root@rh1 ~]</code><code># pdbedit -L</code>
<code>user1:1001:</code>
<code>[mytmp] </code><code>#共享名</code>
<code># comment = All Printers #添加注釋</code>
<code> </code><code>path = </code><code>/data/tmp</code> <code>#共享檔案路徑</code>
<code> </code><code>writable = no </code>
<code> </code><code>#此項預設為no,不添加預設為no</code>
<code> </code><code>write list = user1</code>
<code> </code><code>#表示隻有添加了的使用者才有寫的權限。</code>
<code> </code><code>valid </code><code>users</code> <code>= user1</code>
<code> </code><code>#有效的使用者,表示隻有添加了的使用者才有權限通路此共享。</code>
<code> </code><code>browseable = </code><code>yes</code> <code>#是否可以看到此共享。</code>
<code> </code><code>#此項預設為yes,不添加預設為yes</code>
<code> </code><code>hosts deny = 10.42.1.26</code>
<code> </code><code>hosts allow = 10.42.1.26</code>
<code> </code><code>#當二者添加的IP沖突,allow優先!</code>
<code> </code><code>public = </code><code>yes</code> <code>#是否允許匿名登入,不寫預設為no</code>
<code> </code><code>#public允許的時候,valid user需要注釋掉,匿名才能通路。</code>
<code> </code><code>hosts deny = 10.42.1.0</code><code>/24</code>
<code> </code><code>#此網段僅26号可以通路。但是其它網段預設都allow!!</code>
<code> </code><code>#Samba的規則是盡可能允許!</code>
testparm 文法檢測指令
用Linux挂載
用戶端需要安裝cifs-utils這個包,否則挂載會報錯,注意!
<code>[root@rh2 ~]</code><code># mount -t cifs //10.42.1.27/mytmp /data/ -o username=user1</code>
setsebool -P samba_enable_home_dirs 1
chcon -t samba_share_t /data/tmp/ -R
登入到共享目錄,如果不指定使用者名,則為匿名登入
<code>[root@rh2 ~]</code><code># smbclient //10.42.1.27/mytmp</code>
<code>Enter root's password: </code>
<code>Anonymous login successful</code>
<code>Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]</code>
<code>smb: \> </code><code>ls</code>
<code> </code><code>. D 0 Tue Oct 13 16:19:28 2015</code>
<code> </code><code>.. D 0 Mon Oct 12 17:56:14 2015</code>
<code> </code><code>inter.txt N 0 Mon Oct 12 17:56:27 2015</code>
<code> </code><code>11 N 0 Tue Oct 13 16:19:28 2015</code>
<code> </code><code>建立文本文檔.txt A 0 Tue Oct 13 14:27:27 2015</code>
<code> </code><code>58929 blocks of size 1048576. 51134 blocks available</code>
添加子配置檔案,在全局設定部分裡面添加
<code> </code><code>server string = Samba Server Version %</code><code>v</code>
<code> </code><code>config </code><code>file</code> <code>= </code><code>/etc/samba/</code><code>%U.conf </code>
<code> </code><code>#添加此行,并在samba目錄中為單獨使用者名添加配置檔案。</code>
添加到fstable檔案,開機挂載
UUID=1d3ca96b-b587-4c99-8237-06f5c315a252 swap swap defaults 0 0
//10.42.1.27/mytmp /data cifs defaults,credentials=/etc/samba/cred.txt 0 0
建立/etc/samba/cred.txt這個檔案,添加使用者名,密碼
username=user1
password=redhat
目前用戶端隻有root才能在挂載的cifs目錄下進行寫操作。其它的使用者沒有權限,如何添加:
在用戶端fstable檔案中添加挂載選項
<code>defaults,credentials=</code><code>/etc/samba/cred</code><code>.txt,multiuser,sec=ntlmssp</code>
然後su到一個非root使用者,運作指令
<code>[chomperwu@rh2 data]$ cifscreds add -u user1 10.42.1.27</code>
輸入服務端user1使用者的密碼就ok了
如果要清除這個使用者的權限,運作指令
<code>[chomperwu@rh2 data]$ cifscreds clearall</code>
但是運作之後,權限并沒有被清除,還是可以寫???
本文轉自 chomperwu 51CTO部落格,原文連結:http://blog.51cto.com/chomper/1702621,如需轉載請自行聯系原作者