Answers:
[编辑]此后,我已经测试了Ubuntu 10.04 Server的完整版本(2010年5月21日)。
我已经将Windows网络上的Ubuntu 10.04 Server LTS配置为使用活动目录对登录进行身份验证,然后挂载Windows共享作为该主目录。
这是我从Ubuntu的初始安装开始所做的。
获取更新
# sudo apt-get update && sudo apt-get upgrade
安装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."
安装所需的软件包
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
做一些基本的网络房屋清洁工作,为即将到来的特定包装配置做准备。
确定您的Windows域名,DNS服务器名称和活动目录服务器的IP地址(用于samba)。为了方便起见,我为Windows域和DNS服务器设置了环境变量。对我来说是(我的AD IP地址是192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
如果您想弄清楚您的域和DNS服务器是什么(我是承包商,不知道网络),请查看此有用的参考资料。
我们需要命名新网络上的Linux框,这是通过编辑主机文件完成的(用Windows DNS的FQDN替换DNS):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
我们还应该告诉即将安装的服务,在哪里可以找到领导者:某些网络将具有netbios名称查找服务,但以防万一,在您的/etc/hosts
文件中添加一个显式条目,在我的配置中,我在第三个(3)上添加了该条目线:
# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Windows和Linux机器的身份验证和文件共享过程需要使它们的时钟一致。使用NTP服务执行此操作,然后在Ubuntu版本的服务器上安装并配置一(1)个NTP服务器的NTP服务。在Ubuntu之前添加您的(或完全替换)。我加入的网络也有DNS服务器提供NTP服务。
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
重新启动NTP守护程序:
# sudo /etc/init.d/ntp restart
Kerberos配置。
此处的说明不照原样进行:在编辑文件时,值MYDOMAIN.LOCAL
和srv1.mydomain.local
需要替换为适合您网络的值,但请注意,在使用UPPERCASE的地方需要UPPERCASE。
如果在apt-get install
Kerberos认证期间您有能力正确地回答“默认域”问题,那么对您有好处,否则,您必须执行以下操作。
编辑(以前在上面安装的)/etc/krb5.conf
文件。
找到该[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
此时,一个不错的测试是查看您的AD控制器是否会向您颁发kerberos票。这不是必需的,但会使您有些头晕:
# kinit <some_windows_domain_user>
然后看票:
# klist
您将看到有关票证缓存以及过期和续订的内容。一旦头晕消退,您也可以释放/销毁票证:
# kdestroy
配置samba。
根据以下内容:
有时无法使用CIFS或选择其他网络文件系统更好。如果需要kerberos(krb5 / SPNEGO)身份验证支持以增强安全性,则必须使用Samba的smbclient或smbfs代替cifs
Alas,cifs
内核中对ubuntu 10.04(基于内核版本2.6.32.9的支持)的版本为1.61,并且根据内核文档,从1.54版本开始就存在实验性的kerberos实现。
所以你在那里。我不知道是否cifs
可以工作,所以我给你提供了samba配置:
替换/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
设置身份验证。
编辑/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
将计算机加入域。我不认为这是必要的;特别是由于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
是一个google DNS,一种相当可靠的备份,以防Windows崩溃。
此时,我可以登录(也许在重启后),主目录不存在,但是我可以登录。
CIFS登录时安装对
我来说,下一步是樱桃。我不希望备份每个人的工作目录,而且从可靠性的角度来看,Ubuntu即将运行的盒子值得怀疑。通过执行以下操作,用户可以登录并自动查看其Windows用户目录。
下载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 并非人类可读的):
添加以下内容/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
仍然无法如期交付。在当前形式下,坐骑不断堆积,并且没有创建主目录。在此处与先前的Beta 2版本10.04服务器之间的某个位置,它可以正常工作。我不能重新创建这个。
在此期间,我依赖于目录创建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
而已。它对我有用,希望您发现它有用。
考虑了大量资源,因此我可以弄清楚。这是一个简短列表(这些链接中的许多链接都指向我自己对此主题的疑问):
sudo
d,或者我缺少什么?
sudo
” -更好...以哪种方式?(如果有权使用sudo的任何用户帐户遭到破坏,则基本上是同一回事。对于bruteforce根用户帐户或用户帐户,它基本上同样简单(也可能不是简单)。最好是设置仅pub-key登录,并禁用所有密码-基于登录)。