ปิดใช้งานการเข้าสู่ระบบของผู้ใช้โดยไม่ปิดใช้งานบัญชี


87

สมมติว่าฉันสร้างผู้ใช้ชื่อ "ปลอม" โดยใช้adduserคำสั่ง ฉันจะแน่ใจได้อย่างไรว่าผู้ใช้รายนี้จะไม่เข้าสู่ระบบที่ทำงานได้โดยไม่ต้องปิดการใช้งานบัญชี ในระยะสั้นฉันต้องการให้บัญชีสามารถเข้าถึงได้ผ่านทางsu - bogusแต่ฉันไม่ต้องการให้สามารถเข้าถึงบัญชีผ่านทางพรอมต์การเข้าสู่ระบบปกติ

ดูเหมือนว่าฉันต้องปิดการใช้รหัสผ่านของผู้ใช้รายนั้น แต่การทำเช่นpasswd -d bogusนั้นไม่ได้ช่วยอะไร ในความเป็นจริงมันทำให้สิ่งต่าง ๆ แย่ลงเพราะตอนนี้ฉันสามารถเข้าสู่ระบบปลอมได้โดยไม่ต้องพิมพ์รหัสผ่าน

มีวิธีการปิดการใช้งานเข้าสู่ระบบปกติสำหรับบัญชีที่กำหนดหรือไม่?

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


2
สถานะของคุณ-dคือการลบรหัสผ่าน ซึ่งแตกต่างจากการปิดใช้งาน (อ้างอิงเป็นล็อคดูคำตอบของ Chad)
คาเลบ

1
คุณอาจต้องการปิดการใช้งานอย่างสมบูรณ์: unix.stackexchange.com/questions/7690/ … ดูคำถามนี้ของ Ubuntu คำถาม: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

คำตอบ:


102
passwd -l user

คือสิ่งที่คุณต้องการ

ที่จะล็อคบัญชีผู้ใช้ แต่คุณจะยังสามารถ

su - user

แต่คุณจะต้องsu - userเป็นราก

อีกวิธีหนึ่งคุณสามารถทำสิ่งเดียวกันโดยการ!ใส่รหัสผ่านของผู้ใช้ใน/etc/shadow(นี่คือทั้งหมดที่passwd -lอยู่เบื้องหลัง) และpasswd -uจะยกเลิกสิ่งนี้


27
โดยการใช้passwd -lตัวเลือกคุณควรทราบว่าผู้ใช้สามารถเข้าสู่ระบบโดยใช้โทเค็นการรับรองความถูกต้องอื่น (เช่นคีย์ SSH)
pl1nk

2
โปรดดูคำตอบของฉันด้านล่างเกี่ยวกับวิธีแก้ปัญหาที่แนะนำเกี่ยวกับวิธีหลีกเลี่ยงปัญหานี้
Jörg Gottschlich

2
สิ่งนี้ใช้ไม่ได้กับ Ubuntu 16.04 มันจะเปลี่ยนวันหมดอายุและไม่อนุญาตให้ผู้ใช้อีกต่อไป
เมอร์ลิน

1
เหมือนกับ--disabled-passwordตัวเลือกที่มอบให้adduserหรือไม่ การสร้างผู้ใช้ที่ไม่มี--disabled-passwordและจากนั้นทำงานpasswd -lกับผู้ใช้นั้นจะได้ผลลัพธ์เช่นเดียวadduserกับการทำงาน--disabled-passwordในครั้งแรกหรือไม่?
haridsv

39

หน้าคนpasswd(1)พูดถึงpasswd -l:

โปรดทราบว่านี่ไม่ได้ปิดการใช้งานบัญชี ผู้ใช้อาจยังคงสามารถเข้าสู่ระบบได้โดยใช้โทเค็นการตรวจสอบความถูกต้องอื่น (เช่นคีย์ SSH) หากต้องการปิดการใช้งานบัญชีผู้ดูแลระบบควรใช้ usermod - หมดอายุ 1 (กำหนดวันหมดอายุของบัญชีเป็น 2 มกราคม 1970)

ดังนั้น

usermod --expiredate 1 [LOGIN]

ดูเหมือนว่าฉันชอบวิธีที่ถูกต้องในการปิดการใช้งานบัญชีผู้ใช้ไม่ควรใช้อีกต่อไป (เช่นเพราะเขาออกจาก บริษัท )


4
บน CentO 6.3 ของฉันpasswd -lบล็อกsshการเชื่อมต่อสำหรับผู้ใช้และusermod --expiredate 1ไม่ได้!
fduff

1
บน CentOS 7.4 ของฉันจะpasswd -lไม่บล็อกsshการเชื่อมต่อสำหรับผู้ใช้อีกต่อไปและusermod --expiredate 1 userทำการบล็อก ตามที่man passwdคุณสามารถใช้chage -E 0 userเพื่อบล็อกผู้ใช้ หลังจากสมัครusermodหรือchageฉันสามารถsudo su user
user12345

usermod --expiredate 0 [LOGIN]ยังใช้งานได้มันจะกำหนดวันหมดอายุเป็น 1 มกราคม 1970 ในขณะที่ 1 ชุดนี้ถึง 2 มกราคม 1970
slm

"ไม่ควรใช้ค่า 0 เนื่องจากถูกตีความว่าเป็นบัญชีที่ไม่มีวันหมดอายุหรือเมื่อวันที่ 1 มกราคม 1970" - เงา (5)
โยฮันเน

28

มีสองวิธีในการป้องกันผู้ใช้จากการเข้าสู่ระบบ:

  1. คุณสามารถล็อคผู้ใช้โดยการแก้ไข /etc/passwd
  2. โดยการออกpasswdคำสั่งโดยตรงด้วย-lสวิตช์

ในกรณีที่สองผู้ใช้สามารถเข้าสู่ระบบโดยใช้โทเค็นการรับรองความถูกต้องอื่น (เช่นคีย์ SSH)

วิธีที่ # 1

  1. ค้นหาที่อยู่ nologin: / bin / nologin หรือ / bin / sbin / nologin
  2. เปิดเทอร์มินัลและล็อกอินด้วยรูท
  3. ชนิด vi /etc/passwd

ตอนนี้คุณอยู่ในpasswdไฟล์กดInsเพื่อแก้ไขไฟล์

เปลี่ยนบรรทัดด้านล่างด้วยnologinตัวเลือก ( /bin/bashหมายถึงผู้ใช้สามารถเข้าสู่ระบบได้)

root:x:0:0:root:/root:/bin/bash

สำหรับสิ่งนี้. nologinหมายถึงผู้ใช้ไม่สามารถเข้าสู่ระบบ

root:x:0:0:root:/root:/bin/nologin

(หรือกับ / bin / sbin / nologin)

  1. ปิด vi Esc :wq

วิธีที่ # 2

วิธีล็อคผู้ใช้: passwd -l username

วิธีปลดล็อกผู้ใช้: passwd -u username


1
บน Ubuntu 14.04 ระบบผมพบแทน/usr/sbin/nologin /bin/nologin
Dennis Williamson

7

มันค่อนข้างง่ายสำหรับคุณที่จะต้องทำการเปลี่ยนแปลง/etc/passwdไฟล์

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


4

ตั้ง/bin/falseเป็นเปลือกหอย/etc/passwd


18
เมื่อตั้งค่าเชลล์เป็น/bin/falseหนึ่งจะป้องกันการใช้ su เพื่อทำหน้าที่เป็นผู้ใช้นั้น นอกจากนี้การใช้งาน/bin/falseจะไม่มีข้อผิดพลาดหรือคำใบ้อื่น ๆ ของสิ่งที่ผิดพลาด - ในกรณีที่ต้องการป้องกันแม้แต่ su จากการถูกใช้เพื่อรับเชลล์ในฐานะผู้ใช้นั้นเชลล์ควรเปลี่ยนไป/sbin/nologinซึ่งทำให้เกิดข้อผิดพลาด
HedgeMage

8
ไม่มีที่suยังคงเป็นไปได้สำหรับผู้ใช้ที่มี/bin/falseเปลือกหอยในpasswd- เพียงแค่ใช้ตัวเลือก:--shell su - --shell /bin/sh bogus
Matej Kovac

1
/usr/sbin/nologinมีผลเช่นเดียวกับ/bin/falseแต่ยังแสดงข้อความที่ให้ข้อมูลที่เป็นประโยชน์
Rörd

0

เมื่อเราล็อกผู้ใช้โดยใช้passwd -l userคำสั่ง " !!" จะถูกระบุใน/etc/shadowไฟล์ แต่เรายังสามารถเปลี่ยนเป็นเชลล์ผู้ใช้จากบัญชีรูท แต่ไม่สามารถเปลี่ยนเป็นบัญชีผู้ใช้โดยเชลล์ล็อกอินผู้ใช้ทั่วไปรายอื่น

นอกจากนี้เรายังสามารถปิดการใช้งานบัญชีโดยการให้/bin/nologinหรือ/bin/falseใน/etc/passwdไฟล์ ดังนั้นผู้ใช้อาจไม่สามารถเข้าสู่ระบบได้


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