linux 下开启文件共享服务与linux下使用smbclient访问windows共享目录

本文档详细介绍了如何在Linux系统中安装和配置Samba服务,以访问Windows共享目录。通过运行自动化脚本`smb_install.sh`设置全局参数和共享目录,并启用ntlm协议以解决Windows访问问题。此外,还提供了使用smbclient命令行工具连接共享、列出共享、创建目录等操作的步骤。在遇到服务启动失败时,提到了删除`registry.tdb`文件并重启服务的解决方案。最后,讨论了在`fstab`中配置挂载选项以处理移动硬盘分区的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux 下通过smbclient访问windows共享目录
=========linux开启文件共享服务====开始=====
sudo apt-get install samba
以下我写的自动配置共享目录的命令脚本smb_install.sh
你只需要改其中的共享目录与共享访问时用的用户名

#------------------------smb_install.sh---------------------------
#samba4.6.2之后的版本已经默认关闭了ntlm的协议了,
#会对windows7造成访问失败,
#具体的现象是网络密码不正确或者windows无法访问网络。
#解决方法就是在[global]中添加ntlm auth = yes
#----------------------------------------------------------------------
ntlm=`grep "ntlm auth =" /etc/samba/smb.conf`
if [[ -z $ntlm ]]; then
	sudo sed -i 's/\[global\]/\[global\]\nntlm auth =  yes/g' /etc/samba/smb.conf
fi
share=`grep "\[share\]" /etc/samba/smb.conf`
if [[ -z $share ]]; then
	sudo sed -i '$a \[share\]\
comment=welcome to ubuntu smb server.\
path=/home/yanxiang/share\
public=yes\
available = yes\
valid users = yanxiang\
browseable = yes\
writable = yes\n' /etc/samba/smb.conf
fi

path=`grep "path=" /etc/samba/smb.conf`
echo "共享目录:" ${path:5}

echo "请指定共享密码"
sudo smbpasswd -a yanxiang
#-a    添加一个用户 
            #-x    删除一个用户 
            #-d    禁用一个用户 
            #-e    解禁一个用户
sudo service smbd restart

#测试配置文件是否正确
testparm -v
#查询登陆samba服务的用户
#pdbedit -L
=========linux开启文件共享服务===结束======

1.1. 首先安装smbclient
yum install samba-client
or
sudo apt install samba-client

推荐使用图形界面使用共享目录

例如ubuntu打开 文件管理器选择左侧其它位置
在本窗口最下端*输入框内输入:smb://192.168.2.110/share

(不推荐)以下是使用命方式使用共享目录

1,列出某个IP地址所提供的共享文件夹
smbclient -L 192.168.2.110 -U username -W domain (会提示输密码)
smbclient -L 192.1682.110 -U username%password -W domain

挂载smb共享文件 (只读无法写入)
sudo mount //192.168.2.110/smb_share /home/yanxiang/share -o username=“yanxiang”,password=share
2,像FTP客户端一样使用smbclient
smbclient //192.168.0.1/tmp -U username -W domain (会提示输密码)
smbclient //192.168.0.1/tmp -U username%password -W domain
执行smbclient命令成功后,进入smbclient环境,出现提示符: smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。
3,直接一次性使用smbclient命令
smbclient -c “ls” //192.168.0.1/tmp -U username%password

smbclient //192.168.0.1/tmp -U username%password
smb:/>ls
功能一样的
例,创建一个共享文件夹
smbclient -c “mkdir share1” //192.168.0.1/tmp -U username%password
如果用户共享//192.168.0.1/tmp的方式是只读的,会提示
NT_STATUS_ACCESS_DENIED making remote directory /share1

服务启动失败

service smbd restart #启动如果失败
查看日志:/var/log/samba/log.smbd.x
daemon failed to start: Samba cannot init registry, error code 13
[2021/08/25 20:44:59.429981, 0] …/lib/tdb_wrap/tdb_wrap.c:64(tdb_wrap_log)
tdb(/var/lib/samba/registry.tdb): tdb_rec_read bad magic 0x18a800 at offset=525988

[2021/08/25 20:44:59.430091, 0] …/source3/registry/reg_backend_db.c:1166(regdb_store_subkey_list)
regdb_store_keys: Failed to store new record for key [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Group Policy]: WERR_GEN_FAILURE
解决方法:sudo rm /var/lib/samba/registry.tdb
重新启动服务OK。

==以下解决fstab有移动硬盘分区,启动时却忘记插移动硬盘仍不影响linux正常启动 ==
#defaults是挂载类型
#nofail 加载分区失败仍继启动并超时间默认为90秒
#指定超时间x-systemd.device-timeout=1如果为0表示超时不限,而不是超时为0秒
#user表示任意用户可加载 users表示users组的用户可以加载 nouser表示只有root用户可加载
UUID=DA18EBFA09C1B27D /home/yanxiang/share/C ntfs defaults,nofail,x-systemd.device-timeout=1,auto,user,uid=1000,gid=1000,umask=002,iocharset=utf8 0 0

linux 加载NTFS分区
先确认是否安装 sudo apt-get install ntfs-3g
如果使用user,rw,dev,exec,suid,nofail正确参数,但还是提示只读文件系统,可能是非正常关机所致请使用 sudo ntfsfix /dev/xxxx修复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值