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
$ 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。他們對於資源訪問的許可權如下。
------ | landisk01 | landisk02 |
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