1. 程式人生 > >RHEL7-Samba共享測試

RHEL7-Samba共享測試

上下 login rom -- virt 大小 通過 domain cred

Linux<----->windows之間共享

Samba使用2個進程
smb ip之間的通信用smb (tcp)
nmb 主機名之間的通信用nmb (netbios協議)

端口

smb tcp 139 445
nmb udp 137 138

配置文件 /etc/samba/smb.conf

安裝samba

yum install samba*
firewall-cmd --permanent --add-service=samba # 添加防火墻策略
firewall-cmd --reload
systemctl restart smb #啟動或重啟smb服務。nmb服務可以不用啟動
systemctl enable smb
netstat -anplut | grep smb #查看端口 139 445

配置samba

hosts allow = 192.168.100. EXCEPT 192.168.100.99
hosts deny = 192.168.10.0/24 192.168.1.
同時出現,allow生效
workgroup = MYGROUP windows的工作組名
server string = Samba Server Version %v
#對方看到的共享信息,出於防止泄漏版本號的安全考慮,最好改掉
log file = /var/log/samba/log.%m
#%m代表客戶端ip,多個客戶端連接生成多個以客戶端ip結尾的日誌
max log size = 50
#日誌大小50K
security = user #設置共享的模式
#share 不用輸入用戶名/密碼 (註:rhel7.4中設置為share時報錯“WARNING: Ignoring invalid value ‘share‘ for parameter ‘security‘”)
#user 服務器用口令文件進行驗證,客戶端連接需要提供用戶名和口令
#server 網絡中配置專門的服務器認證
#domain 使用微軟的DC認證

測試環境說明:

LINUX系統:RHEL7.4

物理機系統:win10

虛擬機軟件:OracleVirtualbox5.1

RHEL1 IP:192.168.100.1 作為samba主服務器

RHEL2 IP:192.168.100.2 作為客戶機

1、實驗-share模式

在RHEL1上
yum install samba*
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
systemctl restart smb
systemctl enable smb
netstat -anplut | grep smb
mkdir /share1 #創建測試目錄及文件
mkdir /share2
mkdir /share3
touch /share1/111111
touch /share2/222222
touch /share3/333333
chmod o+rwx /share1 #生產中盡量采用setfacl賦權更安全
chmod o+rwx /share2
chmod o+rwx /share2
chcon -R -t samba_share_t /share1 #設置安全上下文
chcon -R -t samba_share_t /share2
chcon -R -t samba_share_t /share3
getsebool -a | grep samba

#部分samba服務需打開samba_export_all_rw和samba_enable_home_dirs
# setsebool -P samba_export_all_rw on
# setsebool -P samba_enable_home_dirs on

vim /etc/samba/smb.conf

sercurity = share #更改
[share1] #客戶端連接後看到的文件夾名
comment = Public Stuff #客戶端連接後看到的描述
path = /share1 #本地的真實路徑
public = yes #share模式,此處必須為yes
browseable = yes #客戶端可見

在RHEL2上

yum install -y samba-client cifs-utils
smbclient -L //192.168.100.1 #查看服務器共享目錄,無需輸入密碼
smbclient //192.168.100.1/share1 #無需輸入密碼即可進入
smb: \> ls
smb: \> get file1 #put上傳
如需寫入需要在RHEL1的配置文件上打開writable = yes,並設置共享目錄/share1有o+w權限
批量下載
smb: \>prompt
smb: \>mget file*
windows客戶端
設置虛擬機通過虛擬網絡與真機連接
\\192.168.100.1
net use * /del清除緩存

2、實驗-user模式

客戶端要使用用戶名、密碼登錄,已經在服務器存在的用戶名密碼/etc/passwd,客戶端使用的密碼可以和服務器上的/etc/shadow不同。samba自己有一個文件保存用戶名密碼,必須public=no
在RHEL1上
useradd -s /sbin/nologin user1
useradd -s /sbin/nologin user2
useradd -s /sbin/nologin user3
smbpasswd -a user1 #創建samba用戶
smbpasswd -a user2
smbpasswd -a user3
-d 禁用samba用戶disable
-e 允許samba用戶enable
-x 刪除samba用戶delete

修改配置文件:

vim /etc/samba/smb.conf

security = user #更改
[share1]
comment = samba-share1
path = /share1
public = no
browseable = yes
writable = yes

[share2]
comment = samba-share2
path = /share2
public = no
browseable = yes
writable = no
write list = user1

[share3]
comment = samba-share3
path = /share3
public = no
browseable = yes
writable = no
write list = user1 #只有user1授權寫入
valid users = user1 #只有user1授權登錄

systemctl restart smb #重啟smb服務

#優先級valid users>writable>write list
#writable=yes表示所有用戶都有寫的權限
#write list生效時必須writable=no
#write list和valid users可采用user1 @shichangbu +shichangbu的格式,中間用空格分開

在RHEL2上
smbclient -L //192.168.100.1
smbclient -U user1 //192.168.100.1/share1 #輸入user1密碼可進入
用user1登錄share1-3均可寫入
用user2登錄share1可寫入,share2可登陸不可寫入,share3不可登錄

windows客戶端測試
設置虛擬機通過虛擬網絡與真機連接
\\192.168.100.1
net use * /del清除緩存
如果搭建了samba服務,無法寫入
1.檢測配置文件writable write list
2.檢測文件系統是否有寫的權限 ugo setfacl
3.檢測selinux
1.布爾值
2.上下文
4.防火墻

3、實驗-單獨用戶配置文件

修改配置文件:vim /etc/samba/smb.conf
[Golble]
config file = /etc/samba/smb.conf.%U #增加,%U代表用戶名,以後有對應配置文件的用戶將直接跳轉讀取自己的配置文件
cp /etc/samba/smb.conf /etc/samba/smb.conf.user3
vim /etc/samba/smb.conf.user3
刪除config file = /etc/samba/smb.conf.%U

[share3]
comment = samba-share3
path = /share3
public = no
browseable = yes
writable = yes

systemctl restart smb

在RHEL2上
smbclient -L //192.168.100.1 #不輸入密碼可查看到所有共享資源
smbclient -L //192.168.100.1 -U user3 #輸入user3的密碼只可以看到自己的資源
smbclient -U user3 //192.168.100.1/share3
#之前user3對share3不可登錄,現在可登陸可寫入,由於自己的配置文件中沒有share1和share2,所以user3不能登錄share1和share2

4、實驗-普通掛載

在RHEL2上

mount -t cifs -o username=user1,password=user1 //192.168.100.1/share1/ /mnt/share1/

#-t cifs可省略,系統會自動識別
ll /mnt/share1/
umount /mnt/share1/
mount -o username=user1 //192.168.100.1/share1/ /mnt/share1/ #輸入密碼可掛載
vim /etc/fstab
//192.168.100.1/share1 /mnt/share1 cifs credentials=/etc/filename 0 0

vim /etc/filename
user=user1
pass=user1

或者:
//192.168.100.1/share1 /mnt/share1 cifs username=user1%user1 0 0
或者
//192.168.100.1/share1 /mnt/share1 cifs username=user1,password=user1 0 0

#普通掛載su到其他用戶可以直接使用掛載資源

5、實驗-multiuser方式掛載一個用戶

在RHEL1上
pdbedit -L #查看哪些用戶可以掛載
rm -f /etc/samba/smb.conf.user3

vim /etc/samba/smb.conf.user3

刪除config file = /etc/samba/smb.conf.%U

[share1]
comment = samba-share1
path = /share1
public = no
browseable = yes
writable = no
write list = user1
valid users = user1 user2

systemctl restart smb

在RHEL2上
useradd user1 #本地必須有和服務器對應的用戶
useradd user2
useradd user3

在root用戶下執行掛載
mount -o multiuser,user=user1,sec=ntlmssp //192.168.0.1/share1 /mnt/share1

#輸入密碼可掛載,也加入password=user1直接掛載

su - user1

ll /mnt/share1 #無權限
cifscreds add 192.168.100.1 #輸入RHEL1上user1的密碼,從samba服務器獲取認證
ll /mnt/share1 #獲得RHEL1上user1的權限,可登陸,可寫入
su - user2
ll /mnt/share1 #無權限
cifscreds add 192.168.100.1 #輸入RHEL1上user2的密碼,從samba服務器獲取認證
ll /mnt/share1 #獲得RHEL1上user2的權限,可登陸,不可寫入
su - user3
ll /mnt/share1 #無權限

cifscreds add 192.168.100.1 #輸入RHEL1上user3的密碼,從samba服務器獲取認證
或者cifscreds update //192.168.100.1 #更新認證
ll /mnt/share1 #獲得RHEL1上user3的權限,不可登陸
在root用戶下cifscreds clearall可清除獲得的認證,su到其他用戶需重新獲取認證
多用戶各自有配置文件的情況,可以建立用戶文件,一次掛載多個用戶,

vim /sambauser.txt
username=user1
password=user1
username=user2
password=user2
mount -o multiuser,credentials=/sambauser.txt,sec=ntlmssp //192.168.100.1/share1 /mnt/share1

fstab自動掛載

//192.168.100.1/share1 /mnt/share1 cifs defaults,multiuser,credentials=/sambauser.txt,sec=ntlmssp 0 0

mount -a

RHEL7-Samba共享測試