ฉันจะปิดการใช้งานบัญชีได้อย่างสมบูรณ์ได้อย่างไร


48

ฉันจะปิดการใช้งานบัญชีได้อย่างสมบูรณ์ได้อย่างไร passwd -lจะไม่อนุญาตให้ทุกคนเข้าสู่บัญชีโดยใช้รหัสผ่าน แต่คุณยังสามารถเข้าสู่ระบบผ่านส่วนตัว / คีย์สาธารณะ ฉันจะปิดการใช้งานบัญชีอย่างสมบูรณ์ได้อย่างไร ในฐานะที่เป็น QuickFIX authorized_keys_lockmeผมเปลี่ยนชื่อไฟล์ไปยัง มีวิธีอื่นอีกไหม?


3
คุณวางแผนที่จะเปิดใช้งานอีกครั้งในที่สุดหรือไม่ ล็อคระบบหรือไม่ ถ้าไม่ฉันจะลบบัญชี
เคน

คำตอบ:


59

วิธีที่ถูกต้องตามusermod(8)คือ:

usermod --lock --expiredate 1970-01-02 <username>

(ที่จริงแล้วอาร์กิวเมนต์--expiredateสามารถเป็นวันที่ใด ๆ ก่อนวันที่ปัจจุบันในรูปแบบYYYY-MM-DD)


คำอธิบาย:

  • --lockล็อครหัสผ่านของผู้ใช้ อย่างไรก็ตามการเข้าสู่ระบบด้วยวิธีอื่น ๆ (เช่นรหัสสาธารณะ) ยังคงเป็นไปได้

  • --expiredate YYYY-MM-DDปิดใช้งานบัญชีในวันที่ที่ระบุ ตามที่man shadow 51970-01-01 เป็นค่าที่คลุมเครือและจะไม่ถูกนำมาใช้

ฉันได้ทดสอบสิ่งนี้กับเครื่องของฉันแล้ว ไม่สามารถล็อกอินด้วยรหัสผ่านหรือกุญแจสาธารณะได้หลังจากดำเนินการคำสั่งนี้


หากต้องการเปิดใช้งานบัญชีอีกครั้งในภายหลังคุณสามารถเรียกใช้:

usermod --unlock --expiredate '' <username>

7
อย่าใช้ 1970-01-01 เนื่องจากจะตั้งค่า / etc / shadow expiration field เป็น 0. shadow (5) ไม่ควรใช้ค่า 0 เนื่องจากจะถูกตีความว่าเป็นบัญชีที่ไม่มีการหมดอายุหรือเป็นวันหมดอายุ 1 ม.ค. 1970 โปรดใช้: usermod - ล็อค - หมดอายุ 1970-02-02 <ชื่อผู้ใช้>
Marcus Maxwell

4
มันจะดีถ้าคุณสามารถให้วิธีการย้อนกลับการดำเนินการนี้ ดูเหมือนว่าusermod --unlock --expiredate '' usernameจะทำ
บ๊อบ

3
การเพิ่มสิ่งที่ @MarcusMaxwell เขียนไว้: หน้าเพจสำหรับusermodพูดว่า:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3

1
ทำไมมัน--expiredate 1ไม่เพียงพอในตัวมันเอง?
โทมัสเซ่น

แต่sudo su usernameดูเหมือนว่าจะทำงานโดยใช้บัญชีอื่น
xuhdev

10

/bin/nologinล็อครหัสผ่านและเปลี่ยนเปลือกไป

sudo usermod --lock --shell /bin/nologin username

(หรือกระชับมากขึ้น, sudo usermod -L -s /bin/nologin username.)


ฉันจะเปลี่ยนเปลือกเป็น / bin / nologin ได้อย่างไร?

5
@mattdm นี่ไม่ใช่โซลูชันที่สมบูรณ์เนื่องจากผู้ใช้ยังคงสามารถระบุคำสั่งที่จะดำเนินการได้ ตัวอย่างเช่นssh username@hostname /bin/bashจะให้ผู้ใช้พร้อมท์ทุบตีโดยไม่คำนึงถึงเปลือกเริ่มต้น
phunehehe

4
@phunehehe - คุณได้ลองแล้วหรือยัง คุณจะได้รับในบันทึกว่า "ไม่อนุญาตให้ผู้ใช้ [ชื่อผู้ใช้] เนื่องจาก shell / bin / nologin ไม่มีอยู่"
mattdm

2
เท่าที่ฉันทราบพฤติกรรมของเชลล์ที่ไม่ถูกต้องนั้นไม่ได้จัดทำเป็นเอกสาร ในอีกทางหนึ่งหน้าคนบอกว่าถ้ารหัสผ่านมีผู้นำ !! บนลีนุกซ์บัญชีนั้นจะถูกล็อคเหมือนว่าใช้งานไม่ได้ ดังนั้นคุณจะรู้ว่าเอกสารและความเป็นจริงเป็นเพียงการแข่งขันโดยประมาณเท่านั้น :)
mattdm

2
sudo chsh -s /bin/nologinจะดีกว่าการแก้ไข/etc/passwdด้วยมือ นอกจากนี้ในบางระบบก็เป็น/sbin/nologinเช่นนั้น
มิเคล

3

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

ในการล็อคบัญชี:

# chage -E 0 username

บัญชีผู้ใช้ 'ชื่อผู้ใช้' จะถูกล็อคในระบบ หากต้องการเปิดใช้งานบัญชีผู้ใช้อีกครั้งให้ทำดังต่อไปนี้

วิธีปลดล็อกบัญชี:

# chage -E -1 username

บัญชีผู้ใช้ 'ชื่อผู้ใช้' จะถูกเปิดใช้งานอีกครั้งในระบบของคุณด้วยรหัสผ่านเหมือนเดิม ไบนารี 'chage' เป็นส่วนหนึ่งของแพ็กเกจshadow-utilsบน Red Hat Linux หรือแพ็คเกจpasswdบน Debian Linux


3

ฉันมีตัวแทนไม่เพียงพอที่จะแสดงความคิดเห็นต่อคำตอบของ Legate แต่ฉันต้องการแบ่งปันว่าคำตอบนี้ช่วยเราด้วยกรณีการใช้งานอื่น:

1. ) บัญชีที่สงสัยคือบัญชีบริการในพื้นที่ที่เรียกใช้แอปพลิเคชันไม่ใช่บัญชีผู้ใช้ปลายทาง

2. ) ผู้ใช้ปลายทางในฐานะตัวเองและsudo /bin/su <user>เป็นผู้ใช้และจัดการแอปพลิเคชันเนื่องจากข้อกำหนดการตรวจสอบบัญชีบัญชีบริการไม่สามารถมีความสามารถในการเข้าสู่ระบบโดยตรง

3. ) บัญชีบริการจะต้องมีเชลล์ที่ถูกต้อง ( /bin/bashไม่ใช่/sbin/nologin) เนื่องจากแพลตฟอร์มการจัดตารางองค์กร (เอเจนต์ทำงานเป็นรูทในเครื่อง) จะต้องสามารถsu - <user>และไม่มีsu -s /bin/bash <user>ความสามารถที่เชลล์แบบเต็มทำและจำเป็นต้องใช้งานจากระยะไกล สำหรับการดำเนินการแบบกลุ่มที่ใหญ่กว่าซึ่งรวมเซิร์ฟเวอร์และฐานข้อมูลจำนวนมาก


ดังนั้น ...

passwd -l <user>
ไม่เป็นไปตามข้อ จำกัด เนื่องจากการรับรองความถูกต้องของรหัสสาธารณะจะข้าม PAM และยังอนุญาตการเข้าสู่ระบบโดยตรง

usermod -s /sbin/nologin <user>
ไม่เป็นไปตามข้อ จำกัด เพราะทำให้ตัวกำหนดเวลาขององค์กรหยุดทำงาน

usermod --lock --expiredate 1970-01-01 <user>
นี่คือผู้ชนะของเรา การล็อกอินแบบรีโมตถูกปิดใช้งาน แต่ยังสามารถรูsu <user>ทได้เช่นเดียวกับผู้ใช้รายอื่นผ่านทางsudoดังนั้นตัวกำหนดเวลาทำงานอย่างถูกต้องและผู้ใช้ปลายทางที่ได้รับอนุญาตสามารถกลายเป็นบัญชีบริการเป้าหมายได้ตามต้องการ

ขอบคุณสำหรับการแก้ปัญหา!


1

userdelในการลบทั้งหมดมันใช้

โปรดทราบว่าหากคุณลบบัญชีอาจมีความเสี่ยงที่ ID ผู้ใช้จะยังคงใช้ในระบบไฟล์ที่ใดที่หนึ่งและผู้ใช้ใหม่จะได้รับสิทธิ์ความเป็นเจ้าของไฟล์เหล่านั้นหากเข้าใช้ภายใต้รหัสผู้ใช้เดียวกัน

คุณต้องการเปลี่ยนเจ้าของไฟล์ใด ๆ ที่เป็นของผู้ใช้ที่ถูกลบ

หากคุณต้องการที่จะเพิ่มผู้ใช้กลับมาบันทึกบรรทัดจาก/etc/passwd(และบน Solaris /etc/shadow) /etc/passwd_deletedเพื่อไฟล์ชั่วคราวเช่น

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

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


1
google authorized_keys หรือลองอ่านeng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.htmlนี้โดยทั่วไปแทนที่จะใช้รหัสผ่านคุณใส่รหัส publuc ของคุณในไฟล์นั้นและเมื่อคุณเชื่อมต่อกับ ssh คุณจะเข้าสู่ระบบโดยอัตโนมัติ หากหนึ่งในสาธารณะตรงกับคีย์ส่วนตัวปัจจุบันของคุณ

0

มีใครพยายามทำมันผ่าน ssh_config? บางทีมันอาจจะช่วยhttp://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86

นอกจากนี้ตรวจสอบให้แน่ใจว่า PasswordAuthentication ถูกตั้งค่าเป็นไม่เช่นกันเพื่อบังคับให้การเข้าสู่ระบบทั้งหมดใช้กุญแจสาธารณะ

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