Samba
序
Windows文件共享
Windows主機之間使用SMB/CIFS網絡協議實現文件和打印資源的共享
Windows無法與UNIX/Linux主機之間實現資源共享
Samba服務器
Samba服務器在UNIX系統中實現了SMB/CIFS協議
通過Samba服務可以實現UNIX/Linux主機與Windows主機之間的資源互訪
特點:
必須是系統用戶,但使用獨立密碼訪問
默認安裝samba並添加用戶(smbpasswd -a 用戶名),即可訪問自己的宿主目錄(可讀寫)。
一、samba的安裝
查看是否安裝了samba
rpm-q samba
查到samba-3.0.33-3.28.el5說明已安裝
默認安裝了客戶端:
rpm -qa | grep samba
samba-client-3.0.33-3.28.el5
samba-common-3.0.33-3.28.el5
安裝
yum -y install samba
啓動服務
/etc/rc.d/init.d/smb start
或
service smb start
兩個進程:
smbd ---> tcp 139 用戶驗證和文件共享
nmbd --->udp 137 138 瀏覽共享和計算機名解析
ps -le | grep smbd
ps -le | grep nmbd
一、用戶管理
1.首先必須是系統用戶,添加Linux系統用戶
useradd用戶名 #添加用戶
passwd用戶名 #設置密碼
2.然後設置samba的密碼(samba自帶的用戶管理工具)
smbpasswd-a 用戶名 #加用戶
smbpasswd用戶名 #改smb密碼
root可以使用管理命令(系統自動的samba用戶數據庫管理工具)
pdbedit-a username:新建Samba賬戶。
pdbedit-x username:刪除Samba賬戶。
pdbedit-L:列出Samba用戶列表,讀取/etc/samba/passdb.tdb數據庫文件。
pdbedit-Lv:列出Samba用戶列表的詳細信息。
二、建立samba連接
爲了安全,不要把root設爲samba用戶
重啓服務
service smb restart
Windows中如何連接:
\\服務器地址
\\192.168.88.88
可以映射網絡驅動器
net use
net use * /del /y
net use \\192.168.88.88"password" /user:your_user
查看有哪些客戶端連接
smbstatus
查看日誌
cat/var/log/samba
------------------------------
如果不能訪問:
防火牆
iptables-L 查看
iptables-F 清空防火牆規則,拆除防火牆
即時生效,重啓後復原
serviceiptables stop
永久性生效,重啓後不會復原
chkconfigiptables off
SELinux
允許訪問
setsebool-P samba_enable_home_dirs on
或完全禁用SELinux:
vi/etc/selinux/config 改爲SELINUX=disabled
三、配置文件
如果查找配置文件在哪裏
rpm -ql samba-common | grep smb.conf
編輯配置文件
vi /etc/samba/smb.conf
[global] 全局環境選項
workgroup 工作組或域
serverstring 描述信息
security 安全模式,有如下選項
share 不驗證權限,直接共享
user缺省,推薦,由LinuxSamba服務器做驗證
server 第三方主機驗證
domain 第三方主機驗證(必須是Windows 域控制器)
hostsallow 哪些主機可以訪問(如果沒有配置,全部主機都可以)
如果是ip直接寫上,如果是ip段只寫網段部份,多個用空格分隔如: 192.168.1. 192.168.2.
哪些主機不允許訪問,hosts deny 一般不和hosts allow同時使用
logfile 日誌文件(最好啓用日誌)
[homes] 只要有這個配置段,用戶默認就可以通過自己的用戶名,訪問自己的宿主目錄
comment 描述
browseable=no 無權限訪問的目錄,不顯示出來
writable=yes 可寫
[自定義的共享1]
[自定義的共享2]
四、samba實例
需求:配置/software目錄的共享,允許user1 user2兩個用戶完全訪問
創建目錄
mkdir/software
添加用戶
useradduser1
passwduser1
useradduser2
passwduser2
添加samba密碼
pdbedit-a user1
pdbedit-a user2
編輯配置文件
vi/etc/samba/smb.conf
建議寫在配置文件尾
[software] 共享名,不能有特殊符號,一般是字母或數字組成
path= /software 共享目錄,只能是一個目錄
validusers = user1 user2 多個用空格分開。如果沒配置此項,所有用戶都可以訪問
writable= yes 寫權限 yes no
Samba服務器配置檢測命令
testparm
如果配置文件寫錯,例valid users=user1 寫成了validuser=user1 將提示
重啓服務
/etc/rc.d/init.d/smbrestart
設置目錄權限
直接改爲777,但這樣不安全
chmod-R 777 /software
創建一個用戶組,改變目錄所屬組,對組授權,然後從新連接就可以了
groupaddsoftadmin
usermod-aG softadmin user1
usermod-aG softadmin user2
chgrpsoftadmin /software
chmodg+w /software
推薦用acl
setfacl-R -m u:user1:rwx /software #讓user1有rwx權限 (已有目錄或文件)
setfacl-R -m d:u:user1:rwx /software #讓以後新創建的文件或目錄,user1也有rwx權限
setfacl-R -m u:user2:rwx /software
setfacl-R -m d:u:user2:rwx /software
windows 下,重新連接
netuse * /del /y
netuse \\192.168.88.88 "password" /user:your_user
提供一個共享目錄,所有有戶都能使用,卻不能刪除別人的文件
[test]
path = /test
wrieable=yes
然後,設置目錄爲 chmod 1777 /test
五、擴展
Linux之間使用samba
問題:如何在linux中使用SAMBA服務器的共享目錄?
解答:mount //192.168.88.88/software /mnt/software -o username=your_user
>輸入密碼