Jam*_*mie 27

[编辑] 我已经测试了Ubuntu 10.04 Server (21/May/2010)的完整版本。

我已将驻留在 Windows 网络上的Ubuntu 10.04 Server LTS配置为使用活动目录对登录进行身份验证,然后挂载 Windows 共享以用作主目录。

这是我从 Ubuntu 的初始安装开始所做的。

  1. 下载并安装Ubuntu Server 10.04 LTS
  2. 获取更新

    # sudo apt-get update && sudo apt-get upgrade

  3. 安装 SSH 服务器 ( sshd)

    # sudo apt-get install openssh-server

    有些人会争辩说,您应该通过禁用 root 登录来“锁定 sshd”。我想如果你足够聪明来破解一个 ssh 会话以获得 root 密码,你可能不会因为PermitRootLogin no/etc/ssh/sshd_config文件中添加而受到阻碍。如果您偏执或不完全相信,请编辑文件或进行以下操作:

    # (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."

  4. 安装所需的包

    # sudo apt-get install winbind samba smbfs smbclient ntp krb5-user

  5. 做一些基本的网络清理工作,为即将到来的特定包配置做准备。

    1. 确定活动目录服务器(对于 samba)的 Windows 域名、DNS 服务器名称和 IP 地址。为方便起见,我为 windows 域和 DNS 服务器设置了环境变量。对我来说是(我的 AD IP 地址是 192.168.20.11):

      # WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11

      如果您想弄清楚您的域和 DNS 服务器是什么(我是承包商并且不了解网络),请查看此有用的参考资料

    2. 我们需要在新网络上命名 Linux 机器,这是通过编辑主机文件来完成的(将 DNS 替换为 Windows DNS 的 FQDN):
      # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts

    3. 我们还应该告诉即将安装的服务在哪里可以找到领导者:某些网络将具有 netbios 名称查找服务,但为了以防万一,请在您的/etc/hosts文件中添加一个显式条目,在我的配置中,我在第三个 (3) 中添加了该条目线:
      # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts

    4. Windows 和 Linux 机器的身份验证和文件共享过程需要让它们的时钟一致。使用 NTP 服务执行此操作,在 Ubuntu 的服务器版本上,NTP 服务已安装并配置为(1) 个 NTP 服务器。在 Ubuntu 之前添加你的(或完全替换它)。我加入的网络也有提供 NTP 服务的 DNS 服务器。
      # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
      重新启动 NTP 守护进程:
      # sudo /etc/init.d/ntp restart

  6. Kerberos 配置。
    此处遵循的说明不应按字面理解:当您编辑文件时,MYDOMAIN.LOCAL和的值srv1.mydomain.local需要替换为适合您的网络的值,但请注意在使用 UPPERCASE 的地方需要 UPPERCASE
    如果在apt-get installKerberos期间您有洞察力来正确回答“默认域”问题,那么对您来说很好,否则您将不得不执行以下操作。

    1. 编辑(之前安装在上面)/etc/krb5.conf文件。

      1. 找到该[libdefaults]部分并更改键值对:

        [libdefaults]
        default_realm = MYDOMAIN.LOCAL

      2. 将以下内容添加到[realms]文件的部分:

        MYDOMAIN.LOCAL = {
        kdc = srv1.mydomain.local
        admin_server = srv1.mydomain.local
        default_domain = MYDOMAIN.LOCAL
        }

      3. 将以下内容添加到[domain_realm]文件的部分:
        .mydomain.local = MYDOMAIN.LOCAL
        mydomain.local = MYDOMAIN.LOCAL

      4. 此时的一个很好的测试是查看您的 AD 控制器是否会向您发出 kerberos 票证。这不是必需的,但它会让你们中的一些人头晕目眩:
        # kinit <some_windows_domain_user>
        然后查看票证:
        # klist
        您将看到有关票证缓存以及到期和续订的信息。一旦头晕消退,您也可以释放/销毁票证:
        # kdestroy

  7. 配置桑巴。
    根据以下内容: 有时无法使用 CIFS 或其他网络文件系统选择更好。如果需要为增加安全性的Kerberos(KRB5 / SPNEGO)认证的支持,那么Samba的smbclient的或smbfs的,必须用来代替CIFS
    唉,cifs(基于内核版本2.6.32.9)支持在内核的Ubuntu 10.04是1.61版本,根据内核文档,从 1.54 版开始就存在实验性 kerberos 实现。
    所以你来了。我不知道是否cifs可行,所以我为您提供了 samba 配置:

    1. 替换/etc/samba/smb.conf(请记住,我使用的是干净的 Ubuntu 发行版,所以我不担心破坏任何东西):
      [global]
      security = ads
      realm = MYDOMAIN.LOCAL
      password server = 192.168.20.11
      workgroup = MYDOMAIN
      idmap uid = 10000-20000
      idmap gid = 10000-20000
      winbind enum users = yes
      winbind enum groups = yes
      template homedir = /home/%U
      template shell = /bin/bash
      client use spnego = yes
      client ntlmv2 auth = yes
      encrypt passwords = yes
      winbind use default domain = yes
      restrict anonymous = 2

    2. 启动和停止各种服务。

      # sudo /etc/init.d/winbind stop
      # sudo service smbd restart
      # sudo /etc/init.d/winbind start

  8. 设置身份验证。

    1. 编辑/etc/nsswitch.conf. 我能够运行以下命令来获取我需要
      # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
      的内容:这是我的/etc/nsswitch.conf文件的内容:
      passwd: compat winbind
      group: compat winbind
      shadow: compat winbind
      hosts: files dns
      networks: files
      protocols: db files
      services: db files
      ethers: db files
      rpc: db files

    2. 启动和停止各种服务。
      # sudo /etc/init.d/winbind stop
      # sudo service smbd restart
      # sudo /etc/init.d/winbind start

  9. 将计算机加入域。我不相信这是必要的。特别是因为smb.conf文件 ( security = ads)中的安全选项。也许有人可以对此进行权衡...
    # sudo net ads join -U any_domain_user_account
    您可能会收到错误消息DNS update failed!,但您将加入域。如果您收到无法找到服务器的错误消息,则需要修改您的 DNS 记录。在 Ubuntu 安装期间,名称服务器通常会指向您的网关:大多数路由器都会提供 DNS 服务。Windows 服务器管理的最佳实践是 ADC 也应该运行 DNS。在我的情况下,我/etc/resolve.conf看起来像这样:
    nameserver 192.168.20.11
    nameserver 8.8.8.8
    8.8.8.8是一个谷歌 DNS,一个相当可靠的备份,以防 Windows 出现故障。

此时我可以登录(可能在重新启动后),主目录不存在,但我可以登录。

  1. 登录时挂载 CIFS
    下一步对我来说很重要;我不想负责备份每个人的工作目录,而且 Ubuntu 运行的机器在可靠性方面值得怀疑。通过执行以下操作,用户可以自动登录并查看他们的 Windows 用户目录。

    1. 下载pam_mount模块:
      # sudo apt-get install libpam-mount
      我希望挂载点指向传统/home/<user>位置:这部分由/etc/samba/smb.conf文件 ( template homedir = /home/%U)配置。但我需要它来钻取共享并指向他们自己的 Windows 目录。这是通过编辑/etc/security/pam_mount.conf.xml文件来完成的(尽管这是有意的,但 XML不是人类可读的):

    2. 添加以下内容/etc/security/pam_mount.conf.xml并进行更改以适应:
      <volume
      user="*"
      server="srv1.mydomain.local"
      path="UserShares"
      mountpoint="home"
      fstype="cifs"
      />

      <cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>

      由于我愚蠢的挂载点,我也不得不添加这一行:

      <umount>umount %(MNTPT)/%(USER)</umount>

      这样就可以自动创建用户目录(用于挂载点)找到该行并使其如此:

      <mkmountpoint enable="1" remove="false" />

      remove="false"一点非常重要:如果它设置为 true,则pam_mount.so尝试删除目录挂载点,如果用户多次登录则无法删除。在这种情况下,您最终会在系统上安装大量杂散安装。

      pam_mount.so仍然没有像承诺的那样交付。在它的当前形式中,挂载不断堆积并且没有创建主目录。在此处和 10.04 服务器的先前 Beta 2 版本之间的某个地方,它可以正常工作。我无法重新创建这个。
      在创建目录的同时,我依赖pam_mkhomedir.so,并在pam_mount.so要容纳的行之前立即插入一行。
      我还没有解决多重安装问题。但在pam_mount.so修复之前,这就是我的/etc/pam.d/common-session文件中的内容:

      session [default=1]     pam_permit.so  
      session requisite       pam_deny.so  
      session required        pam_permit.so  
      session required        pam_unix.so  
      session optional        pam_winbind.so  
      session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022  
      session optional        pam_mount.so
      
      Run Code Online (Sandbox Code Playgroud)

就是这样。它对我有用,我希望你觉得它有用。

考虑了许多资源,所以我可以解决这个问题。这是一个简短的列表(其中许多链接指向我自己的关于该主题的问题):


归档时间:

查看次数:

37097 次

最近记录:

12 年,6 月 前