Chinaunix首页 | 论坛 | 博客
  • 博客访问: 445695
  • 博文数量: 35
  • 博客积分: 747
  • 博客等级: 上士
  • 技术积分: 870
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-05 00:04
个人简介

执酒对饮桃花翩,醉踏歌剑挽流年。

文章分类

全部博文(35)

文章存档

2015年(1)

2014年(4)

2013年(2)

2012年(15)

2011年(13)

分类: LINUX

2011-11-06 00:14:44

这两天突发奇想,想要试试如何在 linux 下和 windows 共享文件。
我使用的是 archlinux,文件管理器是 thunar,查看了一下 arch 的 wiki,发现只需要安装 gvfs-smb 就可以在 thunar 中访问 windows 共享了。
  1. $ pacman -S gvfs-smb
访问共享时,在 thunar 路径栏中输入 smb://ip 即可。

若是想将本机上的文件共享给 windows 主机,需要安装 samba。

配置 /etc/samba/smb.conf 如下:
  1. [global]
  2. workgroup = WORKGROUP
  3. server string= Samba Server
  4. netbios name = HELLO

  5. security = user
  6. map to guest = Bad User
  7. guest account = your_username
  8. guest ok = yes
  9. create mask = 0644

  10. load printers = no
  11. printcap name = /dev/null

  12. #[Public]
  13. #comment = Public Share
  14. #path = /path/to/share
  15. #writable = no
共享本地文件,最方便的就是 guest 模式了,不需要用户名和密码,访问时直接输入 ip 即可。
网上查到的资料基本上都是设置 "security = share",但是看了下 smb.conf 的 man 页,发现这个用法在 samba 3 中已经不推荐了,而应该用 "map to guest" 代替,具体可以查看 man 手册。配置如上所示。

"guest account = your_username" 那行中,your_username 是访问者以 guest 身份访问共享时所使用的本地主机帐号,默认是 nobody,我是设为了我的登录用户名。

"create mask" 为有读写权限的访问者在创建文件时的权限位,默认为 0744,这里我设置为 0644,去掉了 owner 的执行权限。

若是没有打印机,则需要添加
  1. load printers = no
  2. printcap name = /dev/null
这两行,否则日志中会有错误:
  1. localhost smbd[27290]: Unable to connect to CUPS server localhost:631 - No such file or directory
  2. localhost smbd[27288]: failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
若是需要一直静态共享某些目录,只需将 [Public] 那一块注释取消,同时在 "path =" 那一行添加共享目录路径即可。

samba 可以使用 net usershare 命令动态设置共享目录。

以下命令需要 root 权限执行:
  1. # export USERSHARES_DIR="/var/lib/samba/usershares"
  2. # export USERSHARES_GROUP="sambashare"
  3. # mkdir -p ${USERSHARES_DIR}
  4. # groupadd ${USERSHARES_GROUP}
  5. # chown root:${USERSHARES_GROUP} ${USERSHARES_DIR}
  6. # chmod 1770 ${USERSHARES_DIR}
  7. # gpasswd -a your_username ${USERSHARES_GROUP}
编辑 /etc/smb.conf:
  1. [global]
  2. workgroup = WORKGROUP
  3. server string= Samba Server
  4. netbios name = HELLO

  5. security = user
  6. map to guest = Bad User
  7. guest account = your_username
  8. guest ok = yes
  9. create mask = 0644

  10. usershare path = /var/lib/samba/usershares
  11. usershare max shares = 10
  12. usershare allow guests = yes
  13. usershare owner only = yes
重启 samba 服务:
  1. # /etc/rc.d/samba restart
注销后登录,现在可以使用 net usershare 命令添加共享了。

添加共享命令:
  1. net usershare add [] [] [
如要将目录 /home/user/Public 设为共享,共享名为 hello,允许不需要密码的匿名访问,给予只读权限:
  1. $ net usershare add hello /home/user/Public "public share" everyone:r guest_ok=y
若想给予读写权限,则使用 everyone:f。

查看该共享的相关信息:
  1. $ net usershare info hello
  2. [hello]
  3. path=/home/user/Public/
  4. comment=public share
  5. usershare_acl=Everyone:R,
  6. guest_ok=y
删除该共享:
  1. $ net usershare delete hello
列出主机上所有自定义共享:
  1. $ net usershare list
我希望在添加共享时,默认即允许匿名访问,而不是需要自己输入 "guest_ok=y"。
可惜即使我在 /etc/samba/smb.conf 中设置了 "guest ok = yes",默认的却还是 "guest_ok=n"。
若是有谁知道方法的话,希望可以告知。
阅读(3511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~