天天看點

Samba-上課内容

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: \&gt; </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,如需轉載請自行聯系原作者

繼續閱讀