赞
踩
这不前阵子上班了,在公司用到了samba,可以在Linux和Windows之间共享文件,觉得很香,因为之前一直在用FileZilla,每次source insight写好保存,然后再用FileZilla传到linux,单个文件还好。但是公司的项目,那么多文件,我改个两三个,它门都不在同一目录,两边又要对目录,又要刷新上传,太麻烦了。于是乎我想给自己的虚拟机也安装samba。
sudo apt-get install samba
查看安装版本
smbd -V
修改配置文件,这里我只需要添加,不需要动全局配置
sudo vi /etc/samba/smb.conf
在最后一行添加如下代码
[book_dir] #这是使用windows登录时你看到的目录名,book_dir下面的目录就是path中的文件
path = /home/book/code #要共享的目录,根据自己的实际需求设置,我直接设置成/访问所有,
#这种情况下映射网络驱动器,要输入: \\192.168.111.111\book_dir,否则一直映射失败
available = yes #该共享资源是否可用
browseable = yes #共享资源是否可以浏览
guest ok = no #是否允许guest访问共享资源
writeable = yes #共享资源是否可写
然后重启启动samba,注意你的可能不是smbd,去init.d目录下看看再执行,网上教程版本不一样,文件就不同
/etc/init.d/smbd restart
我的linux下的用户:book@100ask
当前用户是book,是linux下的用户,要用它来添加samba用户
要是不知道你当前用户是什么,命令行输入whoami
查看
sudo smbpasswd -a book
回车后会提示你输入密码,这是我的:123456
win+R,输入你的虚拟机ip,形式如下
\\192.168.111.111
回车后会让你输入账号和密码来访问
账号:book
密码:123456
登录尽来你会发现
这个book_dir不就是配置文件设置的吗,对,就是它。
还要一点要说,这点很重要!!!
安装samba的时候,网上一把教程让你把配置文件中设置成
guest ok = yes # public = yes|no 和guest相同
这当然可以,这样的话你就不用输入账号密码登录了,可以在win+R命令行回车直接进入目录,多好。但是,你不登录的话,相当于以游客的身份使用book_dir这个目录,看下我code目录的文件拥有者
和组
,都是book
。
drwxrwxr-x 4 book book 4096 Jul 25 05:02 code/
当你以guest访问时,你可能无法在code目录下创建/删除 文件/目录,为啥?因为code目录的权限可能不够,从上面看我的是没有w(写)权限。所以会无法创建和删除文件。
解决方法一
使用chmod -R 777 code
把code目录的权限改了,让所有用户可以随意使用code目录,但是,当目录权限是 777 的时候,目录会变得绿不拉几的,像下图的nfs_rootfs
此目录下的所有文件都是绿的,我看着是贼丑,而且普通c文件和可执行文件都是绿的,也不好分辨,所以我选方法二
解决方法二
还是老老实实使用book登录吧!
如果不登录,在samba共享目录下下创建一个文件,右键–属性–安全,如下图
你会看到nogroup和nobody,这是什么意思?说明文件的拥有者和组不是book,你一个guest是没有权限操作它的(当然可以使用chmod改其拥有者和组,但是这样麻烦啊)
登录的话创建文件,咦,它的拥有者和组就是book,就可以操作它
我现在也迷迷糊糊的,写的不一定全对,有什么错误欢迎指正
安装是很简单的,我就卡在文件权限上了,当初改权限 777 ,全绿的目录太丑,我就一直找能不能在windows下创建文件时,它的属性中拥有者和组是book,当时我还傻傻的把电脑用户名改成book,可惜没卵用。
最后发现是guest ok = yes
在作怪,有它在根本不需要登录,直接默认是guest游客登录的,我就说呢,公司里的都需要登录,我自己搞的怎么不需要登录呢!把它改成guest ok = no
,会让你输入账号密码登录。或者删除这条命令,你可以说试试
配置文件还有很多选项,还有其他命令,我也没用过,贴在下面供自己参考
comment = Comment String 共享文件描述
path = /path/to/share_directory 共享文件的绝对路径
allow hosts = host(subnet) 允许访问此共享资源的主机列表
deny hosts = host(subnet) 禁止访问此共享资源的主机列表
writable = yes|no 是否有写权限
browseable = yes|no 是否浏览权限(yes为可见共享,no为隐藏共享)
user = user(@group) 设置所有可能使用该共享资源的用户列表
valid users = user(@group) 指定能够使用该共享资源的用户和组列表
invalid users = user(@group) 指定不能够使用该共享资源的用户和组
read list = user(@group) 设置能够读取该共享资源的用户列表
write list = user(@group) 设置对该共享资源具有写权限的用户列表
admin list = user(@group) 设置对共享资源具有管理权限的用户列表
public = yes|no 指明该共享资源是否能给游客帐号访问
guest ok = yes|no 与public相同
hide dot files = yes|no 是否隐藏以“.”号开头的文件
create mode = 0755 指明新建立的文件的属性,一般是0755
directory mode = 0755 指明新建立的目录的属性,一般是0755
sync always = yes|no 指明写操作后是否进行同步操作
short preserve case = yes|no 指明忽略文件名大小写
preserve case = yes|no 指明保持文件名大小写
case sensitive = yes|no 指明是否对大小写敏感
mangle case = yes|no 指明混合大小写
default case = upper|lower 指明缺省的文件名是全部大写还是小写
force user = lt 强制指定建立文件的属主是谁
wide links = yes|no 指明是否允许共享外符号连接
max connections = 100 设定同时连接数是n
delete readonly = yes|no 指明能否删除已经被定义为只读的文件
root preexec = /bin/mount -t iso9660 /dev/cdrom /mnt/cdrom 自动挂光驱
root postexec = /bin/umount /mnt/cdrom 自动
root下使用哦
pdbedit命令相关的命令是:smbpasswd
pdbedit命令是samba的用户管理命令。
常用参数
pdbedit -a username:新建Samba账户。
pdbedit -r username:修改Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户账号。
pdbedit -c “[]” -u username:恢复该Samba用户账号。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。