###########共享文件######################
yum search samba
yum install samba-client.x86_64(客户端) samba-common.x86_64(命令) samba.x86_64(服务) -y
systemctl start smb #启动smb服务
netstat -antlupe | grep smb
firewall-cmd --list-all
firewall-cmd --permanent --add-service=samba
firewall-cmd --permanent --add-service=samba-client
firewall-cmd --reload #防火墙允许samba samba-client 服务
pdbedit -L
useradd westos
useradd lee #添加 westos lee 用户
smbpasswd -a westos
smbpasswd -a lee #为 westos lee用户建立密码
pdbedit -L
ls /home/lee
cd /home/lee
touch file{1…5}
cd /home/westos
touch file{1…9}
测试端:
yum install samba-client -y
smbclient -L //172.25.254.254 -U westos
smbclient //172.25.254.254/westos -U westos
输入用户westos密码:
显示出westos下的文件
mount //172.25.254.254/westos /mnt -o username=westos,password=123 将westos挂载在mnt下
cd /mnt
ls
touch file{1…9}
ls
rm -rf file*
在服务端中 /home/westos下显示建立,删除掉了file文件
注意:上传文件仅仅只能上传此目录下的文件 //绝对路径下的文件也不能上传
!ls 显示能上传的文件
############################################
vim /etc/samba/smb.conf
systemctl restart smb
smbclient -L //172.25.254.64 -U westos
vim /etc/samba/smb.conf
{
89 workgroup = WESTOS
}
systemctl restart smb
smbclient -L //172.25.254.64 -U westos
vim /etc/samba/smb.conf
{
96 hosts allow = 172.25.254.114/24 #白名单 仅允许114登陆
}
systemctl restart smb
smbclient -L //172.25.254.64 -U westos
vim /etc/samba/smb.conf
{
96 # hosts allow = 172.25.254.114/24
97 hosts deny = 172.25.254.64 #黑名单禁止64用户登陆
}
在另一台虚拟机可以登陆
smbclient -L //172.25.254.114 -U westos
######################################################
getenforce #察看selinx的状态
vim /etc/sysconfig/selinux
{
ELINUX=enforcing
}
reboot
vim /etc/samba/smb.conf
{
322 [HAHA]
323 comment = Share
324 path = /westos_smb
}
systemctl restart smb
mkdir /westos_smb
ls -ld /westos_smb
id westos
id lee
测试端:
smbclient -L //172.25.3.2 -U westos
smbclient //172.25.3.2/hello -U westos
此时没有上传的权限
服务端:
vim /etc/samba/smb.conf
{
322 [hello] #名称可以任意更改
323 comment = Share
324 path = /westos_smb
325 writable = yes #允许可写
}
systemctl restart smb
setenforce 0
setenforce 1
semanage fcontext -a -t samba_share_t ‘/westos_smb(/.*?)?’
restorecon -RvvF /westos_smb/ #更改安全上下文
(restorecon reset /westos_smb context system_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0)
chmod 777 /westos_smb
或者 setfacl -m u:westos:rwx /westos_smb #更改目录的权限
测试端:
cd /
mkdir westos #建立westos目录
mount //172.25.3.2/hello /westos -o username=westos,password=123 #挂载在westos目录下 方便建立 查看
touch file
服务端查看建立成功
##############根目录###################################
getsebool -a | grep samba
setsebool -P samba_export_all_ro on
vim /etc/samba/smb.conf
{
}
systemctl restart smb
ls -ld /mnt
setfacl -m u:westos:rwx /mnt
setsebool -P samba_export_all_rw 1
cd
mkdir /lee
chmod 777 /lee
cd /lee
ls
touch file{1…5}
ls
systemctl restart smb
ls -Zd /lee
测试端:
mount //172.25.3.2/mnt /mnt -o username=westos,password=123
df
cd /mnt
ls
ll
touch file
ls
##############################
仅允许lee用户登陆
vim /etc/samba/smb.conf
{
write list = lee #仅允许lee登陆
}
测试端:
umount /mnt
mount //172.25.3.2/hello /mnt -o username=westos,password=123
不能挂载
umount /mnt
mount //172.25.3.2/hello /mnt -o username=lee,password=123
挂载成功
允许用户组登陆
vim /etc/samba/smb.conf
{
write lsit = +lee #用户组登陆
}
id westos
usermod -G lee westos
测试端:
mount //172.25.3.2/hello /mnt -o username=westos,password=123
mount //172.25.3.2/hello /mnt -o username=lee,password=123
都可以挂载成功
匿名用户
服务端:
vim /etc/samba/smb.conf
{
guest ok = yes #匿名用户
}
测试端:
mount //172.25.3.2/hello /mnt -o username=lee,password=“”
#################多客户端#######################
服务端:
vim /etc/samba/smb.conf
{
admin users = westos
}
客户端:
yum install cifs-utils -y
vim /root/smbpasswd
chmod 600 /root/smbpasswd
umount /mnt
mount //172.25.3.2/hello /mnt -o credentials=/rootsmbpasswd,sec=ntlmssp,multiuser
su - student
cifscreds add -u lee 172.25.3.2
输入密码: 错误可以进入 但不能查看信息
cifscreds clearall #输入错误后需要执行此操作,清空
cifscreds add -u lee 172.25.3.2
输入密码:正确,进入后可以查看信息
#####实现需要时自动挂载不需要时卸下#########################
服务端:
mkdir /westos_nfs
ll -d /westos_nfs/
systemctl stop smb #一定需要关闭smb服务
systemctl status nfs
systemctl start nfs-server #启动nfs服务
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
##先去找rpc-bind 然后去找mountd最后去找nfs 三者缺一不可
三者都需要允许防火墙服务
vim /etc/exports
{
/westos_nfs *(sync)
}
exportfs -rv
systemctl start nfs-server
cd /westos_nfs/
touch file{1…9}
ls
客户端:
yum install autofs -y
systemctl start autofs
ls -ld /net
cd /net
cd 172.25.254.64
cd westos_nfs
ls
会看到westos_nfs下的文件
vim /etc/sysconfig/autofs
或者vim /etc/autofs.conf
{
timeout 300 #时间更改短一点 默认为300秒
}
################自定义挂载点######################
服务端:
systemctl start nfs-server
systemctl stop smb
vim /etc/exports
{
/nfs_westos *(rw ,sync) #没有写的权限,仅仅对root的用户可写
}
客户端:
yum install autofs -y
systemctl start autofs
vim /etc/systconfig/autofs
{
timeout=300 #默认值为300,可以更改时间短一点
}
vim /etc/auto.master
{
13 /net -hosts
14 /mnt (最终挂载点的上层目录) /etc/auto.nfs (子策略文件)
}
vim /etc/auto.nfs
{
westos (最终挂载点) -ro,vers=3 (挂载参数) 172.25.3.2:/westos_nfs (最终挂载点的设备)
}
systemctl restart autofs #重新启动autofs
cd /mnt/westos
df #查看是否挂载成功
mount 查看挂载参数
cd
#等待timeout设置的时间
df #查看是否自动卸下
#####当最终挂载点在同一个二级目录下时主配置文件才可以写在同一文件中
########################################################
sync (写完后一起同步) 效率高
async(数据时时同步) 稳定性高
ro rw 可读 可写
anonuid anongid 指定uid gid
no_root_squash 当客户端使用root用户时沿用服务端root用户不做身份转换
all_squash 更改建立文件用户为所操作的用户
服务端:
vim /etc/exports
{
/westos_nfs *(sync) 172.25.3.1(rw) #依旧没有写的权限
}
exportfs -rv #刷新exports文件
chmod 777 /westos_nfs
测试端:
cd /net/172.25.3.2
touch file #可以建立文件 ,此时有写的权限
服务端:
vim /etc/exports
{
/westos_nfs *(sync) 172.25.3.1(rw,anonuid=1001,anongid=1001) #更改写文件用户的uid,gid,此时为指定用户,不在是匿名用户
}
exportfs -rv #刷新exports文件
测试端:
touch file2 file4 #显示建立文件用户不是匿名用户,而是指定用户
服务端:
vim /etc/exports
{
/westos_nfs *(sync) 172.25.3.1(rw,anonuid=1001,anongid=1001,no_root_squash)
#当客户端使用root用户时沿用服务端root用户不做身份转换
}
exportfs -rv #刷新exports文件
测试端:
touch file1 #显示建立文件的用户为root
################网络磁盘的使用方式############################
iscsi 建立共享名称(全局限定名称)
iqn.年-月.com.westos(固定格式):storge1
luns 关联设备
acls 密钥
portal 开放端口(本机)
服务端:
分区
yum install targetcli -y
targetcli (help可以查询帮助)
ls
/> backstores/block create westos:storge1(此处名称可以任意更换,但下面需要和此名称保持一致) /dev/vdb2(此处为建立的分区)
/> iscsi/iqn.2019-08.com.(固定格式)westos:storage1
/> iscsi/iqn.2019-08.com.westos:storage1/tpg1/luns create /backstores/block/westos:storge1(和上面名称保持一致)
/> iscsi/iqn.2019-08.com.westos:storage1/tpg1/acls create iqn.2019-08.com.westos:westoskey1(名称可以任意更改)
/> iscsi/iqn.2019-08.com.westos:storage1/tpg1/portals create 172.25.3.2(服务端端口)
/> exit
firewall-cmd --permanent --add-port=3260/tcp #防火墙允许3260端口
测试端:
vim /etc/iscsi/initiatorname.iscsi
{
InitiatorName=iqn.2019-08.com.westos:westoskey1 #此处应和服务端生成的密钥保持一致
}
systemctl restart iscsi #重启动iscsi文件
iscsiadm -m discovery -t st -p 172.25.3.2 #找到此文件
iscsiadm -m node -T iqn.2019-08.com.westos:storage1 -p 172.25.3.2 -l #连接此文件
fdisk -l #查看是否共享成功
fdisk /dev/sda #进行分区
mkfs.xfs /dev/sda1 #格式化sda1
mount /dev/sda1 /mnt #挂载在mnt下
df #查看是否挂载成功
blkid
{
/dev/vda1: UUID=“9bf6b9f7-92ad-441b-848e-0257cbb883d1” TYPE=“xfs”
/dev/vdc1: UUID=“wYef23-aMIR-2v8f-8Oir-XKaW-EGOu-zuzE2V” TYPE=“LVM2_member”
/dev/vdc2: UUID=“WnD9jP-cKmD-HlAm-Io2s-arOL-8ReK-A5306x” TYPE=“LVM2_member”
/dev/mapper/dd0-westos: UUID=“680b6783-b87b-48d8-9294-5343c3b34417” TYPE=“xfs”
/dev/sda1: UUID=“50d117ad-72bf-470d-90bd-48d1f23420d1” TYPE=“xfs”
}
vim /etc/fstab
{
UUID=50d117ad-72bf-470d-90bd-48d1f23420d1 /mnt xfs defaults,_netdev(必须加上此参数) 0 0
}
mount -a #永久挂载
##########################################
其中有步骤做错需要在测试端:
yum install tree -y #树形显示
tree /var/lib/iscsi/
iscsiadm -m node -T iqn.2019-08.com.lin:f1 -u(断开)
iscsiadm -m node -T iqn.2019-08.com.lin:f1 -o delete
查看删除后可以解决
################设备清空############################
测试端:
umount /mnt #先将其从mnt上卸载下来,在进行清空操作
为方便显示先下载树形显示
yum install tree -y
tree /var/lib/iscsi
iscsiadm -m node -T iqn.2019-08.com.westos:storage1 -u -p 172.25.3.2 #此处仅仅是端开,并不删除,当重启动iscsi服务后又会显示
tree /var/lib/iscsi/ #查看是否已经断开
iscsiadm -m node -T iqn.2019-08.com.westos:storage1 -p 172.25.3.2 -o delete #删除所保留的内容
systemctl restart iscsi #重启动iscsi服务
tree /var/lib/iscsi #查看是否被删除
服务端:
targetcli
help
clearconfig confirm=true #清空targetcli文件里的内容
exit #退出后targetcli文件里的内容被清空