标签 Elementary 下的文章

Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。第三版不仅可访问及分享SMB的文件夹及打印机,本身还可以集成入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列操作系统之间搭起一座桥梁,让两者的资源可互通有无。

 安装软件

sudo apt-get install samba

 配置共享

sudo vi /etc/samba/smb.conf

在文件末尾添加以下内容:

[public]
path=/data/nfs
browseable=yes
read only=no
guest ok=yes

文件夹的可读写权限我在已经设置好了,添加了匿名的文件读写权限。

 添加系统用户到 Samba 账号:

sudo smbpasswd -a pantao # 添加系统用户 pantao 至 samba 
在执行 smbpasswd 前,需要先添加好用户 pantao,否则命令会执行失败。

重启 samba 服务

sudo service smbd restart

客户端访问

Linux 访问

smbclient -L //192.168.3.3/public

Windows 客户端访问

可以直接访问如下地址即可:

\\192.168.3.3\public

如果 public=no,则此时需要输入 samba 的用户名与密码,如果 public=yes,则作为 nobody 用户直接访问。

另外,在 Windows 客户端可以使用 net use * /del /y 这条命令清理访问缓存。

Samba 常用参数

  • comment=smb share test:该共享的备注信息
  • path=/data/nfs:共享路径
  • allow hosts=host(subnet):设置该 Samba 服务器允许的工作组或域
  • deny hosts=host(subnet):设置该 Samba 服务器拒绝的工作组或域
  • available=yes|no:设置该共享目录是否可用
  • browseable=yes|no:设置该共享目录是否可显示
  • writable=yes|no:指定该目录缺省是否可写,也可以用 readonly = no 来设置可写
  • public=yes|no:指明该共享资源是否能给游客使用, guest ok=yes 其实与 public=yes 是一样的
  • user=user,@group: user 设置所有可能使用该共享资源的用户,也可以用 @group 代表 group 这个组的所有成员,不同的项目之间使用空格或者英文逗号隔开
  • valid users=user,@group:指定能够使用该共享资源的用户和组
  • invalid users=user,@group:指定不能够使用该共享资源的用户和组
  • read list=user,@group:指定只能读取该共享资源的用户和组
  • write list=user,@group:指定能读取和写入该共享资源的用户和组
  • admin list=user,@group:指定能管理该共享资源(包括读写和权限赋予等)的用户和组
  • hide dot files=yes|no:是否像 Unix 一样,隐藏以 . 号开头的文件
  • 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:是否能大小写敏感,一般选 no,不然可能会引起错误
  • mangle case=yes|no:指明混合大小写
  • default case=upper|lower:指明默认的文件名是全部大写还是小写
  • force user=testuser:强制设置新建立的文件的属主是谁,如果我有一个目录, guest 用户 可以写,那么 guest 就也可以删除文件 ,但是如果我强制把建痒痒的文件的属主设置为 testuser,同时限制 create mode=0755,那么 guest 就不能删除了
  • wide links=yes|no:指明是否允许共享外符号连接,比如共享资源里面有一个连接指向非共享资源里面的文件或者目录,如果设置为 wide links=no,将使该链接不可用
  • max connections=100:最大同时连接数
  • delete readonly=yes|no:是否能删除共享资源里面已经被指定为只读的文件

以前还没有在 Linux 下使用大于 2T 的硬盘,今天入的一块 8T 硬盘,按以前的 fdisk ,发现一直就只有 2T,才发现,原来还有这么个问题,先记录下今天格式化的命令:

parted                 # 打开 parted 程序
select /dev/sdc        # 选择需要操作的硬盘
mklabel gpt            # 将 MBR 硬盘格式为 GPT
mkpart primary 0% 100% # 将整块硬盘分成一个分区
print                  # 打印分区信息
quit                   # 退出

完成上面的步骤之后,可以开始格式化刚才创建的分区了:

mkfs.ext4 -T largefile /dev/sdc1

完成之后,可以直接 mount 刚才格式化的硬盘

sudo mkdir /data
mount /dev/sdc1 /data

使用 df -h 就可以看到该磁盘的大小,如果想让系统每次启动之后自动挂载,可以编辑 /etc/fstab 文件,添加下面这一行:

/dev/sdc1 /data ext4 defaults 0 0

这么多年积累下来的照片(RAW文件都保留着)太多,西数的 NAS 有点不够用了,想着就入了一块 8T 的硬盘,扩展一下家里面的这台老台式机(安装的是 Elementary OS),搭建了一个 NFS 服务。

安装软件

sudo apt-get install nfs-kernel-server nfs-common

修改配置文件

sudo vi /etc/exports

在末尾添加下面这行:

/data/nfs *(rw,sync,no_root_squash,no_subtree_check)

上面这段表达的意思是:

/data/nfs            : 共享的目录
*                    : 指定哪些用户 可以访问
                       *             所有可以 ping 通本主机的用户 
                       192.168.3.*   指定网段,在该网段中的用户可以挂载
                       192.168.3.14  只有该 IP 的用户才能挂载
(                    : 共享参数
  rw,                  : 权限
                         ro: 只读
                         rw: 读写
  sync,                : 同步写入硬盘
  no_root_squash,      : root 用户访问此目录,具有 root 操作权限
  no_subtree_check     : 不检查父目录权限
)

常用的共享参数还有:

  • ro:只读访问
  • rw:读写访问
  • sync:同步写入硬盘
  • async:暂存内存
  • secure:NFS 通过 1024 以下的安全 TCP/IP 端口发送
  • insecure:NFS 通过 1024 以上的端口发送
  • wdelay:多个用户对共享目录进行写操作时,则按组写入数据(默认)
  • no_wdelay:多个用户对共享目录进行写操作时,则立即写入数据
  • hide:不共享其子目录
  • no_hide:共享其子目录
  • subtree_check:强制 NFS 检查父目录的权限
  • no_subtree_check:不检查父目录权限
  • all_squash:任何访问者,都转为匿名
  • root_squash :root 用户访问此目录, 映射成如 anonymous 用户一样的权限(默认)
  • no_root_squash:root 用户访问此目录,具有 root 操作权限

重启 nfs 服务

sudo /etc/init.d/nfs-kernel-server restart

到此,nfs 的服务就搭建好了

客户端访问服务器

  1. 检查客户端与服务端的网络是否连通

    ping 192.168.3.3
  2. 查看服务端的共享目录设置

    showmount -e 192.168.3.3
    
    Export list for 192.168.3.3:
    /data/nfs *
  3. 将该目录挂载到本地

    mount 192.168.3.3:/data/nfs /path/to/local/folder
  4. 访问

    cd /path/to/local/folder