วิธีการเปลี่ยนไดเรกทอรีบ้านของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน


17

ขณะนี้ฉันลงชื่อเข้าใช้เซิร์ฟเวอร์ CentOS และฉันต้องการเปลี่ยนไดเรกทอรีบ้านจาก/home/myuserName/เป็น/var/www/html/

ฉันลองคำสั่งด้านล่าง:

> sudo usermod -d /var/www/html myuserName

แต่นี่ทำให้ฉันมีข้อผิดพลาด:

usermod: user myUserName is currently logged in

2
ฉันไม่แน่ใจว่าคุณหมายถึงอะไรHOME=/var/www/htmlจะเปลี่ยนเซสชั่นบ้านของคุณ
Archemar

ที่ช่วยได้ แต่ฉันต้องการเปลี่ยนไดเรกทอรีบ้านของฉันอย่างถาวรไม่ใช่เพียงแค่เซสชันปัจจุบัน
Mohan

คำตอบ:


17

คำตอบสั้น ๆ : คุณไม่สามารถ

คำตอบยาว :

HOMEdir ถูกตั้งค่าใน/etc/passwdฟิลด์ที่ 6 มันถูกอ่านเมื่อ loggin เปลือกของคุณเริ่มต้นด้วย dir บ้านนี้

วิธีที่เหมาะสมในการเปลี่ยนบ้าน dir สำหรับ joe คือ:

  • มี joe ออกจากระบบ
  • ใช้usermod -d /new/home joe เพื่อเปลี่ยนบ้าน dir สำหรับเซสชั่นที่ตามมา

เมื่อเซสชันทำงานแล้วคุณต้องทำสองสิ่ง:

  • แก้ไข$HOMEเพื่อเปลี่ยนบ้าน dir สำหรับเซสชั่น (จะทำซ้ำในเซสชั่นที่ใช้งานทั้งหมด)
  • ใช้sudo vipwสำหรับแก้ไข home dir สำหรับ wession ครั้งต่อไป

นอกจากนี้โปรดระวังว่าคุณอาจมีปัญหากับการอนุญาต / การเป็นเจ้าของใน /var/www/html


1
แก้ไข / etc / passwd ใช้ได้สำหรับฉันเสมอ ดู @ 7171u ด้านล่าง
jeffmcneill

แก้ไข / etc / passwd โดยไม่ต้องออกจากระบบ / เข้าสู่ระบบ?
Archemar

การแก้ไข / etc / passwd สำหรับบัญชีที่เข้าสู่ระบบและจากนั้นเริ่มเซสชันใหม่ด้วยบัญชีเดียวกันนั้นและเชื่อฟัง dir บ้านใหม่ สำหรับบัญชีที่ลงชื่อเข้าใช้แล้วเซสชันนั้นยังคงมีตำแหน่งบ้านเดิมในสภาพแวดล้อม
jeffmcneill

8

คำสั่ง usermod จะไม่ทำงานหากคุณลงชื่อเข้าใช้ด้วยผู้ใช้ที่คุณพยายามทำการเปลี่ยนแปลง

จากหน้าคู่มือใน usodod มันพูดว่า:

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

ลองเข้าสู่ระบบด้วยผู้ใช้อื่นและรันคำสั่งอีกครั้ง

หากไม่สามารถทำได้คุณสามารถแก้ไขไฟล์ / etc / passwd ด้วยตนเอง (ซึ่งจริงๆแล้วคือคำสั่ง usermod กำลังทำอยู่) หากคุณทำเช่นนั้นให้แน่ใจว่าคุณสำรองไฟล์ไว้ในกรณีที่คุณทำบางสิ่งที่โง่โดยไม่ได้ตั้งใจ


7

คุณต้องแก้ไข/etc/passwdไฟล์เพื่อเปลี่ยนโฮมไดเร็กตอรี่ของผู้ใช้ที่ล็อกอินอยู่ในปัจจุบัน

แก้ไข/etc/passwdด้วยsudo vipwและเปลี่ยนโฮมไดเร็กทอรีของผู้ใช้

vipwขอแนะนำอย่างอื่นนอกเหนือจากvimหรือบรรณาธิการอื่น ๆ ตั้งแต่vipwจะตั้งล็อคเพื่อป้องกันข้อมูลเสียหาย


2

วิธีแก้ปัญหาที่เป็นไปได้สองสามข้อขึ้นอยู่กับสิ่งที่คุณต้องการแก้ไข:

ตัวเลือก 1. เพิ่มHOME=/var/www/htmlใน. bashrc ของคุณ

ตัวเลือกที่ 2 เปลี่ยนชื่อ/home/myusernameแล้วสร้าง symlink ไปยังไดเรกทอรีที่ต้องการ

mv /home/myusername /home/myusername-old
ln -s /var/www/html /home/myusername

กระต่ายตัวร้าย หลังจากนั้นผู้ใช้รายอื่นไม่สามารถใช้ myusername-old ได้
GeoMint

-2

คุณสามารถทำได้ชั่วคราวเท่านั้น ซึ่งหมายความว่าทุกครั้งที่คุณเข้าสู่ระบบในฐานะผู้ใช้นั้นคุณต้องเรียกใช้คำสั่งนี้:

export HOME=/var/www/html

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

~ จะเริ่มชี้ไปที่ /var/www/htmlนอกจากนี้ยังจะเริ่มต้นที่จะชี้ไปที่

แอปพลิเคชันที่ทำงานร่วมกับฉันคือ NPM และ Maven

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