参考:https://www.linuxidc.com/Linux/2017-11/148194.htm
0 背景
在用 linux 系统做开发时,很多时候是没有显示桌面系统条件的,比如说将 NVIDIA TX2 用在机器人等环境下,虽然可以用 xshell 连接修改代码,但对文件的操作还是不太方便。而在服务器上常用的一种操作是安装 samba 服务远程查看文件夹,因此将这种思路应用在 TX2 上,实现 windows 主机远程访问 TX2 的文件系统,samba 就是这样一种服务。
1 安装
安装方法很简单,apt 安装即可
sudo apt install samba
如果安装时报错如下
The following packages have unmet dependencies:
samba : Depends: python-dnspython but it is not installable
Depends: python-samba but it is not going to be installed
Depends: samba-common-bin (= 2:4.7.6+dfsg~ubuntu-0ubuntu2.23) but it is not going to be installed
Depends: tdb-tools but it is not installable
Depends: samba-libs (= 2:4.7.6+dfsg~ubuntu-0ubuntu2.23) but 2:4.7.6+dfsg~ubuntu-0ubuntu2.21 is to be installed
Recommends: attr but it is not installable
Recommends: samba-dsdb-modules but it is not going to be installed
Recommends: samba-vfs-modules but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
是因为 apt 源的问题,导致依赖安装不完整,更换为清华源即可
安装完之后可通过运行以下指令来查看samba版本
sudo smbstatus
要检查samba服务是否在运行,可运行以下指令
systemctl status smbd
systemctl status nmbd
2 编辑配置文件
只需要修改一个配置文件即可
sudo vim /etc/samba/smb.conf
# 打开后拖到最底部,新增以下内容
[Home Share]
comment = Home Public Folder
path = /
writable = yes
valid users = nvidia
上述内容的含义是在windows网络上显示文件夹名称为[Home Share],可访问的路径是根目录,也可对文件进行写操作。保存修改后运行以下指令检查是否存在语法错误
testparm
3 创建用户
默认情况下,Samba将用户设置为安全模式,这意味着客户端必须输入共享文件夹的用户名和密码,用以下指令为nvidia用户增加samba密码
sudo smbpasswd -a nvidia
输入两次密码确认后,重新启动smbd服务
sudo systemctl restart smbd
4 修改用户
首先用下边指令查看目前配置了哪些用户
pdbedit -L
如果要删除指定用户
smbpasswd -x username
如果要修改某个用户的密码(切换到root用户)
smbpasswd username
New SMB password:
Retype new SMB password:
5 windows访问
当window电脑和TX2处于同一局域网时,可在windows上访问TX2的文件夹,访问方法是在windows的文件夹地址中输入两个右斜杠加上TX2的IP地址,即可打开我们设置的可访问的文件夹,如图所示,然后就可以在线修改TX2上的代码和文件了。这样的好处是可以利用windows上的代码编辑器如vscode优美的修改显示代码,提高工作效率!
如果要是访问不到,则可能是因为服务器端samba对应的445 UDP端口没有开启,可以使用iptables指令来开启这个端口
sudo apt-get install iptables
sudo apt-get install iptables-persistent
# 开启UDP 445端口
iptables -A INPUT -p udp --destination-port 445 -j ACCEPT
# 永久保存
sudo netfilter-persistent save
sudo netfilter-persistent reload
然后再访问即可
如果我们登陆过一个用户,再登陆新用户时,会提示如下
这是windows的限制,解决方法是运行cmd,输入下边的指令解除连接即可
net use * /del /y
6 软链接访问问题
如果在 home 目录中创建了一个软链接访问到系统目录,如 /opt 中的某个文件夹,在 windows 中访问时会提示没有权限,这个时候即使你把权限设置成 777 也依然打不开。
解决方法是需要在 samba 的配置文件中的 [global] 组中增加以下内容
sudo vim /etc/samba/smb.conf
wide links = yes
unix extensions = no
然后重启一下服务即可
sudo systemctl restart smbd