サンバ:エンタープライズクラスのファイル共有サーバーを構築するための承認

EDITORIAL言葉

 

社内のファイルサーバの実際、中小インターネット企業のための多くのソリューション、主にこの一つの選択またはFTPで、またはVSFTPが、個人的にはそのことが、最大のようではありませんので、彼:まず、背景の物語ということです単純なサンバの設定に関して、選択、使用中に、ガチョウの燃焼は、様々な要件のバーンアウトで作られました。だから私は、ほとんどの企業のニーズを満たすために事をそのようなことを書くことにしました。

記事のエンタープライズレベルのタイトルは、1自体はそれほど業務用、エンタープライズクラスの問題なしに由来しています。第二に、それは包接錯体を承認するだろう、それはまだ何も悪いことではありません。

とにかく、我々は最初の本当の発言権を達成するのではなく、打撃を回帰し、

 

 

要求の説明

 

XXXのインターネット企業がある場合は、以下に示すように、シンプルな組織構造です。

 

下図のように今では、ファイルサーバーに必要:

 

説明:

1.アカウントは、次の3つのカテゴリに分かれています。管理者/一般/読み取り専用、我々は、ユーザーが下線ハイフンを作成することはできません、またはWindows BUGを持っていることに注意してください

 

2.分野別ディレクトリのパーミッションを次のように

権限を参照してください。他の人に代わって、カタログで見ることができますが、開くことができません。

アクセス読む:ディレクトリにファイルを表示する機能が、しかし、変更することはできません。

自分を書く:あなたのアップロードしたファイルは削除するように変更することができます。

他の誰かを書く:誰かがファイルを削除するように変更することができますアップロードしました。

 

3.公開ディレクトリのパーミッション:

すべてのユーザーが公開ファイルに表示され、すべてのファイルを読み取ることができます。

部門を所有することができ、読み取り専用のユーザーアカウントのディレクトリに加えて、ファイルを書き込むことができます。

各部門の管理者アカウントは、自分の部署のすべてのファイルに何かを行うことができます。

最後のステップは、実際にzcadminユーザーであるもちろんZCも高い権限を持っている、あなたはどこにでも書くことができ、やってやって考えて、ボスです。

 

 

第1段階:分野別基本ディレクトリ権の割り当て

 

ディレクトリ管理関係や顧客関係、我々は先に行くと良いユーザーとディレクトリを設計するために働くことができます。

私はここで使用されることに注意してくださいすることはCentOSの7.5で、一般的に使用されているCentOSのシリーズは似ている必要があり、違いは、コマンドを開始する可能性があります。

1.サンバをインストールします。

yumはサンバサンバ・クライアントサンバ-SWATをインストール-y

 

2.ディレクトリを作成します。

MKDIR / 会社
CD /会社/
mkdir 总裁办文件 研发部文件 人事行政部文件 财务部文件 公共文件
cd 公共文件/
mkdir 财务部共享 研发部共享 人事行政部共享 总裁办共享

查看目录结构:

tree -N /company/

结构如图:

 

3. 添加用户

# 添加组
groupadd zcgroup
groupadd devgroup
groupadd hrgroup
groupadd fdgroup

# 添加用户
useradd -g zcgroup -s /sbin/nologin zc
useradd -g zcgroup -s /sbin/nologin zcread
useradd -g zcgroup -s /sbin/nologin zcadmin

useradd -g devgroup -s /sbin/nologin dev
useradd -g devgroup -s /sbin/nologin devread
useradd -g devgroup -s /sbin/nologin devadmin

useradd -g hrgroup -s /sbin/nologin hr
useradd -g hrgroup -s /sbin/nologin hrread
useradd -g hrgroup -s /sbin/nologin hradmin

useradd -g fdgroup -s /sbin/nologin fd
useradd -g fdgroup -s /sbin/nologin fdread
useradd -g fdgroup -s /sbin/nologin fdadmin

 

4. 修改目录权限:

cd /company/

# 修改目录权限
chmod -R 1775 总裁办文件 研发部文件 人事行政部文件 财务部文件 公共文件

# 修改所有者所属组
chown -R devadmin.devgroup 研发部文件
chown -R hradmin.hrgroup 人事行政部文件
chown -R fdadmin.fdgroup 财务部文件
chown -R zcadmin.zcgroup 总裁办文件

 

5. 修改主配置文件:/etc/samba/smb.conf

##############################################################################
# 全局配置
##############################################################################
[global]
        workgroup = WORKGROUP
        server string = Samba Server Version %v
        netbios name = Samba
        log file = /var/log/samba/samba_log.%m
        max log size = 50
        security = user
        passdb backend = tdbsam
        include = /etc/samba/user/%U.smb.conf

注意:红色部分配置说明我们每个用户登录以后其实是单独的配置文件,配置文件为 /etc/samba/user/用户名.smb.conf

 

6. 添加用户单独配置文件:

mkdir /etc/samba/user
cd /etc/samba/user

我们这里以研发部为例,普通用户 dev 的配置文件:dev.smb.conf

[研发部文件]
    comment = dev config
    path = /company/研发部文件/
    public = no
    admin users = devadmin
    valid users = @devgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

 

管理员用户 devadmin 的配置文件:devread.smb.conf

[研发部文件]
    comment = dev admin config
    path = /company/研发部文件/
    public = no
    admin users = devadmin
    valid users = @devgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

 

只读用户 devread 的配置文件:devadmin.smb.conf

[研发部文件]
    comment = dev read config
    path = /company/研发部文件/
    public = no
    admin users = devadmin
    valid users = @devgroup
    writable = no

简单做个说明:

a. 掩码设为 1777,目的是让所有有权用户都可随意进出所属部门下面全部目录(最后一个 7 是为 zc 这种用户准备的)。

b. 创建目录的人具有该目录以及该目录下文件的绝对控制权。这意味着假设 dev 用户创建一个 dev 目录,devadmin 去 dev 目录下新建一个 test 文件,由于 dev 用户具有 dev 目录的绝对控制权,所有他是能够修改删除该文件的。但是如果这个文件不在 dev 下面 dev 用户就至于查看权限。

这种情形是不可避免的,在 Samba 中我们应该注重文件夹的使用。最好是基础文件夹由 admin 账户建立。

c. 配置在 admin users 中的管理员账户拥有最高权限,该共享下任何文件都能修改删除。

d. writable = no,直接只读,不需要再分配其它权限。

e. 最后说说为啥要即使同样的配置也分为单独的文件,目的是为了分开管理,这样我们想调整哪个用户改哪个文件即可。

最终配置如图:

 

7. 将系统用户添加到 Samba 中:

smbpasswd -a dev
smbpasswd -a devadmin
smbpasswd -a devread
smbpasswd
-a hr smbpasswd -a hradmin smbpasswd -a hrread
smbpasswd
-a fd smbpasswd -a fdadmin smbpasswd -a fdread
smbpasswd
-a zc smbpasswd -a zcadmin smbpasswd -a zcread

查看用户:

pdbedit -L

如果想删除某个用户,则只需:

pdbedit -x 用户名

 

8. 至此,我们完成了第一个阶段,就是每个目录拥有了三个角色,普通 / 管理员 / 只读。

 

 

第二阶段:总裁办用户其它权限

 

我们根据权限表知道,总裁办出来只读账户,其它账户是具备其他目录的读写权限的。

这意味着,zcadmin 得具备其它目录 admin 的权限,而 zc 用户得具备其它目录的普通权限。

1. 将用户加入各个目录的组:

usermod -a -G devgroup zc
usermod -a -G devgroup zcadmin
usermod -a -G hrgroup zc
usermod -a -G hrgroup zcadmin
usermod -a -G fdgroup zc
usermod -a -G fdgroup zcadmin

 

2. 修改 zc.smb.confzcadmin.smb.conf

[总裁办文件]
    comment = zc config
    path = /company/总裁办文件/
    public = no
    admin users = zcadmin
    valid users = @zcgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

[研发部文件]
    comment = zc config
    path = /company/研发部文件/
    public = no
    admin users = devadmin,zcadmin
    valid users = @devgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

[人事行政部文件]
    comment = hr config
    path = /company/人事行政部文件/
    public = no
    admin users = hradmin,zcadmin
    valid users = @hrgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

[财务部文件]
    comment = fd config
    path = /company/财务部文件/
    public = no
    admin users = fdadmin,zcadmin
    valid users = @fdgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

到这一步的时候我做了如下测试:

a. devadmin 用户登录,在 研发部文件 中创建 admin 目录和 admin 文件。

b. 切换到 dev 用户,尝试删除 admin 目录和 admin 文件,均提示权限不足,进入 admin 目录创建 dev 文件,在外层创建 dev 目录和 dev 文件。

c. 切换 zc 用户, 尝试删除 研发部文件 中任意文件,均提示无权限,去 admin 目录创建 zc 文件,在外层创建 zc 目录和 zc 文件。

d. 切换 devadmin 和 zcadmin 进去 研发部文件 中删除任意文件均可。

此时就实现了普通用户只能删除自己的文件,管理员可以管理所有。

 

 

第三阶段:公共文件 

 

这其实是最麻烦的需求,其实通常对于这种目录我们最好的出路方式就是除了管理员,各自能够删除修改各自的就行。

但是总有例外,有时需求来了挡都挡不住,所以这里给出最复杂的设计。

1. 修改目录权限:

cd /company/公共文件

chown -R devadmin.devgroup 研发部共享
chown -R hradmin.hrgroup 人事行政部共享
chown -R fdadmin.fdgroup 财务部共享
chown -R zcadmin.zcgroup 总裁办共享

值得注意的是,此时 公共文件 这个目录的用户和组依然是 root,我们不会去修改它。

 

2. 修改主配置文件,添加公共配置:smb.conf

##############################################################################
# 全局配置
##############################################################################
[global]
        workgroup = WORKGROUP
        server string = Samba Server Version %v
        netbios name = Samba
        log file = /var/log/samba/samba_log.%m
        max log size = 500
        security = user
        passdb backend = tdbsam
        include = /etc/samba/common.cmb.conf
        include = /etc/samba/user/%U.smb.conf

在我们导入单个用户配置之前,我先导入这个公共配置,该配置意味着所有用户都具有。如果后面的用户不要或者权限不对,我们都可以在单独的用户配置的文件里面复写它。

值得注意的是,导入顺序很重要,这意味着谁复写谁。

 

3. 增加 common 配置:/etc/samba/common.cmb.conf

[公共文件]
    comment = common config
    path = /company/公共文件/
    public = no
admin users = zcadmin valid users
= @zcgroup,@devgroup,@hrgroup,@fdgroup writable = yes create mask = 1777 directory mask = 1777 force create mode = 1777 force directory mode = 1777

我们默认给写权限,所以用户都可以在自己部门的目录下修改删除自己的文件。

当然,zcadmin 这个是全部的管理员,所以我们这里直接就给他指定了。

 

4. 只读用户复写权限,如:devread.smb.conf

[研发部文件]
    comment = dev read config
    path = /company/研发部文件/
    public = no
    admin users = devadmin
    valid users = @devgroup
    writable = no

[公共文件]
    comment = common config
    path = /company/公共文件/
    public = no
    valid users = @zcgroup,@devgroup,@hrgroup,@fdgroup
    writable = no

直接复写为只读权限!

 

5. 普通用户的权限本身就和默认的权限一致,所以我们不需要再度去修改。

 

6. 管理员用户相比比较复杂,如果授权整个目录就会导致所有目录都能管理。

所以我这里给出的方法是除了共享文件作为管理员账户的一个项目外,另外里面对于的部门也作为单独项目授权。

但是为了不显示两个这样的目录,我们将单独授权的目录隐藏。

当然这里需要排除 zcadmin,因为前面已经指定了,他就是全部的管理员,我们修改另外三个管理员配置。

这里以 devadmin 为例:devadmin.smb.conf

[研发部文件]
    comment = dev admin config
    path = /company/研发部文件/
    public = no
    admin users = devadmin
    valid users = @devgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777

[公共文件-研发部共享]
    comment = common config
    path = /company/公共文件/研发部共享/
    public = no
    admin users = zcadmin,devadmin
    valid users = @zcgroup,@devgroup,@hrgroup,@fdgroup
    writable = yes
    create mask = 1777
    directory mask = 1777
    force create mode = 1777
    force directory mode = 1777
browseable = no

 

最终达到的效果:

a. 部门普通用户打开公共文件,能够访问所有文件夹。能够在自己部门的目录修改删除自己的文件。

b. 部门管理员能够在公共文件自己的部门目录下任意删改。对于其它部门目录只读。

c. zc 用户能够在公共文件下所有目录增删改自己的文件。

d. 只读账户在公共文件下全局只读。

 

7. 至此,所有需求全部完成。

 

 

小结

 

这篇文章写了我差不多两天,其中各种测试,windows 测试还非常麻烦。但是总的来说能够满足大部分需求。

当然,Samba 目前来说有个很大的问题,我依然没有找到一款能够像连接 FTP 一样的客户端来连接 Samba,如果知道的朋友可以分享一下。

关于其它 Samba 的一些知识如果不知道可以去简单了解一些,本文还是针对直接有需要的朋友。

最后,如果你觉得还可以,给个推荐也是可以的。

おすすめ

転載: www.cnblogs.com/Dy1an/p/11265676.html