ฉันต้องการลงชื่อเข้าใช้ด้วยชื่อผู้ใช้อื่นโดยไม่ต้องออกจากระบบปัจจุบัน (ในเทอร์มินัลเดียวกัน) ฉันจะทำอย่างไร
ฉันต้องการลงชื่อเข้าใช้ด้วยชื่อผู้ใช้อื่นโดยไม่ต้องออกจากระบบปัจจุบัน (ในเทอร์มินัลเดียวกัน) ฉันจะทำอย่างไร
คำตอบ:
วิธีการเกี่ยวกับการใช้su
คำสั่ง?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
หากคุณต้องการเข้าสู่ระบบในฐานะ root คุณไม่จำเป็นต้องระบุชื่อผู้ใช้:
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
โดยทั่วไปคุณสามารถใช้sudo
เพื่อเปิดเชลล์ใหม่ตามที่คุณต้องการ -u
ธงช่วยให้คุณระบุชื่อผู้ใช้ที่คุณต้องการ:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
มีวิธีวนรอบมากขึ้นหากคุณไม่สามารถเข้าถึง sudo ได้เช่น ssh username @ localhost แต่sudo
อาจจะง่ายที่สุดหากติดตั้งแล้วและคุณได้รับอนุญาตให้ใช้งาน
su - [user]
อาจมีประโยชน์ด้วย - เครื่องหมายขีดกลางพิเศษจะให้เชลล์ล็อกอินให้คุณ
echo >>/dev/stderr
ในการเข้าสู่ระบบด้วยsu --login ...
เคล็ดลับใด ๆ ? ฉันพบ btw unix.stackexchange.com/questions/38538/
env
มันเห็นว่าทุกอย่างเป็นระเบียบเช่นเดียวกับการตรวจสอบภาพสามารถไป; และสิ่งหนึ่งที่ไม่ถูกต้อง: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
ไฟล์ ~ / .Xauthority` -rw-------
คือ: ฉันทำสำเนาและให้ฉันเรียก gedit เป็นการทดลอง
โดยทั่วไปคุณใช้sudo
เพื่อเปิดเปลือกใหม่เป็นผู้ใช้ที่คุณต้องการ; -u
ธงช่วยให้คุณระบุชื่อผู้ใช้ที่คุณต้องการ:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
มีวิธีวนมากขึ้นหากคุณไม่สามารถเข้าถึง sudo ได้ssh username@localhost
แต่ฉันคิดว่าsudo
อาจจะง่ายที่สุดหากติดตั้งไว้และคุณได้รับอนุญาตให้ใช้
sudo -s
ช่วยให้คุณมีเปลือกเช่นsu
, จำลองเช่นการเข้าสู่ระบบsudo -i
su -
สามารถใช้ร่วมกับ-u $user
แน่นอน
$ whoami
คำสั่งนี้พิมพ์ผู้ใช้ปัจจุบัน ในการเปลี่ยนผู้ใช้เราจะต้องใช้คำสั่งนี้ (ตามด้วยรหัสผ่านของผู้ใช้):
$ su secondUser
Password:
หลังจากป้อนรหัสผ่านที่ถูกต้องคุณจะเข้าสู่ระบบในฐานะผู้ใช้ที่ระบุ (ซึ่งคุณสามารถตรวจสอบโดยเรียกใช้whoami
อีกครั้ง
หากคุณใช้งาน Ubuntu และหากผู้ใช้ที่คุณต้องการเข้าสู่ระบบเนื่องจากไม่มีชุดรหัสผ่าน:
sudo su - username
ป้อนรหัสผ่านของคุณเองและคุณควรตั้งค่า แน่นอนสิ่งนี้ต้องการให้ผู้ใช้ของคุณมีสิทธิ์ในการรับสิทธิ์รูsudo
ท
ในการสลับเซสชันเทอร์มินัลเป็นผู้ใช้อื่นซึ่งผู้ใช้นั้นไม่สามารถออกจากกลับไปเป็นผู้ใช้เดิมให้ใช้ exec:
$ | # exec su - [ชื่อผู้ใช้]
เทคนิคนี้จะเข้าสู่ระบบผู้ใช้ใหม่ในกระบวนการคำศัพท์ใหม่และปิดผู้ใช้ปัจจุบัน ด้วยวิธีดังกล่าวเมื่อผู้ใช้พยายามออกหรือ Ctrl-D เทอร์มินัลจะปิดราวกับว่าผู้ใช้นั้นเป็นผู้สร้างอินสแตนซ์นั่นคือผู้ใช้จะไม่สามารถย้อนกลับไปสู่คำศัพท์ดั้งเดิมของผู้ใช้ได้ ค่อนข้างไม่มีจุดหมายการพิจารณาว่าพวกเขายังคงสามารถเริ่มต้นเซสชันเทอร์มินัลใหม่และอยู่ในการเข้าสู่ระบบของผู้ใช้เดิมโดยอัตโนมัติ แต่มี
แก้ไข: สำหรับสิ่งที่คุ้มค่าคุณสามารถใช้คำสั่ง linux vlock ใน ~ / .bashrc ของคุณเพื่อล็อคเซสชันเทอร์มินัลโดยค่าเริ่มต้นต้องการรหัสผ่านของคำที่ผู้ใช้เซสชันปลดล็อค สิ่งนี้จะป้องกันการเริ่มต้นคำดังกล่าวภายใต้บริบทผู้ใช้เดิมเนื่องจากคำว่าไม่ได้ถูกสร้างอินสแตนซ์โดยใช้ ~ / .bashrc ที่ไม่ใช่ค่าเริ่มต้นของผู้ใช้ตามที่กำหนดค่าไว้
sudo -iu <your_username>
สำหรับฉันทำเคล็ดลับ
อีกเส้นทางหนึ่งคือการเปิดตัวเชลล์ใหม่ในฐานะผู้ใช้ที่แตกต่าง (ไม่ใช่รูท) เพื่อรันคำสั่งในฐานะผู้ใช้นั้น
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
ตัวอย่างนี้คือmongodb
ผู้ใช้ เมื่อปรับใช้คลัสเตอร์ MongoDB ที่ถูกแบ่งใช้กระบวนการที่จำเป็นทั้งหมดจะต้องรันmongodb
และไม่จำเป็น (หรือสะดวกทั้งหมด) เพื่อ daemonize กระบวนการโดยใช้สคริปต์เริ่มต้นสำหรับหลายสิบโหนด
ให้เราได้รับสิทธินี้: คุณเข้าสู่ระบบในฐานะผู้ใช้และต้องการ "เข้าสู่ระบบ" ในฐานะผู้ใช้เพื่อเรียกใช้คำสั่งบางอย่าง แต่ต้องการที่จะกลับมาที่ UserA เมื่อทำ เพื่อความเรียบง่ายฉันถือว่าคุณต้องการรัน ls -l / tmp เป็น UserB หากคุณไม่ต้องการออกจากเชลล์ปัจจุบันของ UserA แต่ให้รันคำสั่งเป็น UserB และยังคงอยู่ในระบบในฐานะ UserA คุณควรทำสิ่งนี้:
su - UserB -c "ls -l /tmp" <-- Just an example
สิ่งนี้จะถือว่าคุณรู้รหัสผ่านสำหรับ UserB อย่างไรก็ตามหากคุณไม่ทราบรหัสผ่านของผู้ใช้คุณต้องรู้รหัสผ่านรูท แล้ว:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
หากคุณต้องการเข้าสู่ระบบในชื่อ UserB ชั่วคราวเพื่อรันคำสั่งมากมายให้ทำดังนี้
sudo su - UserB
สิ่งนี้จะทำให้คุณมีเชลล์ใหม่สำหรับ UserB (ตรวจสอบด้วยการพิมพ์ id) เมื่อเสร็จแล้วคุณสามารถทำ ctrl-d และกลับสู่การเข้าสู่ระบบของคุณ
หากคุณต้องการเรียกใช้เพียงคำสั่งเดียวคุณสามารถใช้ sudo:
sudo -u username command
~$ sudo login
จากนั้นจะแจ้งให้คุณใส่รหัสผ่าน sudo (รหัสผ่านของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน)
ตรวจสอบให้แน่ใจว่าผู้ใช้ปัจจุบันอยู่ในไฟล์ sudoers!
$XDG_RUNTIME_DIR
โดยเฉพาะ) ที่ทำให้ฉันรู้สึกแย่ -> unix.stackexchange.com/questions/354826/…