您的位置:首页 > 运维架构 > Linux

linux与windows共享文件

2016-07-07 12:58 441 查看
一、简单SMB服务

用于linux与windows相互共享访问

 

1.安装软件包三个

samba 服务文件(smdb、nmbd服务)

samba-common 主程序配置文件(如/etc/samba/smb.conf)

samba-Client 提供其他linux作为samba客户端时对samba的访问

查看软件包完整:rpm -qa | grep samba

 

2.samba服务的配置

vi /etc/samba/smb.conf

[global]全局设置

security = user/share (登陆方式以用户验证/无验证)

usershare allow guest = yes (表示以guest身份登陆)

 

[suse]自定义目录名

comment = 目录短文本

phat = /suse 路径为根目录下的suse目录

read only = yes 只读(与writable冲突)

writable = yes

 

3.samba服务的启停

services smb start 命令方式启动

etc/init.d/smb restart 脚本方式重启

 

4.samba用户

原则:1、必须是系统有的用户useradd suse  创建用户suse

      2、使用已有用户创建smb用户smbpasswd -a suse 创建smb用户suse

      3.cat /etc/samba/sampasswd 创建是smb用户suse在其中可见

 

5.目录权限

chmod 777 /suse 让suse用户有访问suse目录的权限

 

======================================================================================在配置samba服务的时候遇到的问题:

1.samba安装好后,没有smbpasswd文件

原因:samba启用了tdbsam认证方式,必须将其求改为smbpasswd认证方式

解决方法:修改/etc/samba/smb.conf文件

将其中的passdb backend = tdbsam改为passdb backend = smbpasswd

并添加smb passwd file = /etc/samba/smbpasswd

退出并保存samba的配置文件,并且重启samba服务。再使用smbpasswd -a 创建用户的时候就会自动生成smbpasswd文件了

 

2.samba下实现不同目录+不同用户有不同权限的方案

主要参数:在全局设置里面

map to guest = Bad User 

security = user

有了上面的全局参数,就可以实现用NUC路径访问smb服务器的时候按不同的用户来访问不同的目录

下面是具体的目录设置参数

[homes]

        comment = Home Directories

        browseable = no                不可浏览见

        writable = yes

        #valid users = %S              登陆用户登陆后home变为登陆用户名(貌似可以不设置就有效果)

这个必须设置,不然map to guest不起作用

 

[test]

        comment = share

        path = /test

        writable = yes                 进入目录后的权限,可写

        public = yes                   任何人都可以进入目录

 

[open]

       comment = myself

       path = /open

       writable = yes                  进入目录后的权限

       valid users = aa,bb             smb允许aa、bb用户进入该目录(可以通过linux本身的目录权限控制,而不需要设置。必须用户属于不同的组的时候)

 

以上可以实现所有的用户可以看到test目录和open目录,所有用户可以访问test目录,并且可以读写。而只有aa、bb用户可以访问open目录,并且可以读写。

 

补充:以上所说的权限只是针对于smb的权限,虽然smb的权限有了进入和读写权限,但是不一定用户就可以进入这2个目录和读写这个2个目录,这是因为linux系统本身也是有权限的,就是目录自己的权限。chmod

使用chmod命令可以修改目录的权限,使用chgrp可以修改目录的属组,使用usermod -a -G 组(新的组) 用户,可以添加用户到新的组(假如aa用户属于aa组,那么usermod -G users就将aa用户改成了users组用户了,但是usermod -a -G users是将aa用户额外加入到users组,那么现在的aa就属于aa组和users组这两个组的用户了)

 

======================================================================================

下面看一个案例:

假设现在有2个目录就是上面的test个open

    现在有10个用户,分成了2个部门,分别为信息部和销售部,信息部有用户aa、bb、cc、dd、ee用户,销售部有11、22、33、44、55用户,老总要求所有人可以匿名访问test目录,可以读写。而只有信息部可以通过用户名密码的方式访问open目录,并有读写权限。但是信息部中有2个用户是外部借调的,所以老总不想让这2个人dd、ee访问open这个目录。

那么如何解决呢,就要利用目录属组和smb权限来综合解决

目标:所有人匿名访问test,读写

      只有aa、bb、cc可以通过密码访问open目录,并可读写

信息组为xinxi

销售组为xiaoshou

首先环境是:aa、bb、cc、dd、ee是属于xinxi组

            11、22、33、44、55是属于xiaoshou组

 

先来配置  global 设置和homes目录设置及test目录设置,来满足匿名访问需求

global设置中:

map to guest = Bad User        与user安全方式用可以实现匿名浏览目录

security = user                安全认证以用户名和密码方式

 

[homes]

        comment = Home Directories     注释,随便写

        browseable = no                不可浏览见

        writable = yes                 读写

        #valid users = %S              用户进入后目录名是自己的用户名

[test]

        comment = share

        path = /test

        writable = yes                 进入目录后的权限,可写

        public = yes                   公用的所有可以访问

 

好了,test的smb权限设置好后,就开始设置linux目录权限,因为是所有人可以访问,所有我们开放所有权限

chmod 777 /test

drwxrwxrwx    2 root root   4096 May  9 04:31 test

这样linux的目录权限也设置好了,现在可以用smb账户进行访问了

创建系统账户:useradd -m aa -g xinxi     创建aa加入xinxi组,并自动创建宿主目录

              useradd -m bb -g xinxi     。。。

              。。。。。。

              useradd -m 55 -g xiaoshou   创建55加入xiaoshou组。。。

创建sub账户:smbpasswd -a aa

             smbpasswd -a bb

             。。。。。。

             smbpasswd -a 55

好了账户创建完毕,现在所有账户都可以访问test这个目录了

 

下面配置只有aa、bb、cc可以访问的open目录

[open]

       comment = myself

       path = /open

       writable = yes                  进入目录后的权限

       valid users = aa,bb,cc          用户aa、bb、cc可以进入目录

 

现在smb的权限已经是只有aa、bb、cc可以访问了,下面来设置linux目录权限

drwxr-xr-x    2 root root  4096 May  9 04:52 open

由于open目录只应该让xinxi组可以访问,那么就要先让xinxi组可以访问open目录,修改目录属组为xinxi

chgrp xinxi /open

drwxr-xr-x    2 root xinxi  4096 May  9 07:11 open

然后让组有可以访问的读写权限,其他用户没有访问权限

chmod 770 /open

drwxrwx---    2 root xinxi  4096 May  9 09:40 open

现在linux的目录open就可以让xinxi组的用户有读写的访问权限了,再加上前面的smb权限的valid users = aa,bb,cc,控制只有aa、bb、cc可以进入open目录,就实现了xinxi组中只有aa、bb、cc三个用户可以访问open目录的目的,访问方式通过用户密码的方式。

 

(如果嫌麻烦而且安全性要求不高的话,可以不用修改open目录的属组,直接chmod 777 /open,让所有用户有访问权限,然后通过smb的valid users=用户来控制能访问这个目录的smb用户就可以了)

 

 

df -h 以简单方式显示文件系统空间

free 显示内存及swap使用量

du -h /suse 以简单方式查看suse目录及子文件占用的空间

二、在windows上上传或下载linux主机上的文件可以使用sftp服务,软件:FileZilla,进行sftp/ssh登录linux主机,输入用户名和密码后就可以像ftp那样上传和下载linux的文件了。

三、linux上访问windows的共享,一样通过smb,安装samba-client(centOS 使用 yum -y install samba-client安装),安装好后,使用命令:smbclient -L //ip -U "username"  
  来查看windows主机上的共享。

然后挂载windows主机上的共享目录share到linux下的/mnt/shared目录下,使用mount命令:

mount //ip/share /mnt/shared 或者下面的

mount -t cifs -o username="",password="" //ip/share /mnt/shared

      如果需要永久挂载可以编辑/etc/fstab文件,再这个里面挂载你的windows共享目录,每次开机之后他会自动挂载的。具体的挂载方法可以按照fstab目录下面的格式来挂载。

如果需要卸载已挂载的共享目录,命令格式为umount:

umount /mnt/shared 或者 umount //ip/share  可以卸载本地linux的挂载目录也可以卸载挂载的windows的共享目录,效果一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: