คุณจะค้นหาผู้ใช้ที่เข้าสู่ระบบใน OS X GUI ได้อย่างไร?


11

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

เป็นไปได้ผ่านทางบรรทัดคำสั่ง?


1
รอ GUI และบรรทัดคำสั่งหรือไม่ ทั้งสอง? หรือเพียงแค่บรรทัดคำสั่ง? ฉันสับสน
แรงกล้า

@ Nano8Blazex ทำให้คำถามนั้นชัดเจนยิ่งขึ้นสำหรับคุณ
gak

: D เยี่ยมเลย!
พลังมาก

คำตอบ:


19

GUI:

  • เปิดบานหน้าต่างการตั้งค่าบัญชีในการตั้งค่าระบบ บัญชีผู้ใช้ที่เลือกไว้ล่วงหน้าจะเป็นบัญชีผู้ใช้ที่ใช้งานอยู่
  • หากการสลับผู้ใช้อย่างรวดเร็วเปิดใช้งานเมนูพิเศษ (เมนูทางด้านขวาของแถบเมนู) สามารถกำหนดค่าเพื่อแสดงชื่อของผู้ใช้ที่ใช้งานอยู่

บรรทัดคำสั่ง:

  • ตรวจสอบเจ้าของ /dev/console

    stat -f '%u %Su' /dev/console
    
  • เขียนโปรแกรมที่ใช้ API อย่างเป็นทางการ ( SCDynamicStoreCopyConsoleUser ; ดูด้านล่าง)

ในโปรแกรม C:

รหัส C ในQ&A ทางเทคนิค QA1133: การกำหนดสถานะการเข้าสู่ระบบของผู้ใช้คอนโซล แสดงวิธีการกำหนดผู้ใช้ที่เป็นเจ้าของเซสชัน GUI ที่ใช้งานอยู่

ตัวอย่างเช่น:

/* Adapted from QA1133:
 *    http://developer.apple.com/mac/library/qa/qa2001/qa1133.html
 */
#include <assert.h>
#include <SystemConfiguration/SystemConfiguration.h>

int main(int argc, char **argv) {
    SCDynamicStoreRef store;
    CFStringRef name;
    uid_t uid;
#define BUFLEN 256
    char buf[BUFLEN];
    Boolean ok;

    store = SCDynamicStoreCreate(NULL, CFSTR("GetConsoleUser"), NULL, NULL);
    assert(store != NULL);
    name = SCDynamicStoreCopyConsoleUser(store, &uid, NULL);
    CFRelease(store);

    if (name != NULL) {
        ok = CFStringGetCString(name, buf, BUFLEN, kCFStringEncodingUTF8);
        assert(ok == true);
        CFRelease(name);
    } else {
        strcpy(buf, "<none>");
    }

    printf("%d %s\n", uid, buf);

    return 0;
}

ดู manpage getlogin
Itachi

stat -f '% u% Su' / dev / console ทำงานได้อย่างสมบูรณ์แบบ ขอขอบคุณ
Akshat

7

ผ่านบรรทัดคำสั่งwhoและusersควรทำงาน


อ่าwhoและมองหา "คอนโซล" ขอบคุณ
gak

1
@ เจอรัลด์: การใช้whoไม่ถูกต้องในระบบ 10.4 ของฉันเมื่อใช้การสลับผู้ใช้อย่างรวดเร็ว (ระบบที่ฉันใช้อยู่ในขณะนี้แสดงผู้ใช้อื่นบน“ คอนโซล” แม้ว่าเซสชัน GUI ของฉันจะเป็นแอคทีฟ) บางทีมันน่าเชื่อถือมากขึ้นในรุ่นที่ใหม่กว่า
Chris Johnsen

@JohnT: หากคุณมีผู้ใช้ 2 คนเข้าสู่ระบบ (การสลับผู้ใช้) คำสั่ง who จะแสดงทั้งผู้ใช้ที่เกี่ยวข้องกับ 'คอนโซล' สิ่งนี้ทำงานไม่ถูกต้อง
Akshat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.