标签 Samba 下的文章

这篇文章包括了管理 Samba4 域控制器架构过程中的一些常用命令,比如添加、移除、禁用或者列出用户及用户组等。

我们也会关注一下如何配置域安全策略以及如何把 AD 用户绑定到本地的 PAM 认证中,以实现 AD 用户能够在 Linux 域控制器上进行本地登录。

要求

第一步:在命令行下管理

1、 可以通过 samba-tool 命令行工具来进行管理,这个工具为域管理工作提供了一个功能强大的管理接口。

通过 samba-tool 命令行接口,你可以直接管理域用户及用户组、域组策略、域站点,DNS 服务、域复制关系和其它重要的域功能。

使用 root 权限的账号,直接输入 samba-tool 命令,不要加任何参数选项来查看该工具能实现的所有功能。

# samba-tool -h

samba-tool - Manage Samba Administration Tool

samba-tool —— Samba 管理工具

2、 现在,让我们开始使用 samba-tool 工具来管理 Samba4 活动目录中的用户。

使用如下命令来创建 AD 用户:

# samba-tool user add your_domain_user

添加一个用户,包括 AD 可选的一些重要属性,如下所示:

--------- review all options --------- 
# samba-tool user add -h  
# samba-tool user add your_domain_user --given-name=your_name --surname=your_username [email protected] --login-shell=/bin/bash

Create User on Samba AD

在 Samba AD 上创建用户

3、 可以通过下面的命令来列出所有 Samba AD 域用户:

# samba-tool user list

List Samba AD Users

列出 Samba AD 用户信息

4、 使用下面的命令来删除 Samba AD 域用户:

# samba-tool user delete your_domain_user

5、 重置 Samba 域用户的密码:

# samba-tool user setpassword your_domain_user

6、 启用或禁用 Samba 域用户账号:

# samba-tool user disable your_domain_user
# samba-tool user enable your_domain_user

7、 同样地,可以使用下面的方法来管理 Samba 用户组:

--------- review all options --------- 
# samba-tool group add –h  
# samba-tool group add your_domain_group

8、 删除 samba 域用户组:

# samba-tool group delete your_domain_group

9、 显示所有的 Samba 域用户组信息:

# samba-tool group list

10、 列出指定组下的 Samba 域用户:

# samba-tool group listmembers "your_domain group"

List Samba Domain Members of Group

列出 Samba 域用户组

11、 从 Samba 域组中添加或删除某一用户:

# samba-tool group addmembers your_domain_group your_domain_user
# samba-tool group remove members your_domain_group your_domain_user

12、 如上面所提到的, samba-tool 命令行工具也可以用于管理 Samba 域策略及安全。

查看 samba 域密码设置:

# samba-tool domain passwordsettings show

Check Samba Domain Password

检查 Samba 域密码

13、 为了修改 samba 域密码策略,比如密码复杂度,密码失效时长,密码长度,密码重复次数以及其它域控制器要求的安全策略等,可参照如下命令来完成:

---------- List all command options ---------- 
# samba-tool domain passwordsettings -h 

Manage Samba Domain Password Settings

管理 Samba 域密码策略

不要把上图中的密码策略规则用于生产环境中。上面的策略仅仅是用于演示目的。

第二步:使用活动目录账号来完成 Samba 本地认证

14、 默认情况下,离开 Samba AD DC 环境,AD 用户不能从本地登录到 Linux 系统。

为了让活动目录账号也能登录到系统,你必须在 Linux 系统环境中做如下设置,并且要修改 Samba4 AD DC 配置。

首先,打开 Samba 主配置文件,如果以下内容不存在,则添加:

$ sudo nano /etc/samba/smb.conf

确保以下参数出现在配置文件中:

winbind enum users = yes
winbind enum groups = yes

Samba Authentication Using Active Directory User Accounts

Samba 通过 AD 用户账号来进行认证

15、 修改之后,使用 testparm 工具来验证配置文件没有错误,然后通过如下命令来重启 Samba 服务:

$ testparm
$ sudo systemctl restart samba-ad-dc.service

Check Samba Configuration for Errors

检查 Samba 配置文件是否报错

16、 下一步,我们需要修改本地 PAM 配置文件,以让 Samba4 活动目录账号能够完成本地认证、开启会话,并且在第一次登录系统时创建一个用户目录。

使用 pam-auth-update 命令来打开 PAM 配置提示界面,确保所有的 PAM 选项都已经使用 [空格] 键来启用,如下图所示:

完成之后,按 [Tab] 键跳转到 OK ,以启用修改。

$ sudo pam-auth-update

Configure PAM for Samba4 AD

为 Samba4 AD 配置 PAM 认证

Enable PAM Authentication Module for Samba4 AD Users

为 Samba4 AD 用户启用 PAM认证模块

17、 现在,使用文本编辑器打开 /etc/nsswitch.conf 配置文件,在 passwdgroup 参数的最后面添加 winbind 参数,如下图所示:

$ sudo vi /etc/nsswitch.conf

Add Windbind Service Switch for Samba

为 Samba 服务添加 Winbind Service Switch 设置

18、 最后,编辑 /etc/pam.d/common-password 文件,查找下图所示行并删除 user_authtok 参数。

该设置确保 AD 用户在通过 Linux 系统本地认证后,可以在命令行下修改他们的密码。有这个参数时,本地认证的 AD 用户不能在控制台下修改他们的密码。

password       [success=1 default=ignore]      pam_winbind.so try_first_pass

Allow Samba AD Users to Change Passwords

允许 Samba AD 用户修改密码

在每次 PAM 更新安装完成并应用到 PAM 模块,或者你每次执行 pam-auth-update 命令后,你都需要删除 use_authtok 参数。

19、 Samba4 的二进制文件会生成一个内建的 windindd 进程,并且默认是启用的。

因此,你没必要再次去启用并运行 Ubuntu 系统官方自带的 winbind 服务。

为了防止系统里原来已废弃的 winbind 服务被启动,确保执行以下命令来禁用并停止原来的 winbind 服务。

$ sudo systemctl disable winbind.service
$ sudo systemctl stop winbind.service

虽然我们不再需要运行原有的 winbind 进程,但是为了安装并使用 wbinfo 工具,我们还得从系统软件库中安装 Winbind 包。

wbinfo 工具可以用来从 winbindd 进程侧来查询活动目录用户和组。

以下命令显示了使用 wbinfo 命令如何查询 AD 用户及组信息。

$ wbinfo -g
$ wbinfo -u
$ wbinfo -i your_domain_user

Check Samba4 AD Information

检查 Samba4 AD 信息

Check Samba4 AD User Info

检查 Samba4 AD 用户信息

20、 除了 wbinfo 工具外,你也可以使用 getent 命令行工具从 Name Service Switch 库中查询活动目录信息库,在 /etc/nsswitch.conf 配置文件中有相关描述内容。

通过 grep 命令用管道符从 getent 命令过滤结果集,以获取信息库中 AD 域用户及组信息。

# getent passwd | grep TECMINT
# getent group | grep TECMINT

Get Samba4 AD Details

查看 Samba4 AD 详细信息

第三步:使用活动目录账号登录 Linux 系统

21、 为了使用 Samba4 AD 用户登录系统,使用 su - 命令切换到 AD 用户账号即可。

第一次登录系统后,控制台会有信息提示用户的 home 目录已创建完成,系统路径为 /home/$DOMAIN/ 之下,名字为用户的 AD 账号名。

使用 id 命令来查询其它已登录的用户信息。

# su - your_ad_user
$ id
$ exit

Check Samba4 AD User Authentication on Linux

检查 Linux 下 Samba4 AD 用户认证结果

22、 当你成功登入系统后,在控制台下输入 passwd 命令来修改已登录的 AD 用户密码。

$ su - your_ad_user
$ passwd

Change Samba4 AD User Password

修改 Samba4 AD 用户密码

23、 默认情况下,活动目录用户没有可以完成系统管理工作的 root 权限。

要授予 AD 用户 root 权限,你必须把用户名添加到本地 sudo 组中,可使用如下命令完成。

确保你已输入域 、斜杠和 AD 用户名,并且使用英文单引号括起来,如下所示:

# usermod -aG sudo 'DOMAIN\your_domain_user'

要检查 AD 用户在本地系统上是否有 root 权限,登录后执行一个命令,比如,使用 sudo 权限执行 apt-get update 命令。

# su - tecmint_user
$ sudo apt-get update

Grant sudo Permission to Samba4 AD User

授予 Samba4 AD 用户 sudo 权限

24、 如果你想把活动目录组中的所有账号都授予 root 权限,使用 visudo 命令来编辑 /etc/sudoers 配置文件,在 root 权限那一行添加如下内容:

%DOMAIN\\your_domain\  group ALL=(ALL:ALL) ALL

注意 /etc/sudoers 的格式,不要弄乱。

/etc/sudoers 配置文件对于 ASCII 引号字符处理的不是很好,因此务必使用 '%' 来标识用户组,使用反斜杠来转义域名后的第一个斜杠,如果你的组名中包含空格(大多数 AD 内建组默认情况下都包含空格)使用另外一个反斜杠来转义空格。并且域的名称要大写。

Give Sudo Access to All Samba4 AD Users

授予所有 Samba4 用户 sudo 权限

好了,差不多就这些了!管理 Samba4 AD 架构也可以使用 Windows 环境中的其它几个工具,比如 ADUC、DNS 管理器、 GPM 等等,这些工具可以通过安装从 Microsoft 官网下载的 RSAT 软件包来获得。

要通过 RSAT 工具来管理 Samba4 AD DC ,你必须要把 Windows 系统加入到 Samba4 活动目录。这将是我们下一篇文章的重点,在这之前,请继续关注。


via: http://www.tecmint.com/manage-samba4-active-directory-linux-command-line

作者:Matei Cezar 译者:rusking 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Samba 是一个自由的开源软件套件,用于实现 Windows 操作系统与 Linux/Unix 系统之间的无缝连接及共享资源。

Samba 不仅可以通过 SMB/CIFS 协议组件来为 Windows 与 Linux 系统之间提供独立的文件及打印机共享服务,它还能实现 活动目录 Active Directory 域控制器 Domain Controller 的功能,或者让 Linux 主机加入到域环境中作为域成员服务器。当前的 Samba4 版本实现的 AD DC 域及林功能级别可以取代 Windows 2008 R2 系统的域相关功能。

本系列的文章的主要内容是使用 Samba4 软件来配置活动目录域控制器,涉及到 Ubuntu、CentOS 和 Windows 系统相关的以下主题:

  • 第 1 节:在 Ubuntu 系统上使用 Samba4 来创建活动目录架构
  • 第 2 节:在 Linux 命令行下管理 Samba4 AD 架构
  • 第 3 节:在 Windows 10 操作系统上安装 RSAT 工具来管理 Samba4 AD
  • 第 4 节:从 Windows 中管理 Samba4 AD 域控制器 DNS 和组策略
  • 第 5 节:使用 Sysvol Replication 复制功能把 Samba 4 DC 加入到已有的 AD
  • 第 6 节:从 Linux DC 服务器通过 GOP 来添加一个共享磁盘并映射到 AD
  • 第 7 节:把 Ubuntu 16.04 系统主机作为域成员服务器添加到 AD
  • 第 8 节:把 CenterOS 7 系统主机作为域成员服务器添加到 AD
  • 第 9 节:在 AD Intranet 区域创建使用 kerberos 认证的 Apache Website

这篇指南将阐明在 Ubuntu 16.04 和 Ubuntu 14.04 操作系统上安装配置 Samba4 作为域控服务器组件的过程中,你需要注意的每一个步骤。

以下安装配置文档将会说明在 Windows 和 Linux 的混合系统环境中,关于用户、机器、共享卷、权限及其它资源信息的主要配置点。

环境要求:

  1. Ubuntu 16.04 服务器安装
  2. Ubuntu 14.04 服务器安装
  3. 为你的 AD DC 服务器设置静态IP地址

第一步:初始化 Samba4 安装环境

1、 在开始安装 Samba4 AD DC 之前,让我们先做一些准备工作。首先运行以下命令来确保系统已更新了最新的安全特性,内核及其它补丁:

$ sudo apt-get update 
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

2、 其次,打开服务器上的 /etc/fstab 文件,确保文件系统分区的 ACL 已经启用 ,如下图所示。

通常情况下,当前常见的 Linux 文件系统,比如 ext3、ext4、xfs 或 btrfs 都默认支持并已经启用了 ACL 。如果未设置,则打开并编辑 /etc/fstab 文件,在第三列添加 acl,然后重启系统以使用修改的配置生效。

Enable ACL's on Linux Filesystem

启动 Linux 文件系统的 ACL 功能

3、 最后使用一个具有描述性的名称来设置主机名 ,比如这往篇文章所使用的 adc1。通过编辑 /etc/hostname 文件或使用使用下图所示的命令来设置主机名。

$ sudo hostnamectl set-hostname adc1

为了使修改的主机名生效必须重启服务器。

第二步: 为 Samba4 AD DC 服务器安装必需的软件包

4、 为了让你的服务器转变为域控制器,你需要在服务器上使用具有 root 权限的账号执行以下命令来安装 Samba 套件及所有必需的软件包。

$ sudo apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind

Install Samba on Ubuntu

在 Ubuntu 系统上安装 Samba 套件

5、 安装包在执行的过程中将会询问你一系列的问题以便完成域控制器的配置。

在第一屏中你需要以大写为 Kerberos 默认 REALM 输入一个名字。以大写为你的域环境输入名字,然后单击回车继续。

Configuring Kerberos Authentication

配置 Kerosene 认证服务

6、 下一步,输入你的域中 Kerberos 服务器的主机名。使用和上面相同的名字,这一次使用小写,然后单击回车继续。

Set Hostname Kerberos Server

设置 Kerberos 服务器的主机名

7、 最后,指定 Kerberos realm 管理服务器的主机名。使用更上面相同的名字,单击回车安装完成。

Set Hostname Administrative Server

设置管理服务器的主机名

第三步:为你的域环境开启 Samba AD DC 服务

8、 在为域服务器配置 Samba 服务之前,先运行如下命令来停止并禁用所有 Samba 进程。

$ sudo systemctl stop samba-ad-dc.service smbd.service nmbd.service winbind.service
$ sudo systemctl disable samba-ad-dc.service smbd.service nmbd.service winbind.service

9、 下一步,重命名或删除 Samba 原始配置文件。在开启 Samba 服务之前,必须执行这一步操作,因为在开启服务的过程中 Samba 将会创建一个新的配置文件,如果检测到原有的 smb.conf 配置文件则会报错。

$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.initial

10、 现在,使用 root 权限的账号并接受 Samba 提示的默认选项,以交互方式启动 域供给 domain provision

还有,输入正确的 DNS 服务器地址并且为 Administrator 账号设置强密码。如果使用的是弱密码,则域供给过程会失败。

$ sudo samba-tool domain provision --use-rfc2307 –interactive

Samba Domain Provisioning

Samba 域供给

11、 最后,使用以下命令重命名或删除 Kerberos 认证在 /etc 目录下的主配置文件,并且把 Samba 新生成的 Kerberos 配置文件创建一个软链接指向 /etc 目录。

$ sudo mv /etc/krb6.conf /etc/krb5.conf.initial
$ sudo ln –s /var/lib/samba/private/krb5.conf /etc/

Create Kerberos Configuration

创建 Kerberos 配置文件

12、 启动并开启 Samba 活动目录域控制器后台进程

$ sudo systemctl start samba-ad-dc.service
$ sudo systemctl status samba-ad-dc.service
$ sudo systemctl enable samba-ad-dc.service

Enable Samba Active Directory Domain Controller

开启 Samba 活动目录域控制器服务

13、 下一步,使用 netstat 命令 来验证活动目录启动的服务是否正常。

$ sudo netstat –tulpn| egrep ‘smbd|samba’

Verify Samba Active Directory

验证 Samba 活动目录

第四步: Samba 最后的配置

14、 此刻,Samba 应该跟你想像的一样,完全运行正常。Samba 现在实现的域功能级别可以完全跟 Windows AD DC 2008 R2 相媲美。

可以使用 samba-tool 工具来验证 Samba 服务是否正常:

$ sudo samba-tool domain level show

Verify Samba Domain Level

验证 Samba 域服务级别

15、 为了满足 DNS 本地解析的需求,你可以编辑网卡配置文件,修改 dns-nameservers 参数的值为域控制器地址(使用 127.0.0.1 作为本地 DNS 解析地址),并且设置 dns-search 参数为你的 realm 值。

$ sudo cat /etc/network/interfaces
$ sudo cat /etc/resolv.conf

Configure DNS for Samba AD

为 Samba 配置 DNS 服务器地址

设置完成后,重启服务器并检查解析文件是否指向正确的 DNS 服务器地址。

16、 最后,通过 ping 命令查询结果来检查某些重要的 AD DC 记录是否正常,使用类似下面的命令,替换对应的域名。

$ ping –c3 tecmint.lan       # 域名
$ ping –c3 adc1.tecmint.lan  # FQDN
$ ping –c3 adc1              # 主机

Check Samba AD DNS Records

检查 Samba AD DNS 记录

执行下面的一些查询命令来检查 Samba 活动目录域控制器是否正常。

$ host –t A tecmint.lan
$ host –t A adc1.tecmint.lan
$ host –t SRV _kerberos._udp.tecmint.lan  # UDP Kerberos SRV record
$ host -t SRV _ldap._tcp.tecmint.lan # TCP LDAP SRV record

17、 并且,通过请求一个域管理员账号的身份来列出缓存的票据信息以验证 Kerberos 认证是否正常。注意域名部分使用大写。

$ kinit [email protected]
$ klist

Check Kerberos Authentication on Domain

检查域环境中的 Kerberos 认证是否正确

至此! 你当前的网络环境中已经完全运行着一个 AD 域控制器,你现在可以把 Windows 或 Linux 系统的主机集成到 Samba AD 中了。

在下一期的文章中将会包括其它 Samba AD 域的主题,比如,在 Samba 命令行下如何管理你的域控制器,如何把 Windows 10 系统主机添加到同一个域环境中,如何使用 RSAT 工具远程管理 Samba AD 域,以及其它重要的主题。


via: http://www.tecmint.com/install-samba4-active-directory-ubuntu/

作者:Matei Cezar 译者:rusking 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你已经厌倦了每次重启 Linux 就得重新挂载 Windows 共享,读读这个让共享永久挂载的简单方法。

图片: Jack Wallen

在 Linux 上和一个 Windows 网络进行交互从来就不是件轻松的事情。想想多少企业正在采用 Linux,需要在这两个平台上彼此协作。幸运的是,有了一些工具的帮助,你可以轻松地将 Windows 网络驱动器映射到一台 Linux 机器上,甚至可以确保在重启 Linux 机器之后共享还在。

在我们开始之前

要实现这个,你需要用到命令行。过程十分简单,但你需要编辑 /etc/fstab 文件,所以小心操作。还有,我假设你已经让 Samba 正常工作了,可以手动从 Windows 网络挂载共享到你的 Linux 机器,还知道这个共享的主机 IP 地址。

准备好了吗?那就开始吧。

创建你的挂载点

我们要做的第一件事是创建一个文件夹,他将作为共享的挂载点。为了简单起见,我们将这个文件夹命名为 share,放在 /media 之下。打开你的终端执行以下命令:

sudo mkdir /media/share

安装一些软件

现在我们得安装允许跨平台文件共享的系统;这个系统是 cifs-utils。在终端窗口输入:

sudo apt-get install cifs-utils

这个命令同时还会安装 cifs-utils 所有的依赖。

安装完成之后,打开文件 /etc/nsswitch.conf 并找到这一行:

hosts: files mdns4_minimal [NOTFOUND=return] dns

编辑这一行,让它看起来像这样:

hosts: files mdns4_minimal [NOTFOUND=return] wins dns

现在你需要安装 windbind 让你的 Linux 机器可以在 DHCP 网络中解析 Windows 机器名。在终端里执行:

sudo apt-get install libnss-windbind windbind

用这个命令重启网络服务:

sudo service networking restart

挂载网络驱动器

现在我们要映射网络驱动器。这里我们必须编辑 /etc/fstab 文件。在你做第一次编辑之前,用这个命令备份以下这个文件:

sudo cp /etc/fstab /etc/fstab.old

如果你需要恢复这个文件,执行以下命令:

sudo mv /etc/fstab.old /etc/fstab

在你的主目录创建一个认证信息文件 .smbcredentials。在这个文件里添加你的用户名和密码,就像这样(USER 和 PASSWORD 替换为实际的用户名和密码):

username=USER

password=PASSWORD

你需要知道挂载这个驱动器的用户的组 ID(GID)和用户 ID(UID)。执行命令:

id USER

USER 是你的实际用户名,你应该会看到类似这样的信息:

uid=1000(USER) gid=1000(GROUP)

USER 是实际的用户名,GROUP 是组名。在(USER)和(GROUP)之前的数字将会被用在 /etc/fstab 文件之中。

是时候编辑 /etc/fstab 文件了。在你的编辑器中打开那个文件并添加下面这行到文件末尾(替换以下全大写字段以及远程机器的 IP 地址):

//192.168.1.10/SHARE /media/share cifs credentials=/home/USER/.smbcredentials,iocharset=uft8,gid=GID,udi=UID,file_mode=0777,dir_mode=0777 0 0

注意:上面这些内容应该在同一行上。

保存并关闭那个文件。执行 sudo mount -a 命令,共享就会挂载上。看看一下 /media/share,你应该能看到那个网络共享上的文件和文件夹了。

共享很简单

有了 cifs-utils 和 Samba,映射网络共享在一台 Linux 机器上简单得让人难以置信。现在,你再也不用在每次机器启动的时候手动重新挂载那些共享了。


via: http://www.techrepublic.com/article/how-to-permanently-mount-a-windows-share-on-linux/

作者:Jack Wallen 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如今,无论在家里或者是办公场所,不同的电脑之间共享文件夹已不是什么新鲜事了。在这种趋势下,现代操作系统通过网络文件系统的方式使得电脑间数据的交换变得简单而透明。如果您工作的环境中既有微软的Windows又有Linux,那么,一个共享文件及目录的方式便是通过一个跨平台网络文件共享协议:SMB/CIFS。Windows原生的支持SMB/CIFS,Linux也通过开源的软件Samba实现了SMB/CIFS协议。

在这篇文章中,我们将展示如何使用Samba共享文件夹。我们使用的Linux平台是Fedora或CentOS。这篇文章分为四部分。首先,我们在Fedora/CentOS环境下安装Samba。接着,我们讨论如何调整SELinux和防火墙配置以允许Samba的文件共享。最后我们介绍如何使用Samba来共享文件夹。

步骤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 这个地址来访问。


via: http://xmodulo.com/share-directory-samba-fedora-centos.html

作者:Kristophorus Hadiono 译者:wwy-hust 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

本文全面详细地向你描述了在Ubuntu中如何实现局域网内的文件夹共享

你的家中是不是有多台电脑?当你需要从一台Ubuntu电脑向另一台电脑传输数据时,是不是必须用到U盘或SD卡?你是否也觉得这个方法很烦人?我想肯定是。本文的目的就是使你在局域网内快速方便地传输文件、文档和其它较大的数据,以节省你的宝贵时间。只需一次设置,然后轻点鼠标,你就可以自由地在Ubuntu和Windows之间共享文件,当然这对其它Linux系统同样使用。不要担心,这很容易操作,不会花费太多时间。

除此之外,尽管本文是在Ubuntu上进行实践,但这个教程在其它Linux系统上同样有用。

在Ubuntu上实现局域网共享文件夹

如果你的系统是Ubuntu 14.04、14.10或12.04,有两个方法可以使你通过局域网在搭载Windows或其他Linux的电脑上共享本地文件。

  • 对局域网中的每个用户提供无密码共享
  • 仅限特定访问,提供文件夹密码保护

这篇文章包括两种方法,你可以选择你想用的那种。

1. 局域网无密码共享文件夹

步骤一:

为了在Ubuntu上实现局域网共享文件夹,右键点击打算共享的文件夹,并选择“Local Network Share(本地网络共享)”:

可能有用的故障解决方案:如果在右键菜单中看不到“Local Network Share”的选项,那就新建一个终端,使用下面的命令去安装nautlius-share插件:

sudo apt-get install nautilus-share

然后重启Nautilus。可以选择注销再登录,或者使用这个命令:

nautilus -q

步骤二:

一旦点击“Local Network Share”,就会出现共享文件夹的选项。只需选中“Share this folder(共享该文件夹)”这一项:

可能的故障解决方案:如果提示共享服务还未安装,就像下图所示,那就点击安装服务,按照提示操作。

步骤三:

当选中“Share this folder”的选项,就会看到按钮“Create Share(创建共享)”变得可以点击了。你也可以“Allow others to create and delete fies in this folder(允许其他用户在共享文件夹中编辑文件)”。选项“Guest access(允许访客访问)”也是如此。

你会看到文件夹图标已经显示为共享的。如果要停止共享文件夹,只需取消“Share this floder”这个选项。

这个方法就是这么简单,使得局域网中的任何人都可以访问共享文件夹中的文件。在正常情况下,你会选择这种方式。因为,家用局域网中的电脑通常都是可信电脑。但情况也不总是这样。如果你只是想特定的用户才能访问怎么办?这个时候就需要Samba服务器了。我们在本文的第二部分讨论这种方法。

2. 在Ubuntu上使用密码保护实现局域网共享文件夹

为了达到这个目的,首先需要配置Samba服务器。事实上,在这篇教程的前一部分我们已经用到了Samba,只是我们没有刻意强调。在介绍如何在Ubuntu上搭建Samba服务器实现局域网共享的方法之前,先快速预览一下Samba到底是什么。

Samba是什么?

Samba是一个允许用户通过网络共享文件、文档和打印机的软件包,无论是在Linux、Windows,还是Mac上。它适用于所有的主流平台,可以在所有支持系统上流畅运行。下面是维基百科的介绍:

Samba是一款重新实现SMB/CIFS网络协议的自由软件,最初由安德鲁·垂鸠开发。在第三版中,Smaba不仅支持通过不同的Windows客户端访问及分享SMB的文件夹及打印机,还可以集成到Windows Server域,作为主域控制器(PDC)或者域成员。它也可以作为活动目录域的一部分。

在Ubuntu上安装Samba服务器

你可以很方便地在Ubuntu电脑上安装Samba。安装前,请先更新系统以便安装任何可用的更新。

sudo apt-get update && apt-get upgrade

然后按照这条命令安装samba和少量所需的软件包:

sudo apt-get install samba samba-common system-config-samba python-glade2 gksu

一旦安装完成Samba服务器,就可以从图形界面配置Samba来分享文件。

在Ubuntu上配置Samba服务器

从dash中打开Samba配置工具:

进入到Preference->Server Settings。尽管默认已经设置好,可能就是你需要的。但在某些情况下你可能需要做一些改动。

在Server Setting中可以看到两个选项卡,‘Basic’和‘Security’。在Basic选项卡下的选项含义如下:

  • 工作组 - 用户要连接的电脑所在工作组的名字。比如,如果你想连接到一台Windows电脑,你就要输入Windows电脑的工作组名字。在Windows的Samba服务器设置中,已经默认设置好统一的工作组名字。但如果你有不同的工作组名字,就在这个字段中输入自定义的工作组名字。(在Windows 7中获取工作组名字,右击计算机图标,进到属性,就能看到Windows工作组名字。)
  • 描述 - 其他用户看到的你的电脑名字。不要使用空格或不适用于网络的字符。

设置samba服务器允许‘Guests’可用是不明智的,所以没必要修改安全设置,保持原样即可。

这就搞定了!你已经搭建好Samba服务器,距离实现网络共享第一个文件夹的目标不远了!

为网络文件共享创建一个系统用户

现在我们需要为网络共享文件创建一个系统用户。下面是非常简单的步骤:

  • 在Systems Settings下点击User Accounts
  • 点击unlock使其可用,以及+(加号)图标。
  • 点击+(加号)图标,创建一个新的系统用户。

如上图所示,需要输入‘Full name’。当你输入‘Full name’时,Username会自动填充为Full name。因为创建这个用户是为了共享文件,所以还要指定Account Type为‘Standard’。

完成上述步骤,点击添加,你就创建好一个系统用户。这个用户还没有被激活,所以需要为其设置密码来激活。确保Users accounts界面已经解锁。点击尚不可用的账户,输入一个新密码,然后确认密码,点击Change。

耶!到目前为止我们已经安装并配置好Samba,已经创建了一个系统用户以通过这个账户在网络上共享文件,而且也已经激活了新用户。现在来到配置Samba的最后一步,然后就可以共享文件夹了。

添加Samba新用户

打开Samba,在Preference先点击Samba Users。填写弹出的对话框,下面是其中几个字段的说明:

Unix Username - 在这种情况下,我选择刚才创建的用户。

Windows Username - 输入你要访问的Windows电脑的用户名。

Samba Password - 输入你要访问的Windows电脑的密码。

完成后点击OK。现在做个深呼吸。你已经在Samba的帮助下成功创建一个网络。然后重启网络或Samba服务,准备好和其它电脑共享文件。

sudo restart smbd && sudo restart nmbd

通过网络共享文件夹或文件

在图形用户界面下通过Samba共享文件是很简单的。点击加号图标,会看到如图所示的对话框:

填写完这些字段。在‘Directory’中,浏览要共享的文件夹。你会看到的字段的含义如下:

  • Share name 是其它人会看到的文件夹名字。
  • Description 是要共享内容的简单描述。
  • Writeable 默认情况下共享的文件夹是‘read only’。如果允许网络上的其他用户修改它们,设置为writable。
  • Visiable 当你点击Visiable时,就像它的名字一样,共享文件夹就对网络上的其他人可见。

现在你可以设置共享文件夹的权限。点击‘Access’选项,选择想要共享文件夹的用户。当你选择对所有人允许访问后,这个文件夹就对网络上的所有人可见。

最后点击OK,完成共享。现在这个文件夹就与你想要共享的用户实现共享。你已经完成了网络共享文件。还有其它要做的吗?对!还不知道如何从网络上移除文件夹?

移除共享文件夹

在网络共享一段时间后,我们也需要移除其中的一些文件夹。操作很简答,下面就是我们要做的。

全部搞定!我们也可以使用终端进行网络文件共享,但这样没有本文介绍的方法这么容易。如果你确实想知道命令行操作,我会再写一篇关于在Linux上使用命令行实现网络文件共享的文章。

所以,你是怎么找到这篇教程的呢?我希望看了这篇教程你可以很容易地在Ubuntu和Windows之间共享文件。如果你有任何问题或建议,请在评论里说出来。


via: http://itsfoss.com/share-folders-local-network-ubuntu-windows/

作者:Mohd Sohail 译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

根据Samba项目网站所述,Samba是一个开源/自由软件套件,提供了到SMB/CIFS客户端的无缝文件和打印服务。不同于其它SMB/CIFS网络协议部署(如HP-UX的LM服务器,OS/2的LAN服务器,或者VisionFS),Samba(及其源代码)是可以自由获取的(终端用户无需付费),允许在Linux/Unixt服务器和Windows/Unix/Linux客户端之间互操作。

出于这些理由,Samba在不同操作系统(除了Linux)共存的网络中首选的文件服务器解决方案——最常见的结构是多个微软Windows客户端访问安装有Samba的Linux服务器,该情形也是本文将要解决的问题。

请注意,另外一方面,如果我们的网络仅仅是由基于Unix的客户端(如Linux,AIX,或者Solaris,等等)组成,我们可以考虑使用NFS(尽管在此种情况下Samba仍然是可选方案),它可以提供更快的速度。

在Debian和CentOS中安装Samba

在我们开始安装之前,我们可以使用操作系统中的包管理系统查询Samba的信息:

在Debian上:

# aptitude show samba

在CentOS上:

# yum info samba

在下面的屏幕截图中,我们可以看到‘aptitude show samba’的输出(‘yum info samba’会产生类似的结果):

现在让我们来安装Samba吧(下面的截图来自Debian 7[Wheezy]服务器上的安装):

在Debian上:

# aptitude install samba

在CentOS上:

# yum install samba

添加用户到Samba

对于4.x之前的版本,需要建立一个本地Unix帐号以便将其添加到Samba:

# adduser <username> 

接下来,我们需要添加用户到Samba,使用带有‘-a’选项的smbpasswd命令来完成,该命令指出后面的用户名将被添加到本地smbpasswd文件中。我们将被提示输入密码(该密码无需和本地Unix帐号的密码相同):

# smbpassword -a <username> 

最后,我们将赋予用户xmodulo到我们系统上某个目录的访问权限,该目录将被用于作为此用户的Samba共享(如有需要,也可以共享给其它用户)。要完成该工作,请使用文本编辑器(如Vim)打开/etc/samba/smb.conf文件,导航到文件末,然后创建一个带有描述名称的区块(使用方括号将其括起来),如[xmodulo]:

# SAMBA SHARE
[xmodulo]
path = /home/xmodulo
available = yes
valid users = xmodulo
read only = no
browseable = yes
public = yes
writeable = yes

我们现在必须重启Samba—以防万一—使用testparm命令来检查smb.conf文件的语法错误:

# service samba restart
# testparm 

如果有错误,在testparm结束后会报告。

在Windows 7计算机上将Samba共享映射为一个网络驱动器

在计算机上右击,然后选择“映射网络驱动器”:

输入安装了Samba的机器的IP地址,后跟共享名(就是smb.conf文件中方括号括起来的那个名称),然后确保选中了“使用不同的凭据连接”:

输入先前用‘smbpasswd -a’设置的用户名和密码:

进入计算机,然后检查网络驱动器是否被正确添加:

作为测试,让我们从Samba的手册页创建一个pdf文件,然后保存到/home/xmodulo目录:

接下来,我们可以验证该文件是否可以从Windows读取:

然后检查我们是否能够用默认的pdf阅读器打开它:

最后,让我们看看我们是否能在Windows中刚刚映射的驱动器上保存文件。我们将打开change.log文件,该文件列出了Notepad++的功能:

然后试着将它作为普通文本文件(.txt扩展名)保存到Z:\;然后让我们看看该文件是否能在Linux中看到:

启用磁盘配额

作为第一步,我们需要验证当前内核是否已经编译为支持配额:

# cat /boot/config-$(uname -r) | grep 

每个文件系统最多有5种类型,能够强制使用的配额限制:用户软限制,用户硬限制,组软限制,组硬限制,以及宽限期限。

我们现在将为/home文件系统启用磁盘配额,在/etc/fstab文件对应的/home文件系统行现存的默认选项后添加usrquota和grpquto挂载选项,然后重新挂载文件系统以令修改生效:

接下来,我们需要在/home目录创建两个文件以用于作为用户和组配额的数据库文件:aquota.useraquota.group。然后,我们将生成启用配额后每个文件系统的当前磁盘使用表:

# quotacheck -cug /home
# quotacheck -avugm 

尽管已经为/home文件系统启用磁盘配额,我们还没有给任何用户或组设置权限。检查现有用户/组的配额信息:

# quota -u <username>
# quota -g <groupname> 

在这最后几步中,使用quotatool命令来为每个用户和/或组来分配磁盘配额(注意,该任务也可以使用edquota来完成,但是quotatool更为直接,更不易犯错)。

要为用户xmodulo设置软限制为4MB,硬限制为5MB,xmodulo组为10MB/15MB:

# quotatool -u xmodulo -bq 4M -l '5 Mb' /home
# quotatool -g xmodulo -bq 10M -l '15 Mb' /home 

我们可以在Windows 7中看到结果(4.00MB中有3.98MB空闲):


via: http://xmodulo.com/2014/08/samba-file-server-windows-clients.html

作者:Gabriel Cánepa 译者:GOLinux 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出