ฉันใช้ Ubuntu 10.04 Server
ฉันใช้ Ubuntu 10.04 Server
คำตอบ:
[แก้ไข] ผมได้ทดสอบตั้งแต่นี้การเปิดตัวเต็มรูปแบบของUbuntu 10.04 Server (21 / May / 2010)
ฉันกำหนดค่าUbuntu 10.04 Server LTSของฉันที่อยู่บนเครือข่าย windows เพื่อรับรองความถูกต้องเข้าสู่ระบบโดยใช้ไดเรกทอรีที่ใช้งานอยู่จากนั้นติดตั้ง windows ที่ใช้ร่วมกันเพื่อทำหน้าที่เหมือนมีโฮมไดเร็กตอรี่
นี่คือสิ่งที่ฉันเริ่มต้นจากการติดตั้งเริ่มต้นของ Ubuntu
รับการอัพเดท
# sudo apt-get update && sudo apt-get upgrade
ติดตั้งเซิร์ฟเวอร์ SSH ( sshd
)
# sudo apt-get install openssh-server
บางคนโต้แย้งว่าคุณควร "ล็อค sshd down" โดยปิดการใช้งานการเข้าสู่ระบบราก ฉันคิดว่าคุณฉลาดพอที่จะแฮ็กเซสชัน ssh สำหรับรหัสผ่านรูทคุณอาจจะไม่ถูกขัดขวางโดยการเพิ่ม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) สำหรับ conveniance ฉันตั้งค่าตัวแปรสภาพแวดล้อมสำหรับโดเมน windows และเซิร์ฟเวอร์ DNS สำหรับฉันมันคือ (ที่อยู่ IP โฆษณาของฉันคือ 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
หากคุณต้องการทราบว่าโดเมนและเซิร์ฟเวอร์ DNS ของคุณคืออะไร (ฉันเป็นผู้รับเหมาและไม่ทราบเครือข่าย) โปรดดูข้อมูลอ้างอิงที่มีประโยชน์นี้
เราจำเป็นต้องสร้างช่องลินุกซ์ในเครือข่ายใหม่ซึ่งทำได้โดยการแก้ไขไฟล์โฮสต์ (แทนที่ DNS ด้วย FQDN ของ windows 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 รุ่นเซิร์ฟเวอร์เซิร์ฟเวอร์บริการ NTP จะถูกติดตั้งและกำหนดค่าด้วยNTP หนึ่ง (1) เซิร์ฟเวอร์ เพิ่มของคุณก่อน Ubuntu หนึ่ง (หรือแทนที่ทั้งหมด) เครือข่ายที่ฉันเข้าร่วมมีเซิร์ฟเวอร์ DNS ที่ให้บริการ NTP ด้วย
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
รีสตาร์ท NTP daemon:
# sudo /etc/init.d/ntp restart
การกำหนดค่า Kerberos
คำแนะนำที่เป็นไปตามที่นี่ไม่ได้ที่จะนำตัวอักษร: ค่าสำหรับMYDOMAIN.LOCAL
และsrv1.mydomain.local
จำเป็นที่จะต้องถูกแทนที่ด้วยสิ่งที่เหมาะสมสำหรับเครือข่ายของคุณเมื่อคุณแก้ไขไฟล์ แต่ทำที่ทราบว่ามีการใช้ตัวพิมพ์ใหญ่พิมพ์ใหญ่เป็นสิ่งจำเป็น
หากในระหว่าง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
การทดสอบที่ดี ณ จุดนี้คือการดูว่าผู้ควบคุมโฆษณาของคุณจะออกตั๋ว kerberos ให้คุณหรือไม่ สิ่งนี้ไม่จำเป็น แต่สามารถทำให้คุณบางคนหวั่นไหว:
# kinit <some_windows_domain_user>
จากนั้นเพื่อดูตั๋ว:
# klist
คุณจะเห็นข้อมูลเกี่ยวกับแคชตั๋วและการหมดอายุและการต่ออายุ เมื่อ giddiness ลดลงคุณก็สามารถปล่อย / ทำลายตั๋วได้เช่นกัน:
# kdestroy
กำหนดค่าแซมบ้า
มีดังต่อไปนี้:
มีบางครั้งที่ CIFS ไม่สามารถใช้หรือตัวเลือกระบบไฟล์เครือข่ายอื่นดีกว่า ถ้าจำเป็นต้องมีการสนับสนุนการพิสูจน์ตัวตน kerberos (krb5 / SPNEGO) เพื่อความปลอดภัยที่เพิ่มขึ้นดังนั้นต้องใช้ smbclient หรือ smbfs ของ Samba แทน cifs
Alas cifs
การสนับสนุนในเคอร์เนลสำหรับ ubuntu 10.04 (ขึ้นอยู่กับรุ่นเคอร์เนล 2.6.32.9) ที่เวอร์ชัน 1.61 และ ตามเอกสารของเคอร์เนลการใช้งาน Kerberos แบบทดลองได้มีมาตั้งแต่รุ่น 1.54
ดังนั้นคุณจะมี ฉันไม่ทราบว่าcifs
จะใช้งานได้หรือเปล่าดังนั้นฉันจึงให้การตั้งค่าแซมบ้าแก่คุณ:
แทนที่/etc/samba/smb.conf
(จำได้ว่าฉันทำงานจาก distro ที่สะอาดของ 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 ซึ่งเป็นข้อมูลสำรองที่เชื่อถือได้พอสมควรในกรณีที่หน้าต่างหนึ่งหยุดทำงาน
ณ จุดนี้ฉันสามารถเข้าสู่ระบบ (อาจหลังจากรีบูต) ไดเรกทอรีบ้านไม่อยู่ แต่ฉันสามารถเข้าสู่ระบบ
CIFS การติดตั้งเมื่อเข้าสู่ระบบ
ขั้นตอนต่อไปนี้เป็นสิ่งสำคัญสำหรับฉัน ฉันไม่ต้องการความรับผิดชอบในการสำรองข้อมูลไดเรกทอรีการทำงานของทุกคนและกล่อง Ubuntu ที่จะใช้งานนั้นเป็นที่น่าสงสัยในแง่ของความน่าเชื่อถือ โดยการทำดังต่อไปนี้ผู้ใช้สามารถเข้าสู่ระบบและดูไดเรกทอรีที่ใช้หน้าต่างของพวกเขาโดยอัตโนมัติ
ดาวน์โหลด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"
บิตเป็นสิ่งสำคัญมากถ้ามันตั้งค่าเป็นจริงpam_mount.so
พยายามที่จะลบไดเรกทอรีจุดที่มันไม่สามารถทำอย่างไรถ้าผู้ใช้มีการบันทึกไว้ในหลายครั้งติด สิ่งที่คุณจะได้รับในกรณีนี้คือการติดตั้งจรจัดบนระบบของคุณ
pam_mount.so
ยังไม่ส่งค่อนข้างตามสัญญา ในรูปแบบปัจจุบันเมานท์จะซ้อนขึ้นและโฮมไดเร็กทอรีจะไม่ถูกสร้างขึ้น อยู่ระหว่างที่นี่กับรุ่นเบต้า 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 ถูกบุกรุกมันเป็นสิ่งเดียวกันและโดยพื้นฐานแล้วมันก็ง่ายพอ ๆ กันที่จะลบล้างบัญชีผู้ใช้ root หรือบัญชีผู้ใช้วิธีที่ดีที่สุดคือการตั้งค่าการเข้าสู่ระบบ pub-key เท่านั้น ตามการเข้าสู่ระบบ)