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修复。