1. 程式人生 > >Ubuntu下Samba伺服器的簡單設定,只讀,可讀寫等許可權控制。

Ubuntu下Samba伺服器的簡單設定,只讀,可讀寫等許可權控制。

伺服器:Ubuntu 10.04 LTS
Samba版本:3.4.7
注:本文不會對每個引數,設定的值具體是什麼意思做深入的闡述,本文的目的是使用這些配置,立即可用。

1,samba的安裝

Ubuntu下面安裝samba伺服器是很簡單的。
$ sudo aptitude install samba

2,共享目錄的建立

首先確定我們要提供共享的目錄,比如我們在/hd1下面建立兩個目錄供遠端使用者訪問,首先建立兩個目錄。
$ mkdir /hd1/landisk01
$ mkdir /hd1/landisk02

然後修改他們的許可權,這步很重要,許可權不對會直接影響遠端使用者可否訪問
$ chmod 1777 /hd1/landisk01
$ chmod 1777 /hd1/landisk02

3,具體配置

安裝完畢後,samba的服務就應該自動啟動了。下面進行具體的配置。
samba配置檔案位置:
/etc/samba/smb.conf
配置之前記得備份一下把。:)
我們的配置,是基於系統已經提供的smb.conf來進行的,有一些沒有涉及到的地方,就預設的表示使用自動生成的smb.conf中的內容。
關於smb.conf的具體構成,以及每個設定變數詳細的意思,可以參考samba的文件。
大體上有兩段:[global]和[各共享資源名]

4,[global]段

首先來設定一下編碼,好多朋友會遇到在Windows下面檔名出現亂碼的情況。
我們新增如下設定:

   unix charset = UTF-8   dos charset = CP936   display charset = UTF-8

然後設定一下workgroup

   workgroup = WORKGROUP   netbios name = s01

你還可以設定允許那些網段訪問,比如

hosts allow = 10.0.1.0/24 10.0.10.0/24 127.0.0.1

它給出了10.0.1.x以及10.0.10.x網段,以及本機可以訪問此samba服務

然後就到關於認證設定的地方了,我麼使用以下設定

   security = user   username map = /etc/samba/smbusers

   encrypt passwords = true

   passdb backend = tdbsam

關於/etc/samba/smbusers

,我沒有具體的看samba的手冊,我啟動伺服器的時候提示我找不到這個檔案,我就touch了一個,現在沒有具體測試。先touch一個吧,記得用sudo
$ sudo touch /etc/samba/smbusers
回頭看了準確的解釋再補上:)

然後設定禁止root訪問,以及不同步linux密碼

   invalid users = root   unix password sync = no

其它的地方保持預設吧,然後在往下,有關於印表機的設定,我是關閉印表機列表的。如下設定:

   load printers = no   disable spoolss = yes

在進入資源定義區域之前,我追加了一個全域性允許guest訪問的。

   usershare allow guests = yes

到這裡[global]定義就告一段落。下面進行各共享資源的定義。

5,共享資源定義

在預設自動生成的smb.conf檔案中,你會看到預設的[share][home],這些就是共享名,意味著你在比如windows下面,你就會看到這些名字的共享盤一樣。關於print***開頭的,可以放在那邊,即使有,也不會起作用,在客戶端也看不到相關的印表機,在上面全域性定義中已經關閉掉了。
然後我們開始自己的共享資源定義,先把[share][home]相關的內容都註釋掉吧。我們將要定義兩個共享資源,landisk01和landisk02,兩個使用者user01,user02,以及一個使用者組group01。他們對於資源訪問的許可權如下。

------landisk01landisk02
user01讀寫只讀
user02只讀讀寫
group01只讀只讀

下面是對於landisk01資源的設定

[landisk01]   comment = LanDisk 01, movies, musics and other.   path = /hd1/landisk01   browseable = yes   writable = yes   create mask = 0766   force create mode = 0766   directory mask = 0777   force directory mode = 0777   directory security mask = 0777   force directory security mode = 0777   guest ok = no

   # Users and Groups with access:   valid users = user01 user02 @group01   # Users and Groups with write access:   write list = user01   # Users and groups with read-only access:   read list = user02 @group01

下面是對於landisk02的設定

[landisk02]   comment = LanDisk 02   path = /hd1/landisk02   browseable = yes   writable = yes   create mask = 0766   force create mode = 0766   directory mask = 0777   force directory mode = 0777   directory security mask = 0777   force directory security mode = 0777   guest ok = no

   # Users and Groups with access:   valid users = user01 user02 @group01   # Users and Groups with write access:   write list = user02   # Users and groups with read-only access:   read list = user01 @group01

如果你要對某個資源中,使用垃圾箱機制(刪除檔案時,不是完全刪除,而是放入你指定的資料夾),你可以在某個資源中新增如下設定。

   # and recycle function   # enable recycle   vfs objects = recycle   recycle:repository = .recycle   # do not to keep the directory tree when move to recycle   recycle:keeptree = no   # change the name when file have same name   recycle:versions = yes   # do not to update the timestamp when move to recycle   recycle:touch = no   recycle:maxsize = 0   recycle:exclude = *.tmp ~$*

會把你刪除的檔案,都放如到.recycle目錄中,這個在客戶機上看不到,你可以登陸到伺服器看到.recycle中的內容。另外,這些僅僅對於你在客戶端刪除檔案時起作用,你在伺服器上使用rm操作,是不會起作用的。

好了,到這裡為止,你的設定應該ok了,我們可以使用以下命令來check一下你的配置。
$testparm /etc/samba/smb.conf

6,重新啟動一下你的samba伺服器吧。

$ sudo service smbd restart
關於服務的名字是否一定叫smbd,我不敢肯定,我遇到過叫smb,也遇到過叫samba的,不知道為何。你可以使用tab來讓系統給你提示吧。:)

7,新增相應使用者

samba的使用者,必須要基於一個linux使用者,此linux使用者是否可以實際登陸shell等,不受限制,通常我都是讓samba的使用者不具有登陸shell的許可權。
首先,新增user01,user02,的Linux使用者
$ sudo useradd -s /usr/sbin/nologin user01
$ sudo useradd -s /usr/sbin/nologin user02

然後使用pdbedit來追加相應的samba使用者
$ sudo pdbedit -a -u user01
$ sudo pdbedit -a -u user02

要修改samba使用者的使用者密碼,使用如下命令(實際Linux的密碼並不會改變)
$ sudo smbpasswd user01
$ sudo smbpasswd user02

要刪除一個samba使用者(實際的linux使用者並不會刪除)
$ sudo pdbedit -x 使用者名稱

OK,到此,你可以在遠端用剛剛追加的使用者嘗試看看把。
END