ชื่อผู้ใช้ในกรณี Unix สำคัญหรือไม่


20

คือssh abc@servernameแตกต่างจากssh Abc@servername? กรณีชื่อผู้ใช้มีความสำคัญใน Unix หรือไม่?

ผู้ใช้ของฉันตรวจสอบสิทธิ์ผ่าน LDAP


3
เกือบทุกอย่างใน Linux จะคำนึงถึงขนาดตัวพิมพ์ ความหมาย: cdไม่เหมือนกับCD... วิธีเดียวที่จะทำให้พวกเขามีความหมายเหมือนกันคือตั้งค่านามแฝงใน.bashrcไฟล์ของคุณ..
ryekayo

1
ฉันคิดว่าขึ้นอยู่กับแอตทริบิวต์ LDAP ที่คุณใช้สำหรับชื่อผู้ใช้ ถ้ามันเป็นuid จาก RFC 4519 แสดงว่ามันไม่สนใจตัวพิมพ์ นอกจากนี้ยังขึ้นอยู่กับวิธีการตรวจสอบสิทธิ์ด้วย LDAP
Stéphane Chazelas

1
เพียงแค่พยายามลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ของคุณซึ่งจะเป็นคำตอบสำหรับคุณในไม่กี่วินาที
การแข่งขัน Lightness กับโมนิก้า

คำตอบ:


14

เช่นเดียวกับชื่อโฮสต์และชื่อโดเมนชื่อผู้ใช้ไม่ได้เป็นสิ่งที่ Unix แต่สามารถและมักจะขยายประเภทของระบบปฏิบัติการที่หลากหลาย

การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์เล็กนั้นจะขึ้นอยู่กับมาตรฐานที่ใช้ระบุหรือไม่

ชื่อโฮสต์และชื่อโดเมนนั้นไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กตามมาตรฐาน DNS (ดูRFC4343 )

ชื่อผู้ใช้ที่เก็บไว้ในแบ็กเอนด์ท้องถิ่น (/ etc / passwd) หรือรูปแบบ Unix หนึ่ง (NIS) ไม่ได้เป็นกรณีตายโดยมาตรฐาน POSIX

ชื่อผู้ใช้ที่เก็บไว้ใน LDAP หรือแบ็กเอนด์ของ Active Directory จะเป็นไปตามคำนิยามของ schema ของแอตทริบิวต์ที่ใช้uidและcnบ่อยครั้งที่การจัดเก็บชื่อผู้ใช้นั้นมีแอตทริบิวต์ของ schema ที่แตกต่างกัน นั่นหมายถึงทั้งสองอย่างAbcและabcอาจตรงกันหรือไม่abcขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์ ldap

เนื่องจากความไม่สอดคล้องกันนี้ฉันขอแนะนำให้ใช้ตัวพิมพ์เล็กสำหรับทั้งชื่อผู้ใช้และชื่อโฮสต์ / โดเมนแล้วหลีกเลี่ยงssh ABC@SERVERNAME.DOMAIN.COMสิ่งที่หยาบ


1
ดังนั้นวิธีที่ฉันอ่านมาตรฐาน POSIXเนื่องจากไม่ได้ระบุว่าเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่และเล็กและชุดอักขระชื่อไฟล์แบบพกพาทั้งหมดก็มีให้ใช้งาน (ซึ่งรวมถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก) ถูกต้องไหม ที่ถูกกล่าวว่ามีการประชุมมาตรฐานหรือไม่?
Doug R.

1
@DougR เท่าที่เกี่ยวข้องกับ POSIX ชื่อผู้ใช้จะขึ้นอยู่กับกรณีและปัญหา กรณีตายจะได้รับการระบุเป็นอย่างอื่น การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่หมายถึงเมื่ออ้างถึงชุดอักขระชื่อไฟล์แบบพกพา
jlliagre

ขอขอบคุณสำหรับการชี้แจง. นั่นเป็นข้อสันนิษฐานเบื้องต้นของฉัน แต่ฉันไม่สามารถพบอะไรเกี่ยวกับชุดชื่อไฟล์แบบพกพาที่ระบุสิ่งนี้ไม่ทางใดก็ทางหนึ่ง
Doug R.

5

ใช่มันเป็นกรณี ๆ ไป ฉันไม่สามารถนำข้อมูลทางเทคนิคมาทดสอบได้และสงสัยว่าทำไมคุณถึงไม่ (?)

เครื่องท้องถิ่นของฉันคือลินุกซ์มิ้นท์ตามที่คุณเห็น:

# cat /etc/*release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.2
DISTRIB_CODENAME=rafaela
DISTRIB_DESCRIPTION="Linux Mint 17.2 Rafaela"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
cat: /etc/upstream-release: Is a directory

และฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ CentOS ดังนี้:

·การใช้ (ผิด) ชื่อผู้ใช้ตัวพิมพ์ใหญ่:

8D prova # ssh Root@agora-server
Root@agora-server's password: 
Permission denied, please try again.
Root@agora-server's password: 
Permission denied, please try again.
Root@agora-server's password: 

·ใช้ชื่อผู้ใช้ที่ถูกต้อง:

8D prova # ssh root@agora-server
root@agora-server's password: 
Last login: Fri Oct  2 01:50:13 2015 from 192.168.0.31
[root@agora-server ~]# 

เป็นปัญหาด้านการรักษาความปลอดภัยที่ดีในการอนุญาตให้ลงชื่อเข้าใช้ SSH ในฐานะรูทไม่ได้เป็นการปฏิบัติที่ดี (โดยเฉพาะอย่างยิ่งหากเครื่องกำลังเผชิญกับอินเทอร์เน็ต) with ทุกวันนี้ด้วย OpenSSH สิ่งนี้มักจะต้องเปิดใช้งานอย่างชัดเจนด้วยตัวเลือก PermitRootLogin ใน sshd_config ควรลงชื่อเข้าใช้ในฐานะผู้ใช้ปกติแล้วใช้ sudo หรือ su เพื่อรูทเมื่อจำเป็นเท่านั้น
JohnGH

ใช่ถูกต้องฉันยอมรับก่อนเพราะมันเป็น superuser และประการที่สองชื่อผู้ใช้ 'รูท' เป็นที่รู้จักโดยผู้โจมตีซึ่งจะต้องจับรหัสผ่านเท่านั้น อย่างไรก็ตามนี่เป็นเพียงเครื่องเสมือนที่ทำงานในเครื่องเท่านั้นไม่ได้รับการฝึกงาน การปฏิบัติที่ดีคือการใช้ใบรับรอง SSH อาร์เอสที่จะเข้าสู่ระบบหรือ / บวกพอร์ต SSH เปิดเฉพาะสำหรับการร้องขอมาจากที่อยู่ที่ได้รับอนุญาต (กฎของไฟร์วอลล์)
หมิ่น

3

ในกรณีที่บัญชีท้องถิ่นชื่อผู้ใช้เป็นกรณี ๆ ไป เมื่อคุณใช้ LDAP มันขึ้นอยู่กับ ฉันเคยเห็นกรณีที่ชื่อผู้ใช้เป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (บนอุปกรณ์ ZFS ที่เชื่อมต่อกับ LDAP) และกรณีที่มันไม่สำคัญว่าไคลเอ็นต์ Solaris LDAP ที่เชื่อมต่อกับ Windows AD

สิ่งที่คุณควร / อาจจะลองดูว่าระบบของคุณใช้ LDAP getent passwd <username>ได้อย่างถูกต้องโดยการออก การใช้คำสั่งนี้ควรให้ระเบียนกับชื่อผู้ใช้โฮมไดเรกทอรีและเชลล์สำหรับผู้ใช้ที่ระบุ หากคุณไม่เห็นระเบียนดังกล่าวแสดงว่า LDAP ไม่ได้รับการกำหนดค่าอย่างถูกต้อง

มีหลายสถานที่ที่คุณควรกำหนดค่า LDAP และหนึ่งในสถานที่คือ:

/etc/nsswitch.conf

passwd: files ldap
group:  files ldap

คุณต้องตรวจสอบว่า PAM ได้รับการกำหนดค่าอย่างถูกต้องหรือไม่และขั้นตอนที่สำคัญที่สุดคือการตรวจสอบว่ามีการกำหนดค่าและทำงานไคลเอ็นต์ LDAP หรือไม่ ลองใช้เครื่องมือที่ต้องการldapsearchตรวจสอบว่าสามารถสอบถาม LDAP ได้หรือไม่

มีตำราทำอาหาร LDAP หลายเล่มและส่วนใหญ่ขึ้นอยู่กับรุ่น Unix และรุ่น LDAP ที่คุณใช้ อัปเดตคำถามของคุณพร้อมรายละเอียดหากคุณต้องการความช่วยเหลือเพิ่มเติม รวมถึงการตั้งค่าการกำหนดค่าของคุณ (ไม่มีรหัสผ่านแน่นอน) ซึ่งสามารถช่วยสมาชิกฟอรัมในการวิเคราะห์ปัญหาเฉพาะของคุณ


1

ชื่อผู้ใช้ Unix จะต้องตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์ใหญ่และอะไรคือสิ่งที่มากกว่านั้นการใช้ชื่อผู้ใช้ที่มีตัวพิมพ์ใหญ่บนระบบ Unix สามารถสร้างผลลัพธ์ที่ไม่พึงประสงค์ได้ดังนั้นโดยทั่วไปควรหลีกเลี่ยง

ตัวอย่างบางส่วนคือ:

มันสามารถทำลายอีเมลสำหรับผู้ใช้ มาตรฐานสำหรับ SMTP อนุญาตให้ที่อยู่อีเมลต้องตรงตามตัวพิมพ์ใหญ่ - เล็กและโดยค่าเริ่มต้น MTA ที่ได้รับข้อความจะพับที่อยู่อีเมลเป็นตัวพิมพ์เล็กเพื่อค้นหาผู้ใช้ที่จะส่งมอบ หากชื่อผู้ใช้มีอักขระตัวพิมพ์ใหญ่ก็จะไม่สามารถแก้ไขได้หากไม่มีการแทนที่ค่าพิเศษเพื่อรองรับสิ่งนี้ (สิ่งนี้มีผลต่อ MTA เช่น sendmail, postfix และอื่น ๆ รวมถึงตัวแทนการส่งมอบเช่น procmail)

เทอร์มินัลฮาร์ดแวร์จำนวนมากในช่วงต้นไม่คำนึงถึงขนาดตัวพิมพ์ เป็นเรื่องปกติที่จะใช้ตัวพิมพ์ใหญ่เท่านั้น เมื่อเข้าสู่ระบบ Unix บางรุ่นการเริ่มต้นชื่อเข้าสู่ระบบด้วยอักขระตัวพิมพ์ใหญ่จะทำให้ระบบสันนิษฐานว่าคุณกำลังใช้เทอร์มินัลตัวพิมพ์ใหญ่แบบโบราณเท่านั้นและจะเปิดใช้งานการย่อตัวพิมพ์เล็ก จากนั้นคุณจะต้องหลีกเลี่ยงอักขระตัวพิมพ์ใหญ่เพื่อบอกว่าเป็นตัวพิมพ์ใหญ่) เพื่อช่วยคุณป้อนชื่อผู้ใช้ที่คาดว่าจะเป็นตัวพิมพ์เล็ก ฉันไม่เชื่อว่านี่เป็นเรื่องเกี่ยวกับลีนุกซ์ แต่ฉันเห็นมันแสดงบน HP-UX

เนื่องจากการประชุมใช้ตัวอักษรพิมพ์เล็กในชื่อผู้ใช้เป็นเวลานานมีเหตุผลที่จะคาดหวังว่าเครื่องมืออื่น ๆ (บางอันเราอาจไม่คิด) ในระบบอาจสันนิษฐานว่าชื่อผู้ใช้ควรเป็นตัวพิมพ์เล็กและตรวจสอบแปลง ฯลฯ ดังนั้นจึงทำลายสิ่งสำหรับผู้ใช้นั้น


0

ชื่อผู้ใช้จะต้องตรงตามตัวพิมพ์เล็กและใหญ่ คุณสามารถทดสอบสิ่งนี้ได้อย่างง่ายดายโดยเพิ่มผู้ใช้สองคนที่มีชื่อคล้ายกัน:

~ # useradd foobar
~ # useradd fooBar
~ # grep ^foo /etc/passwd
foobar:x:1001:1001::/home/foobar:/bin/sh
fooBar:x:1002:1002::/home/fooBar:/bin/sh

คำถาม / คำตอบนี้แสดงวิธีชดเชยผู้ที่พยายามลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ที่มีตัวพิมพ์เล็ก "ผิด" ตามเซิร์ฟเวอร์ LDAP แต่โปรดทราบว่านี่จะใช้งานได้หากชื่อผู้ใช้ทั้งหมดแสดงเป็นตัวพิมพ์เล็ก (หรือคุณสามารถทำให้เป็นตัวพิมพ์ใหญ่ได้ทั้งหมดหากคุณต้องการ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.