linux 命令 访问windows 共享 拷贝文件到linux

linux 命令 访问windows 共享 拷贝文件到linux,第1张

你可以使用samba文件共享,也可以使埋耐用简单的mount命令

samba:需要搭建samba服务,亏液森具体参考如下:

http://blog.sina.com.cn/s/blog_6e0c0fdf0100x8fj.html

mount命令:

现在windows里共享一个文件出来,这里举例iso文件夹销亩

mount -o  username=huangxiaoming //172.20.0.189/iso /mnt/share --从windows挂载

ls /mnt/share   ---就可以看到了

装个samba一般来说,安装samba后,有一个smb.conf(配置文件)的例子,修改一下就好了。 WINDOWS下的网上邻居使用是NetBIOS协议,LINUX下使用功能强大租尘察的SAMBA可以实现与WINDOWS机子共享。下面具体就我的理解具体说一下。 首先当然是你必须安装了SAMBA #apt-get install samba samba-common smbclient smbfs 其实使用SAMBA分成两个方面,一个是linux机子上的资源给WINDOWS机子浏览,再一个是使用LINUX 机子浏览WINDOWS 的网上邻居。现在假设使用WINDOWS的机子的IP是10.0.0.10,共享目录是music,用户名是:share,密码是:yeah使用 LINUX机子的IP是:10.0.0.20 一 . 从LINUX上获取WINDOWS文件的基本方法(有3种方法) 1. smbmount---普通用户就可以使用的命令 挂载文件 #smbmount //10.0.0.10/music /home/user/music -o "username=share,password=yeah" 主意与下面的mount不一样的是-o后面一定要引号 卸载已经挂载的文件 #smbumount /home/user/music 2. mount---超级用户才有的权限,但效果与上面一样 挂载文件 #mount -t smbfs -o username=share,password=yeah //10.0.0.10/music /home/user/music 卸载文件 #umount /home/user/music 注:以上两个命令挂载要想显示中文,必须添加如下参数 codepage=cp936,iocharset=utf8(与linux机的本地环境一致,如是gb2312,这儿也要写成:iocharset=gb2312 codepage要与远程一致,是指定源代码文件的代码页---一个内>部表, *** 作系统用它将符号(字母、数字和标点)映射为字符编号。如兄汪932 代表日本汉字,950代表繁体中文字符集,说明一下就是codepage是cp936,而不是936,否则在有时显示汉字还是乱码。 3. 使用smbclient访问Windows资源 它是一个类似于ftp *** 作方式,通过远程 *** 作的方式进行文件传递的软件。为了获得网络上可以访问的计算机列表,首先需要使用 smbclient来获得一个Windows计算机共享出来的资源,这需要使用-L参数访问IPC #smbclient -L 192.168.1.150 -N 或者机器名 #smbclient -L hit -N 如果不清楚一个Windows计算机的NetBIOS名字,可以使用nmblookup先来解析NetBIOS名字 #nmblookup hit (若浏览网上邻居用:#nmblookup -T "*") 当上面查到资源后,就可以用smbclient登陆了 #smbclient \\hit\music yeah -U share (其中yeah是密码,share是用户名) 执行smbclient命令成功后,进入smbclient环境,出现提示符:smb: >,然后就可以执行和ftp命令中相似的命令:cd, lcd, get ,mget ,put ,mput等,用法就跟FTP一样了。 注:要想使用smbclient来访问windows时,也需要使用UNC来标识Windows资源的位置。此时就需要了解 WindowsUNC在Unix>下进行表示的不同之处。不同之处在于Unix的shell下反斜线为特殊字符,它被定义为转义恢复字符,表示将一些转义字符恢复为其本身字符的意义。因此必须使用两个反斜线才能等同于一个反斜线。因此一个UNC实际使用时应使用双倍的反斜线。 若想使用基于图形的客户端:感觉比较好用的是tksmb和smb4k(KDE) 若只是以上使用弊茄不用配置/etc/samba/smb.conf,也不用启动 samba 服务,甚至可以不装samba程序 二. WINDOWS机子访问在LINUX上的资源 需要使用两个进程:nmbd smbd, 前者nmbd是提供WINDOWS浏览,后者smbd是针对WINDOWS浏览后的登陆等服务。 首先需要说明的是,当samba 还没有添加用户时,WINDOWS机子是登陆不上来的,所以第一步就是添加用户: # smbpasswd -a myfirst 需要说明的是这个用户必须是系统用户,否则回提示 Failed to initialise SAM_ACCOUNT for user myfirst. Does this user exist in the UNIX password database ? Failed to modify password entry for user myfirst 当然可以对用户进行映射,见后面说明。 接着就简单了,就是配置/etc/samba/smb.conf,见下面一个配置以及相应说明,拷贝后您只需要稍稍修改一些你自己的信息就可以使用了(参考了前人的说明) /etc/samba/smb.conf文件 ## /etc/samba/smb.conf配置文件有三个重要的节:[global],[homes],[public] #Global (全局)参数,该部分设置整个系统的规则,定义了一些公共变量。 [global] netbios >#定义Windows系统“网上邻居”中所见的机器名。 workgroup = workgroup #定义主机所在网络上所属的NT域名或者工作组名称 server string = FunField #对主机的说明信息,缺省是:Samba Server hosts allow = 192.168.1. 192.168.3. #它允许设置哪些机器可以访问samba服务器 guest account = nobody invalid users = root #定义smb用户名称。 security = user #定义访问权限。访问权限由低到高有三种:share、user和server。其中share安全级别最低,user模式要求连接时输入用户名和口令 encrypt passwords = true #设置是否需要加密口令。因为Windows系列默认采用加密口令传输,而Linux默认采用非加密口令传输,为保证smb网络用户的正常登录,在user安全级下设置为加密,在share 安全级下可不设。 smb passwd file = /etc/samba/smbpasswd #由命令cat /etc/passwd mksmbpasswd.sh >/etc/samba/smbpasswd产生。 interfaces = 192.168.1.50/24 #配置smb服务所使用的网卡IP以及子网掩码,如果有两个以上网卡,要全部列出。 name resolve order = host dns bcast #设定smb服务时,从机器netbios名称到IP地址的解析方式,默认顺序为host lmhosts wins bcast。如果局域网内有DNS,可设置为host dns bcast。 wins support = no #设置是否有wins支持。 public = yes #为yes时,“网上邻居”中可见该资源,否则不可见。 browseable = yes #为yes时,“网上邻居”中可见该资源,否则不可见。 #printing = bsd # 指定Linux使用哪个打印机守护进程(bsd、sysv、hpux、aix、qnx、plp),同时向samba说明命令lpr和lpq的缺省值。 #printcap ># 定义了打印配置文件所处的位置。 load printers = no # 表明是否加载printcap 定义的所有打印机以供浏览。 log file = /var/log/samba/log.%m # 定义日志文件 max log 'size' = 1000 #日志文件最大1000k (单位是KB) username map = /etc/samba/smbuser #允许管理员指定一个映射文件,该文件包含了在客户机和服务器之间进行用户映射的信息。 用户映射经常在windows 和linux 主机间进行。 两个系统拥有不同的用户账号,用户映射的目的是将不同的用户映射成为一个用户,便于共享文件。 #*********************************************************************# [homes] #该部分通常定义了Linux机器上共享的目录资源,其名字可以由用户确定。段中的设置控制了每一个用户目录的共享权限。 comment = Home Directories #设定在浏览本机资源时,出现在指定资源旁边的字符串。 browseable = yes #控制一项服务是否能够出现在网上邻居中,no意味着这个目录将在浏览时显示为要验证的用户名称,yes则显示 homes 和要验证的用户名称的共享目录。 writable = yes #控制是否允许通过验证的用户对主目录有写入的权限,但最终取决于该目录的 Unix 权限。无论 Unix 的权限怎样, 设置 writable = no 后, 主目录只能是只读的。 create mask = 0700 directory mask = 0700 #若上面是可写的,则设置写文件和目录时的属性 #******************************************************************# [public] #用来指定某一特定用户组或者用户拥有访问权限的目录配置分,配置共享目录部分 comment = Public Stuff # 说明部分 path = /home/samba #共享的Linux目录 writable = no #写权限 printable = no #打印权限 用于用户映射的文件/etc/samba/smbuser # smb.conf中全局参数 “username map” 指定的映射文件 root = admin administrator #Map Windows admin to root hawk = girl #Map the member of girl to hawk snake = boy # 等号左边是单独的Linux账号,等号右边是要映射的账号列表。服务器逐行分析映射文件,如果提供的账号和某行有右侧列表中的账号匹配,就把它替换为等号左边的账号。

步骤1:在Fedora和CentOS上安装Samba

首先,安装饥芹Samba以及进行一些基本的配置。

检验Samba是否已经安装在您的系统中:

$ rpm -q samba samba-common samba-client

如果上面的命令没有任何输出,这意味着Samba并未安装。这时,应使用下面的命令来安装Samba。

$ sudo yum install samba samba-common samba-client

接下来,创建一个用于在网络中共享的本地文件夹。这个文件夹应该以Samba共享的方式导出到远程的用户。在这个指南中,我们会在顶层文件夹'/'中创建这个文件夹,因此,请确保您有相应的权限。

$ sudo mkdir /shared

如果您想在您的home文件夹内创建共享文件夹(例如,~/shared),您必须激活SELinux中Samba的home文件夹共享选项,具体将在后面提到。

在创建/shared文件夹后,设置文件夹权限以保证其余用户可以访问它。

$ sudo chmod o+rw /shared

如果您不想其他用户对该文件夹拥有写权限,您需要移除命令中的'w'选项。

$ sudo chmod o+r /shared

接下来,创建一个空文件来测试。这个文件可以被用来验证Samba的共享已经被挂载。

$ sudo touch /shared/file1

步骤2:为Samba配置SELinux

接下来,我们需要再次配置SELinux。在Fedora和CentOS发行版中SELinux是默认开启的。SELinux仅在正确的安全配置下才允许Samba读取和修改文件或文件夹。(例如,加上'sambasharet'属性标签)。

下面的命令为文件的配置添加必要的标签:

$ sudo semanage fcontext -a -t samba_share_t"<directory>(/.*)?"

将替换为我们之前为Samba共享创建的本地文件夹(例如,/shared):

$ sudo semanage fcontext -a -t samba_share_t"/shared(/.*)?"

我们必须执行restorecon命令来激活修改的标签,命令如下:

$ sudo restorecon -R -v /shared

为了通过Samba共享在我们home文件夹内的文件夹,我们必须在SELinux中开启共享home文件夹的选项,该选烂亏毕项默认被关闭。下面的命令能达到该效果。如果您并未共享您的home文件夹,那么您可以跳过该步骤。

$ sudo setsebool -P samba_enable_home_dirs 1

步骤3:为Samba配置防火墙

下面的命令用来打开防火墙中Samba共享所需的TCP/UDP端口。

如果您在使用firewalld(例如,空正在Fedora和CentOS7下),接下来的命令将会永久的修改Samba相关的防火墙规则。

$ sudo firewall-cmd --permanent --add-service=samba

如果您在防火墙中使用iptables(例如,CentOS6或者更早的版本),可以使用下面的命令来打开Samba必要的向外的端口。

$ sudo vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445-j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 445-j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137-j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138-j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139-j ACCEPT

然后重启iptables服务:

$ sudo service iptables restart

步骤4:更改Samba配置

后面的步骤用来配置Samba以将本地文件夹导出为Samba共享文件夹。

使用文件编辑器打开Samba配置文件,并将下面的行添加到文件的末尾。

$ sudo nano /etc/samba/smb.conf

[myshare]

comment=my shared files

path=/shared

public=yes

writeable=yes

上面在括号内的文本(例如,"myshare")是Samba共享的资源的名字,它被用来从远程主机存取Samba共享。

创建Samba用户帐户,这是挂载和导出Samba文件系��所必须的。我们可以使用smbpasswd工具来创建一个Samba用户。注意,Samba用户帐户必须是已有的Linux用户。如果您尝试使用smbpasswd添加一个不存在的用户,它会返回一个错误的消息。

如果您不想使用任何已存在的Linux用户作为Samba用户,您可以在您的系统中创建一个新的用户。为安全起见,设置新用户的登录脚本为/sbin/nologin,并且不创建该用户的home文件夹。

在这个例子中,我们创建了一个名叫"sambaguest"的用户,如下:

$ sudo useradd -M -s /sbin/nologin sambaguest

$ sudo passwd sambaguest

在创建一个新用户后,使用smbpasswd命令添加Samba用户。当这个命令询问一个密码时,您可以键入一个与其用户密码不同的密码。

$ sudo smbpasswd -a sambaguest

激活Samba服务,并检测Samba服务是否在运行。

$ sudo systemctl enable smb.service

$ sudo systemctl start smb.service

$ sudo systemctl is-active smb

使用下面的命令来查看Samba中共享的文件夹列表。

$ smbclient -U sambaguest -L localhost

接下来是在Thunar文件管理器中访问Samba共享文件夹以及对file1进行拷贝复制的截图。注意,Samba的共享内容可以通过在Thunar中通过 smb://<samba-server-IP-address>/myshare 这个地址来访问。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12316930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存