ไม่สามารถเข้าสู่บัญชีผู้ใช้ที่สร้างขึ้นใหม่


25

พยายามที่จะเปลี่ยนบัญชีเป็นบัญชีที่สร้างขึ้นใหม่ของฉันฉันได้รับหน้าจอสีดำและจากนั้นมันจะพาฉันกลับไปที่หน้าจอเข้าสู่ระบบหลักหลังจากป้อนรหัสผ่านที่ถูกต้อง

เมื่อเข้าสู่บัญชีที่ฉันมีอยู่ก่อนหน้านี้ฉันจะได้รับ:

"System Program Problem Detected"

Details:

Executable path /usr/bin/Xorg

Package: xserver-xorg-core 2:1.11.4-0ubuntu10.1

Details: Crash
... (tons more, but no way to copy paste or save)

เมื่อฉันพยายาม su

su -l penner

ฉันเข้าใจ:

No directory, logging in with HOME=/

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


คุณสร้างบัญชีผู้ใช้อย่างไร คุณทำมันจากกุยหรือจากบรรทัดคำสั่ง? หากคุณทำจากบรรทัดคำสั่งคุณจะต้องระวังว่าผู้ใช้และผู้ใช้เพิ่มทำสิ่งที่แตกต่างกันมาก นอกจากนี้ดูเหมือนว่าไฟล์จาก / etc / skel จะไม่ถูกคัดลอก คุณช่วยกรุณาแอลในบ้านของคุณและผู้ใช้ใหม่เพื่อที่เราจะได้เห็นว่าเกิดอะไรขึ้น?
SuperMatt

คำตอบ:


31

หากคุณสร้างบัญชีผู้ใช้ด้วยuseraddคุณจะต้องตั้งค่าทุกอย่างด้วยตนเอง นี่คือเหตุผลที่เมื่อสร้างบัญชีผู้ใช้จากบรรทัดคำสั่งแนะนำให้ใช้adduserใน Ubuntu (และ Debian และระบบที่ใช้ Debian อื่น ๆ ) แทน คุณอาจต้องการลบผู้ใช้ที่มีuserdelหรือdeluserสร้างใหม่adduserอีกครั้ง มิฉะนั้น...

แก้ไขตำแหน่งของไดเรกทอรีภายในบ้าน

หากคุณต้องการเก็บบัญชีผู้ใช้และแก้ไขปัญหาคุณต้องดูที่:

  • ชื่อของโฮมไดเร็กทอรีที่บัญชีผู้ใช้กำหนดค่าไว้จริง ๆ
  • ชื่อของไดเรกทอรีที่คุณสร้างขึ้นจริง

สิ่งเหล่านี้จะต้องเหมือนกันทุกประการ ข้อความแสดงข้อผิดพลาดที่คุณได้รับsu -l pennerแจ้งว่าไม่เหมือนกัน

ในการตรวจสอบโฮมไดเรกทอรีที่บัญชีผู้ใช้นั้นได้รับการกำหนดค่าให้รันคำสั่งนี้ (ดูman 5 passwdและman grepสำหรับข้อมูลเพิ่มเติม):

grep penner /etc/passwd

คุณควรเห็นบรรทัดดังนี้:

penner:x:1000:1000:Eliah Kagan,,,:/home/penner:/bin/bash

นั่นคือ:ฟิลด์ -separated ที่หก(หลังจากที่ห้า:) มีโฮมไดเร็กตอรี่ ถ้าไม่ใช่/home/pennerมันควรจะเป็น หากไดเรกทอรีที่คุณสร้างขึ้นสำหรับผู้ใช้ไม่/home/pennerควรเป็นเช่นกัน หากทั้งสองไดเรกทอรีเหมือนกัน แต่ไม่มีใครเป็น/home/pennerแล้วอาจว่าการทำงานในทางทฤษฎี แต่คุณควรจะทำให้พวกเขาทั้งสอง/home/pennerเพราะซอฟต์แวร์จำนวนมากสันนิษฐานว่าทั้งหมดไม่ใช่ของผู้ใช้ไดเรกทอรีบ้านroot/home/username

คุณสามารถเปลี่ยนpennerโฮมไดเร็กตอรี่เป็น/home/pennerโดยใช้คำสั่งนี้:

sudo usermod -d /home/penner penner
  • ดูman usermodข้อมูลเพิ่มเติม

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

ถ้า (หรือหนึ่งครั้ง) ชื่อมีทั้ง/home/pennerคุณควรตรวจสอบให้แน่ใจว่าผู้ใช้มีการเข้าถึงไดเรกทอรีบ้านของตนเอง วิ่ง:

ls -ld /home/penner

คุณควรเห็นสิ่งที่มีลักษณะเช่นนี้ (แม้ว่าวันที่และเวลาจะแตกต่างกัน):

drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner

หากdrwxr-xr-xคุณมีสิ่งที่เริ่มต้นด้วย-แทนที่จะเป็นdคุณสร้างไฟล์แทนที่จะเป็นไดเรกทอรี ลบไฟล์และสร้างไดเรกทอรีที่นั่นแทน

หากแทนที่จะเป็นคนแรกที่pennerคุณมีอย่างอื่นผู้ใช้จะไม่ได้เป็นเจ้าของโฮมไดเร็กตอรี่ของพวกเขาดังนั้นให้พวกเขาเป็นเจ้าของ:

sudo chown penner /home/penner
  • ดูman chownข้อมูลเพิ่มเติม

หากแทนที่จะdrwxr-xr-xมีขีดกลางในสามอักขระถัดไปหลังจากdนั้นผู้ใช้จะไม่สามารถเข้าถึงแบบเต็มได้ แก้ไขดังต่อไปนี้:

sudo chmod u+rwx /home/penner
  • ดูman chmodข้อมูลเพิ่มเติม

( pennerสามารถเรียกใช้คำสั่งนี้หากพวกเขาเป็นเจ้าของโฮมไดเร็กตอรี่ของพวกเขา, ดังนั้นหากคุณต้องการ, คุณสามารถรันสิ่งนี้เป็นsudo -u penner u+rwx /home/penner:)

การทำให้แน่ใจว่าผู้ใช้รายอื่นไม่มีการเข้าถึงแบบครอบคลุม

หากแทนที่จะdrwxr-xr-xมีตัวอักษรws แทน-ในตัวอักษรหกตัวสุดท้ายผู้ใช้รายอื่นpennerอาจมีสิทธิ์เข้าถึงการเขียนไปยังpennerโฮมไดเร็กตอรี่ของ สิ่งนี้เป็นสิ่งที่อันตราย (เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่และต้องการให้เป็นเช่นนี้และตั้งสิ่งต่าง ๆ ไว้เพื่อที่ว่ามันจะไม่เป็นปัญหา) วิธีแก้ไข:

sudo chmod -R go-w /home/penner

ค่าเริ่มต้นอื่น ๆ

มีการเปลี่ยนแปลงอื่น ๆ ที่คุณอาจต้องการทำ ตามค่าเริ่มต้นใน Ubuntu (นั่นคือถ้าคุณสร้างบัญชีผู้ใช้ด้วยadduserหรือด้วยเครื่องมือกราฟิกซึ่งคุณไม่ได้ทำ):

  1. โฮมไดเรกทอรีมีสิทธิ์อ่านและเขียนสำหรับทุกคนไม่ใช่แค่ผู้ใช้ที่เป็นเจ้าของ ผู้ใช้สามารถเปลี่ยนแปลงสิ่งนี้ได้ทั้งไดเรกทอรีบ้านหรือไฟล์และไดเรกทอรีย่อยที่อยู่ภายใน แต่ถ้าคุณต้องการค่าเริ่มต้นนี้และคุณไม่มีตัวที่สองและสามrและxในdrwxr-xr-xให้เรียกใช้:

    sudo chmod 755 /home/penner
    

    ( pennerสามารถเรียกใช้คำสั่งนี้หากพวกเขาเป็นเจ้าของโฮมไดเร็กตอรี่ของพวกเขา, ดังนั้นหากคุณต้องการ, คุณสามารถรันสิ่งนี้เป็นsudo -u penner chmod 755 /home/penner:)

  2. ผู้ใช้แต่ละคนมีกลุ่มของตนเองมีชื่อเหมือนกับผู้ใช้และนี่คือกลุ่มหลักของผู้ใช้ โฮมไดเรกทอรีของพวกเขาเป็นของกลุ่มนี้ นั่นคือความหมายของการที่สองในpenner drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/pennerมันก็โอเคถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่ แต่ถ้าคุณไม่ได้ตั้งใจที่จะทำสิ่งที่แตกต่างคุณควรตรวจสอบให้แน่ใจว่าpennerตั้งค่าด้วยวิธีนี้เนื่องจากมีข้อมูลเฉพาะตัวกลุ่มหลักที่เป็นไปได้สำหรับผู้ใช้หรือเจ้าของกลุ่มในไดเรกทอรีหลักของผู้ใช้อาจทำให้เกิดปัญหาด้านความปลอดภัย

    groups pennerวิ่ง (ดูman groupsข้อมูลเพิ่มเติม) คุณควรเห็นสิ่งนี้:

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    ไม่ต้องกังวลหากไม่เป็นเช่นนั้น ฉันจะไปที่เร็ว ๆ นี้ :แต่มองไปที่คำแรกหลังจากที่ นั่นคือชื่อของกลุ่มหลักของผู้ใช้ สมมติว่าคุณต้องการpennerให้แน่ใจว่าเป็น หากไม่ใช่ให้เปลี่ยน:

    sudo usermod -g penner penner
    

    หากคุณได้รับข้อผิดพลาดว่ากลุ่มpennerไม่มีอยู่คุณจะต้องสร้างมันด้วยคำสั่งนี้ (จากนั้นเรียกใช้คำสั่งข้างต้นอีกครั้ง):

    sudo addgroup penner
    
    • ดูman addgroupข้อมูลเพิ่มเติม (หากคุณต้องการคุณสามารถใช้groupaddคำสั่งเพื่อสร้างกลุ่ม)
  3. เมื่อคุณวิ่งgroups pennerคุณอาจมีรายการกลุ่มที่สั้นกว่าของฉันpenner : penner adm dialout cdrom plugdev lpadmin sambashareมาก สำหรับผู้ใช้เดสก์ทอปadm, dialout, cdrom, plugdev, lpadminและsambashareให้ความสามารถในการที่ผู้ใช้คอมพิวเตอร์ทั่วไปควรจะมี ดังนั้นหากคุณไม่มีเหตุผลที่จะทำอย่างอื่นpennerควรอยู่ในกลุ่มเหล่านี้ อย่างไรก็ตามกลุ่มเหล่านี้ไม่ใช่กลุ่มหลักดังนั้นจึงตั้งค่าต่างกัน หากpennerว่าไม่ได้อยู่ในกลุ่มเหล่านี้และคุณต้องการpennerที่จะอยู่ในกลุ่มทั้งหมดให้รันคำสั่งนี้:

    sudo usermod -a -G adm,dialout,plugdev,lpadmin,sambashare penner
    

    ในกรณีที่คุณสนใจนี่คือความหมายของกลุ่มเหล่านั้น:

    (ที่มา: สิทธิ์ในเอกสารของ Ubuntu)

ทำให้ผู้ใช้เป็นผู้ดูแลระบบ

หากคุณไม่ต้องการpennerเป็นผู้ดูแลระบบคุณอาจไม่จำเป็นต้องทำอะไรอีก คุณสามารถตรวจสอบว่าpennerเป็นผู้ดูแลระบบด้วยgroups pennerหรือไม่ หากค่าadminมิได้sudoเป็น บริษัท จดทะเบียนแล้วpennerไม่ได้เป็นผู้ดูแลระบบ

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

sudo usermod -a -G admin penner
sudo usermod -a -G sudo penner
  • เหตุผลที่มีสองกลุ่มคือก่อน Ubuntu 12.04 LTS ผู้ดูแลระบบอยู่ในadminกลุ่ม เริ่มต้นด้วย Ubuntu 12.04 LTS ผู้ดูแลระบบอยู่ในsudoกลุ่ม แต่ถ้าระบบ 12.04 LTS ของคุณได้รับการอัพเกรดจากรุ่นก่อนหน้านี้ (และสิ่งนี้ควรใช้กับ Ubuntu รุ่นใหม่กว่าเช่น 12.10 เมื่อออกมาซึ่งอัพเกรดจาก Ubuntu 11.10 หรือเก่ากว่า) ดังนั้นความเข้ากันได้แบบย้อนหลังผู้ดูแลระบบเป็นสมาชิกของทั้งคู่และsudo adminโดยทั่วไปหากกลุ่มใดกลุ่มหนึ่งเหล่านี้ไม่ได้มอบความสามารถด้านการดูแลระบบก็ไม่มีอยู่ดังนั้นการรันทั้งสองคำสั่งข้างต้น (แยกกันไม่ใช่แบบsudo usermod -a -G admin,sudo penner) เป็นวิธีที่ปลอดภัยและมีประสิทธิภาพในการทำให้pennerผู้ดูแลระบบ

ขอบคุณ! สิ่งที่ชอบ adduser เป็นสิ่งที่ดี แต่ฉันชอบที่จะรู้วิธีการทำสิ่งต่าง ๆ ด้วยตนเองเช่นกัน คำตอบที่ละเอียดมาก! ฉันซาบซึ้งจริงๆ
penner

sudo chmod u+a /home/pennerให้ข้อผิดพลาดกับ Ubuntu 16.04 (Xenial) คือsudo chmod u+rw /home/pennerการทดแทนที่เหมาะสม?
Nickolai Leschov

@NickolaiLeschov ขออภัยที่ - และขอบคุณสำหรับการชี้ให้เห็นข้อผิดพลาด! ฉันแก้ไขคำสั่งแล้ว
Eliah Kagan

นี่เป็นเพียงใบ้ทำไมไม่ลบออกuseraddแล้ว? การเก็บรหัสที่ผิดพลาดแบบสุ่ม
dashesy

1
@dashesy ขอบคุณ - ฉันไม่ทราบว่าการใช้useraddทำให้เกิดปัญหากับ Ubuntu ที่ไม่ได้ทำให้เกิดปัญหากับระบบอื่น ในระบบ 16.04 ของฉัน/etc/default/useraddมี (เป็นบรรทัดSHELL=/bin/shที่ไม่มีเครื่องหมายคอมเมนต์เท่านั้น) และ useradd (8) ดูเหมือนจะบอกว่าSHELLมีการใช้ค่าหากไม่ได้กำหนดแฟล็ก-s/ --shellแต่ในระบบ 16.04 ของฉันที่ไม่ได้เกิดขึ้น ฉันพูดผิดอย่างเร่งรีบว่าอูบุนตูuseraddจะไม่พัง ตอนนี้ฉันไม่แน่ใจ อาจจะมีเหตุผลที่ดีสำหรับความแตกต่างระหว่าง Fedora และ Debian (และ Ubuntu) นี้ ... แต่ฉันได้ลบความคิดเห็นของฉันเพื่อไม่ให้คนเข้าใจผิด
Eliah Kagan

0

สิ่งนี้ส่วนใหญ่เกิดขึ้นเมื่อคุณสร้างผู้ใช้โดยไม่ต้องสร้างโฮมไดเรกทอรีสำหรับผู้ใช้ สิ่งนี้สามารถแก้ไขได้โดยใช้คำสั่งนี้เมื่อสร้างผู้ใช้

useradd -m the_username

แฟล็ก -m คือสิ่งที่สร้างโฮมไดเร็กทอรีสำหรับผู้ใช้ หลังจากสร้างผู้ใช้ให้ตรวจสอบว่ามีโฮมไดเรกทอรีอยู่สำหรับผู้ใช้นั้นหรือไม่

ls /home

หากคุณเห็นชื่อผู้ใช้นั้นแสดงว่าสิ่งสุดท้ายที่ต้องทำคือกำหนดรหัสผ่านให้กับผู้ใช้รายนั้น

passwd the_username

ตอนนี้คุณสามารถเข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่าน


-1

ctrl + alt + f1 และเข้าสู่ระบบที่นั่นและเรียกใช้

sudo chown -R $ USER: $ USER $ HOME

จากนั้นกด ctrl + alt + f7 และลองเข้าสู่ระบบ

มันจะทำงาน

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