一、安裝Samba
sudo apt-get install samba samba-common
新建共享目錄並設置權限
#新建共享目錄default simon@Ubuntu:~$ sudo mkdir /home/wwwroot/default #用戶就對共享目錄有了寫權限 simon@Ubuntu:~$ sudo chmod 777 /home/wwwroot/default/
創建Samba配置文件
#備份現有配置文件 simon@Ubuntu:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak #修改配置 simon@Ubuntu:~$ sudo vim /etc/samba/smb.conf
文件中相關屬性如下:
1)全局設置部分[global]
security = user
這行設置了samba的安全等級,Samba一共可以設置四個安全等級,由底到高分別為:
share 這個選項表示任何人都可以不需要輸入密碼登錄。
user 這個是Samba的默認級別,要求每個用戶必須輸入密碼才能登錄。
server user級別的密碼都是保存在本機上,而server級別的密碼和用戶名都保存在另一台主機上。
domain 這個級別要求網絡里必須有一台Windows的域控制器,驗證工作由域控制器來完成。
需要注意,只要輸入用戶名和密碼的級別,其用戶名一定首先也是Linux系統內的用戶
workgroup = MSHOME
這部分是Windows主機的工作組名,Windows主機必須在同一個工作組中
server string = %h server(Samba,Ubuntu)
這個選項是顯示在Windows上的信息,可以自定義,其中%h為Samba配置文件中的變量,代表了主機名,即使用hostname命令得到的主機名
map to guest = bad user
當 security = user 時,這個選項必須注釋掉,如:# map to guest = bad user
2)共享設置部分
添加一個共享文件夾設置如下:
[share] 共享文件名,不需要與實際文件名一致 comment = my share directory 對這個共享分支的描述 path = /home/share 系統的共享目錄,必須為絕對路徑 public = yes 是否允許所有人都能夠看到此目錄,no為看不到 writable = yes 是否允許用戶在此目錄下可寫,no為不可些,如果可寫,還需要目錄具有寫權限 read only = yes 設置用戶是否只讀 vaild users = username 設置只有 username 用戶有效
我的配置如下:
security = user [myshare] comment = my share directory path = /home/wwwroot/defalut browseable = yes writable = yes
新建訪問共享資源的用戶和設置密碼
#用戶創建,這個用戶屬於smb組 simon@Ubuntu:~$ sudo useradd admin #設置密碼 simon@Ubuntu:~$ sudo smbpasswd -a admin New SMB password: Retype new SMB password: Added user admin.
啟動 SAMBA 服務
#重啟smb服務 sudo service smbd restart # 停止 SAMBA 服務 sudo /etc/init.d/smbd stop # 啟動 SAMBA 服務 sudo /etc/init.d/smbd start
故障測試指令
testparm
在 WINDOWS 下訪問共享目錄
# 在資源管理器,或瀏覽器中直接輸入即可, "192.168.153.155"為服務器 IP \\192.168.153.155 #或者在"運行"窗口中輸入"\\192.168.153.155"-->回車-->雙擊打開myshare-->回車-->輸入用戶名和密碼-->回車-->訪問成功。
二、安裝SVN
root@Ubuntu:~# apt-get install subversion
建立svn倉庫
#建立svn目錄: root@Ubuntu:/home# mkdir /home/svn root@Ubuntu:/home/svn# mkdir project #執行完畢后project目錄有svnadmin創建的目錄和文件 root@Ubuntu:/home/svn# svnadmin create /home/svn/project/ root@Ubuntu:/home/svn# ls ./project/ conf db format hooks locks README.txt root@Ubuntu:/home/svn# mkdir test #執行完畢后test目錄有svnadmin創建的目錄和文件 root@Ubuntu:/home/svn# svnadmin create /home/svn/test/
上面的代碼創建了2個倉庫,project和test。
配置和管理svn
每個倉庫的配置文件在倉庫目錄的conf下
1)配置svnserve.conf文件
配置項在[general]下:
anon-access:匿名用戶的權限,可以為read,write和none,默認值read。不允許匿名用戶訪問:anon-access = none
auth-access:認證用戶的權限,可以為read,write和none,默認值write。
password-db:密碼數據庫的路徑,去掉前邊的#
authz-db:認證規則庫的路徑,去掉前邊的#。
注意:這些配置項的行都要頂格,否則會報錯。修改配置后需要重啟svn才能生效。
2)配置passwd文件
這是每個用戶的密碼文件,比較簡單,就是“用戶名=密碼”,采用的是明碼。如allen=111111
3)配置authz文件
a)[groups] section:為了便於管理,可以將一些用戶放到一個組里邊,比如:owner=allen,ellen
b)groups下邊的sections表示對一個目錄的認證規則,比如對根目錄的認證規則的section為[/]。設置單用戶的認證規則時一個用戶一行,如:
[/] allen=rw //allen對根目錄的權限為rw ellen=r //ellen對根目錄的權限為r //如果使用group,需要在group名字前加@,如 @owner=rw //group owner中的用戶均為rw,等價於上邊的兩句話
啟動時如果從/home/svn/project啟動,/就是project目錄,用如上方式以project目錄為根設置權限。
如果從/home/svn/啟動,每個倉庫根還是自己的起始目錄。可以采用如上方式設置project的權限,也可以采用如下方式:
[project:/] @owner=rw //設置test的權限如下: [test:/] @harry_and_sally = rw
簡言之,每個倉庫的根目錄(/)就是自己的起始目錄;[project:/]這種方式只適用於多倉庫的情況;[/]適合於單倉庫和單倉庫的方式。
c)不能跨越倉庫設置權限。
//admin=admin,test admin和test用戶屬於admin權限組 //@admin=rw admin權限組可以read,write admin = admin test [project:/] @admin = rw * = r
啟動和停止svn
1)啟動
從project目錄啟動,根目錄(/)是project,authz中規則的配置使用section[/]。
root@Ubuntu:~# svnserve -d -r /home/svn/project
#訪問方式: svn://192.168.0.87/
從svn目錄啟動,根目錄(/)是svn,authz中對project的配置使用section[project:/] ,對test的配置使用section[test:/]。訪問方式為:
root@Ubuntu:~# svnserve -d -r /home/svn
#訪問方式: svn://192.18.0.87/project svn://192.18.0.87/test
如果需要svn自啟動,把命令加入/etc/rc.local中
2)檢查svn服務器是否已經啟動(svn默認使用3690端口)
root@Ubuntu:/home/svn/project# netstat -an | grep 3690 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN #或者 root@Ubuntu:/home/svn/project# ps aux | grep svnserve
3)停止:killall svnserve或者kill -9 pid
文件存在形式
SVN在服務器端的存儲方式和客戶端是不一樣的,所以在服務器端是看不到源文件的。服務器端有兩種存儲方式FSFS和BDB,目前默認都是FSFS
服務器端指令
以下是搭建簡易的服務器端環境的做法,正式一般配合apache通過http訪問。
1.創建版本庫
創建服務器端版本庫,相當於DBMS創建數據庫示例。
svnadmin create file_path/repo_name
2.啟動服務器
//訪問該版本庫的url:svn//localhost/repo_name svnserve -d -r file_path
客戶端指令
1.初始導入(import)
//該命令可將當前路徑下文件導入到版本庫中。 svn import -m "init import" svn://192.168.153.155/project
報錯:svn: E000013: 不能打開文件“/home/svn/project/db/txn-current-lock”: 權限不夠
root@Ubuntu:~# chmod -R 777 /home/svn/
2.檢出(checkout)
svn co svn://192.168.153.155/project //或者 svn checkout svn://192.168.153.155/project
3.保持更新(update)
svn update //或者 svn up
多人合作時:
- 更新要經常頻繁的做,盡量讓問題及早暴露,便於處理。
- 提交代碼前要更新,否則容易產生版本沖突。
4.添加(add)
告知svn服務器,添加目錄或文件到服務器上,這個操作類似SQL的insert,但是並沒有真的操作,直到commit。
svn add file_path
5.提交改動
相當於通用概念:檢入(checkin)
svn commit //或者 svn ci
提交本地工作拷貝的所有改動,而且是原子性的,要求:一般要注明修改的原因
svn ci -m "修改bug #224"
6.還原改動
對應提交(commit),要有類似回滾(rollback)的操作。
svn revert
這個操作對開發人員十分有用,在被人改動很多代碼后可以“一鍵恢復”。
7.“還原”已提交的改動
evert只適合未提交的情況。如果已經提交,發現問題,要回退到之前的修訂版。
首先需要:
svn up
讓本地工作拷貝更新到最新狀態。
然后:
svn log your_file_path
查看文件日志,這時候提交時填寫的說明信息就派上用場了。
查看兩個修訂版之間的不同:
svn diff -r 舊修訂版序號:新修訂版序號 your_file_path
還需要:
svn commit -m "恢復到某修訂版(某修訂版作廢)"
這個還原是所謂的,不是用舊的版本號替代,而是將舊文件覆蓋新文件。
8.拷貝文件和目錄
vn copy path/file_name newpath/new_file_name svn commit -m "xxxx" //或者 svn cp path/file_name newpath/new_file_name svn commit -m "xxxx"
9.重命名目錄/文件
svn move file_name new_file_name //或者 svn mv file_name new_file_name
10.處理合並沖突
svn默認不對文件加鎖。
如果不同人編輯了同一個文件的不同部分,提交時會自動合並。
如果不同人編輯了同一個文件的同一部分,后提交者會報告合並沖突。
解決方法(人工仲裁):
- 放棄改動;
- 堅持你的改動,找到.mine的文件名,恢復為原文件名,然后執行:
svn resolved file_name
11.刪除文件
將本地工作拷貝刪除。
svn delete file_path //或者 svn del file_path
引用:
http://www.cnblogs.com/wuhou/archive/2008/09/30/1302471.html
http://www.cnblogs.com/wangkangluo1/archive/2011/08/11/2135312.html
