การแชร์เทอร์มินัลกับผู้ใช้หลายคน (พร้อมหน้าจอหรืออื่น ๆ )


11

ฉันกำลังตั้งค่าเซิร์ฟเวอร์ที่มีผู้พัฒนาหลายรายกำลังทำงานกับหลายแอปพลิเคชัน

ฉันพบวิธีที่จะให้นักพัฒนาบางคนแบ่งปันการเข้าถึงไดเรกทอรีแอปพลิเคชันที่จำเป็นโดยใช้setgid bitและdefault ACLsเพื่อให้ทุกคนในการเข้าถึงกลุ่ม

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

วิธีหนึ่งที่สามารถใช้งานได้คือการใช้คุณสมบัติผู้ใช้หลายคนบนหน้าจอ พวกเขาไม่ทำงานออกจากกล่อง suid rootแต่หน้าจอบ่นเกี่ยวกับต้อง การให้นั้นมีข้อเสียหรือไม่? ฉันค่อนข้างระมัดระวังเกี่ยวกับการใช้suid rootอะไร อาจจะมีสาเหตุที่ไม่ใช่ค่าเริ่มต้นหรือไม่

ฉันควรทำด้วยscreenหรือมีวิธีที่ชาญฉลาดอื่น ๆ ในการทำสิ่งที่ฉันต้องการ?

คำตอบ:


24

ใช่คุณสามารถทำได้ด้วยscreenซึ่งมีการสนับสนุนผู้ใช้หลายคน

ก่อนอื่นให้สร้างเซสชันใหม่:

screen -d -m -S multisession

แนบกับมัน:

screen -r multisession

เปิดการสนับสนุนผู้ใช้หลายคน:

กดCtrl-aและพิมพ์

:multiuser on
:acladd USER ← use username of user you want to give access to your screen

ตอนนี้Ctrl-a dและรายการเซสชัน:

$ screen -ls
There is a screen on:
    4791.multisession   (Multi, detached)

ตอนนี้คุณมีหน้าจอผู้ใช้หลายคน ตั้งชื่อmultisessionให้กับผู้ใช้ acl'd เพื่อให้เขาสามารถแนบ:

screen -x youruser/multisession

และนั่นคือมัน

ข้อเสียเปรียบเพียงอย่างเดียวคือscreenจะต้องเรียกใช้เป็นsuidราก แต่เท่าที่ฉันรู้คือค่าเริ่มต้นสถานการณ์ปกติ

อีกตัวเลือกหนึ่งคือการทำscreen -S $screen_id -X multiuser on,screen -S $screen_id -X acladd authorized_user

หวังว่านี่จะช่วยได้


1
suid rootนี่คือสิ่งที่ผมพยายามขึ้นไปที่หน้าจอบ่นเกี่ยวกับต้อง ฉันคิดว่าฉันจะถามว่านี่เป็นวิธีที่ต้องการทำสิ่งที่ก่อนที่จะเพิ่มสิทธิ์ root กับโปรแกรมที่ไม่ได้พวกเขาไปโดยปริยาย
varesa

แปลก. ฉันscreenคือsuidราก
Scyld de Fraud

ฉันคิดว่านั่นอาจเป็นสิ่งที่ต้องพึ่งพา ฉันลองใช้ CentOS 6 หรือ 7 (ต้องตรวจสอบ)
varesa

สำหรับสิ่งที่คุ้มค่าscreenไม่ได้suid rootอยู่ใน Ubuntu 16.04
icedwater

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