我正在使用Ubuntu 10.04服务器。
[编辑]我已经testing了Ubuntu 10.04 Server(21 / May / 2010)的完整版本。
我已经configuration了我的Ubuntu 10.04 Server LTS驻留在Windowsnetworking上,以使用活动目录对login进行身份validation,然后挂载一个Windows共享作为主目录。
这是我从Ubuntu的初始安装开始做的。
获取更新
# sudo apt-get update && sudo apt-get upgrade
安装SSH服务器( sshd
)
# sudo apt-get install openssh-server
有人会争辩说,你应该通过禁用rootlogin来“lockingsshd”。 我想,如果你的智能足以破解SSH密码的SSH会话,那么你可能不会因为在/etc/ssh/sshd_config
文件中增加了PermitRootLogin no
而受挫。 如果你的偏执或不简单,那么编辑该文件或给以下旋转:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
安装所需的软件包
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
做一些基本的networking清理工作,以便准备具体的包configuration。
确定您的Windows域名,DNS服务器名称和IP地址为活动目录服务器(为桑巴)。 为了方便,我为Windows域和DNS服务器设置了环境variables。 对我来说是(我的AD IP地址是192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
如果你想弄清楚你的域名和DNS服务器是什么(我是承包商,不知道networking)看看这个有用的参考 。
我们需要在新networking上命名Linux机器,这是通过编辑主机文件(用DNS DNS的FQDNreplaceDNS)来完成的:
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
我们还应该告诉即将安装的服务,他们可以在那里find领导者:一些networking将有netbios名称查询服务,但为了以防万一,在/etc/hosts
文件中添加一个明确的条目,在我的configuration中,我添加了条目第三(3)行:
# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Windows和Linux的authentication和文件共享stream程需要时钟同意。 使用NTP服务执行此操作,而在Ubuntu的服务器版本上,NTP服务将安装并configuration一 (1)个NTP服务器。 在Ubuntu之前添加你的(或者完全replace它)。 我join的networking也有DNS服务器提供NTP服务。
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
重新启动NTP守护进程:
# sudo /etc/init.d/ntp restart
Kerberosconfiguration。
下面的说明不能从字面上理解:编辑文件时, MYDOMAIN.LOCAL
和srv1.mydomain.local
的值需要replace为适合networking的值,但请注意,在使用UPPERCASE的情况下,大写是必要的 。
如果在Kerberos的apt-get install
期间,您有洞察力正确回应“默认域”问题,那么,对你来说很好,否则你将不得不做下面的事情。
编辑(以前安装的) /etc/krb5.conf
文件。
find[libdefaults]
部分并更改键值对:
[libdefaults]
default_realm = MYDOMAIN.LOCAL
将以下内容添加到文件的[realms]
部分:
MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
将以下内容添加到文件的[domain_realm]
部分:
.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
在这一点上的一个很好的testing是看看你的AD控制器会给你发一张kerberos票。 这不是必要的,但它可以让你们一些头晕目眩:
# kinit <some_windows_domain_user>
然后看到票:
# klist
你会看到关于票据caching和到期和续订的东西。 一旦眩晕消退,你还可以释放/销毁票:
# kdestroy
configuration桑巴
根据以下情况: 有时CIFS不能使用或其他networking文件系统select更好。 如果需要kerberos(krb5 / SPNEGO)身份validation支持来增加安全性,则必须使用Samba的smbclient或smbfs而不是cifs
唉,ubuntu 10.04(基于内核版本2.6.32.9)在内核中的cifs
支持版本是1.61,根据内核文档,从1.54版本开始,实验kerberos的实现就在那里。
所以你就是这样 我不知道,如果cifs
将工作,所以我给你桑巴configuration:
replace/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
启动和停止各种服务。
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
设置authentication。
编辑/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
启动和停止各种服务。
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
将计算机join域。 我不相信这是必要的。 特别是由于smb.conf
文件中的安全选项( security = ads
)。 也许有人可以衡量这个…
# sudo net ads join -U any_domain_user_account
您可能会收到错误的DNS update failed!
,但是你会join到域中。 如果您遇到无法find服务器的错误,则需要修改您的DNSlogging。 在Ubuntu安装期间,名称服务器通常会指向您的网关:大多数路由器都会执行DNS服务。 Windows服务器pipe理的最佳实践是ADC也应该运行DNS。 在我的情况下,我的/etc/resolve.conf
如下所示:
nameserver 192.168.20.11
nameserver 8.8.8.8
8.8.8.8
是一个谷歌的DNS,一个相当可靠的备份,以防止一个窗口出现故障。
在这一点上,我可以login(也许重新启动后),主目录不存在,但我可以login。
CIFSloginlogin
下一步是我的樱桃; 我不想负责备份所有人的工作目录,Ubuntu的运行方式在可靠性方面是值得怀疑的。 通过以下用户可以login并自动查看他们的Windows用户目录。
下载pam_mount
模块:
# sudo apt-get install libpam-mount
我希望挂载点位于传统的/home/<user>
位置:这个部分是由/etc/samba/smb.conf
文件( template homedir = /home/%U
)configuration的。 但我需要它钻通共享并指向他们自己的Windows目录。 这是通过编辑/etc/security/pam_mount.conf.xml
文件来完成的(尽pipe它的目的是 XML 不是人类可读的):
将以下内容添加到/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>
这样,用户目录(对于挂载点)将被自动创build并自动find该行:
<mkmountpoint enable="1" remove="false" />
remove="false"
位非常重要:如果设置为true,则pam_mount.so
尝试删除用户多次login时不能执行的目录挂载点。 在这种情况下,最终会导致系统中出现大量的stream浪坐骑。
pam_mount.so
仍然没有按照承诺交付。 在目前的forms中,坐骑继续堆积,而主目录没有被创build。 之间和之前的10.04服务器的Beta 2版本之间的某处,它正在工作。 我不能重新创build这个。
在创build目录的同时,我依赖于pam_mkhomedir.so
,并在pam_mount.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
而已。 它为我工作,我希望你觉得它有用。
考虑了大量的资源,所以我可以弄清楚。 这里有一个简短的清单(这些链接中的一些指出我自己的问题):