• Samba通过ad域进行认证并限制空间大小


    最近正在做单位电脑的AD域管理。

    为漫游用户文件,研究配置Samba通过ad域进行认证并限制空间大小。

    参考了很多资料,现总结如下:

    DC:windows server 2016(配置安装域控制器)略...

    samba:Centos 7 server 1810(指定IP,其中DNS1地址指定为DC的地址i,DNS2指定为可用的DNS服务器地址。)

    域名:xyz.local

    dc计算机名:dc

    linux计算机名:file

    一:前期准备

    1.准备分区

    因为磁盘配额只能在一块单独的分区上启用,所以笔者专门添加了一块分区挂载到home目录下,这点要注意。

    https://www.cnblogs.com/jackadam/p/8213712.html

    可以按这篇文章的介绍,挂在新的分区,或新的硬盘。

    一般服务器都跑在虚拟化的服务器上,所以添加个新的虚拟硬盘,也是这样添加硬盘。

    2.准备linux

    我们使用samba的ads模式加入域并提供共享,那么就需要安装若干软件来实现这个功能。

    yum -y install pam_krb5* krb5-libs* krb5-workstation* krb5-devel* krb5-auth samba samba-winbind* samba-client* samba-swat* bind-utils quota
    

     其中主要的有samba系列,krb5系列,winbind系列,bind-utils是网络工具,quota是磁盘限额工具

    二:samba加入AD域(NT4域)

    1.配置DNS

    这里并不是配置配置DNS服务器地址,是配置DNS搜索域。

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    

     在最后添加一行:

        SEARCH="your_domain_name"
    

     本例是

        SEARCH=“xyz.local"
    

     重启linux,或者使用命令 systemctl restart network 来重启网络。

    2.验证DNS

    使用下面的的命令查看DNS配置参数

    cat /etc/resolv.conf
    

     应该有至少两行:

    search xyz.local
    nameserver 10.99.**.**
    

     第一行是搜索域,第二行是dns服务器地址指向DC,如果你还有可用的DNS地址,可能会在第三行,第四行。

    3.查看(配置)主机名

    使用命令查看主机名

    hostname
    

     如果主机名需要修改可以使用以下命令

    hostnamectl set-hostname newname
    

     newname就是新的主机名。

    4.测试DNS

    能ping 通  dc  并自动解析为 dc.xyz.local即可

    ping  dc
    ping  dc.xyz.local
    

    5.使用命令行加入域

    authconfig --enablewinbind --enablekrb5 --enablewinbindauth --krb5realm=XYZ.LOCAL --krb5kdc=dc.xyz.local  --enablekrb5kdcdns --enablekrb5realmdns --smbsecurity=ads --smbrealm=xyz.local --smbservers=dc.xyz.local --winbindtemplateshell=/bin/bash --winbindjoin=administrator --enablewinbindusedefaultdomain --disablewinbindoffline --smbworkgroup=XYZ --enablemkhomedir --update
    

     根据提示输入域管理员密码即可加入域。

    但是提示是有错误

    [root@file ~]authconfig --enablewinbind --enablekrb5 --enablewinbindauth --krb5realm=ZZCLD.LOCAL --krb5kdc=dc1.zzcld.local  --enablekrb5kdcdns --enablekrb5realmdns --smbsecurity=ads --smbrealm=zzcld.local --smbservers=dc1.zzcld.local --winbindtemplateshell=/bin/bash --winbindjoin=administrator --enablewinbindusedefaultdomain --disablewinbindoffline --smbworkgroup=ZZCLD --enablemkhomedir --update
    [/usr/bin/net join -w XYZ -S dc.xyz.local -U administrator]
    Enter administrator's password:
    Using short domain name --XYZ
    Joined 'FILE' to dns domain 'xyz.local'
    No DNS domain configured for file. Unable to perform DNS Update.
    DNS update failed: NT_STATUS_INVALID_PARAMTER
    

     尽管有提示错误,但是貌似是DNS注册失败而已。

    自己在DC里面注册一个DNS解析就好了。

    6.测试域身份

    wbinfo -t 可以查看信任关系。

    checking the trust secret  via RPC calls succeeded
    使用wbinfo –u 可以列出AD中注册的帐号信息
    Wbinfo –g可以返回AD中的组信息

    7.手动补全配置

    vi /etc/samba/smb.conf
    

     在Global当中添加以下两行

    Winbind enum users = yes
    Winbind enum groups = yes
    

    在home当中添加以下一行

    path = /home/%U
    

    这是authconfig当中没有设置的,经过几天的测试,确实就是这里没有设置,导致了显示共享目录,却无法打开。

    三:测试登录域

    使用putty登录linux,使用域用户即可登录,并且会自动创建用户的主目录。

    建议使用administrator登录,自动创建用户家目录,为后面磁盘配额做准备。

    四:配置磁盘配额

    1.编辑fstab

    按下面格式填入/etc/fstab ,格式是XFS格式

    /dev/mapper/storage-storage /storage                       xfs     defaults        0 0

    修改为:

    /dev/mapper/storage-storage /storage                       xfs    defaults,usrquota,grpquota

    重启linux,使设置生效。

    2.设置磁盘配‘额

    我们使用了XFS格式的磁盘,所以磁盘配额命令有区别了。

    xfs_quota -x -c "limit -u bsoft=950M bhard=1024M administrator" /home
    xfs_quota -x -c "report -ubin" /home
    

     第一行是设置administrator的磁盘限额。

    第二行是查看磁盘限额。

    3.将设置的磁盘配额作为模板设置给新用户

    刚才我们配置了--enablemkhomedir参数来给ssh登录创建用户家目录。但是samba登录的时候不会自动创建用户家目录。

    所以我们使用samba的root preexec 参数来执行samba登录脚本。来确保用户仅使用samba共享访问服务器时能自动创建家目录。

    首先编写mkhome.sh

    vi /root/mkhome.sh
    
    #!/bin/bash
    user=$1
    group=$2
    home=/home/$1
    
    if [ ! -d $home ]; then
    mkdir -p $home
    chown $user $home
    chgrp $gropu $home
    chmod 744 $home
    edquota -p administrator -u $user
    fi
    

     然后编辑smb.conf

    vi /etc/samba/smb.conf
    
    ;在homes里面加入
    
    path = /home/$U
    root preexec = /root/mkhome.sh %U %G
    

     设置mkhome.sh为700权限

    chmod 700 /root/mkhome.sh
    

     重启samba

    systemctl restart smb
    

     4.验证配置

    在其他windows计算机,登录域(非刚才的administrator),然后访问samba服务器。

    会看到以用户名命名的一个共享目录。

    进去是有权限读写的。

    在samba服务器查看磁盘配额。虽然用户ID看不出是谁,但是可以看到磁盘配额是和administrator一样的1G。

    另一个磁盘配额检查命令

    repquota /storage

    /storage 是需要查询配额的目录。

    5.后期修改磁盘配额

    使用下面的命令,修改域用户的磁盘配额。用户名是带域名的完整用户名。

    xfs_quota -x -c "limit -u bsoft=950M bhard=1024M test@xyz.local" /home

    五:后记

    参考了很多文章,就不一一列举了。

    但是还有遗留问题:

    1.为什么net ads join 提示DNS注册失败?

    是因为linux使用了指定IP?还是某些地方没有配置好。

    2.如果先进行ssh登录,那么自动生成的目录蛋没有磁盘配额?

    貌似没有,因为默认的创建用户家目录应该不会配置磁盘配额。

    3.手动更新的3行配置,能否也使用authconfig配置进去呢?

    这个需要继续研究。

    4.samba集群该怎么配置?

    这个也要继续研究。

    5.查到了一些配置selinux的资料,还要实验测试。

    重要参考文献:

    https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member

    https://blog.51cto.com/rainbird/197794

    https://blog.51cto.com/rainbird/197509

  • 相关阅读:
    Android Developer API Guides
    Ubuntu 12.04 下安装 VirtualBox
    C++的异常处理
    JZOJ 4246. 【五校联考6day2】san
    JZOJ 4245. 【五校联考6day2】er
    JZOJ 4244. 【五校联考6day2】yi
    JZOJ 4228. 【五校联考3day2】C
    JZOJ 4227. 【五校联考3day2】B
    JZOJ 4226. 【五校联考3day2】A
    JZOJ 4235. 序列
  • 原文地址:https://www.cnblogs.com/jackadam/p/11448497.html
Copyright © 2020-2023  润新知