Ubuntu16.04安裝samba、svn


一、安裝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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM