Tạo tài khoản khách trong Gnome 3.X trên Arch Linux


7

Tôi muốn có một tài khoản khách giống như trong Ubuntu có các tính năng sau:

  1. Nó không yêu cầu mật khẩu để đăng nhập
  2. Một thư mục nhà mới ( /tmpnếu có thể) được tạo ra không có dữ liệu mỗi lần
  3. Dữ liệu người dùng sẽ bị xóa ngay sau khi anh ấy / cô ấy đăng xuất
  4. Người dùng không thể sử dụng sudo

Tôi đang chạy Gnome 3.20 trên Arch Linux

LƯU Ý: vui lòng không đóng câu hỏi của tôi dưới dạng trùng lặp Tạo tài khoản khách với quyền truy cập hạn chế vào các ứng dụng vì câu hỏi đó không có câu trả lời cho điểm thứ 2 và thứ 3 của tôi


Điều này có liên quan. Thậm chí có thể là một bản dupe nếu câu trả lời phù hợp với bạn: Tạo tài khoản khách với quyền truy cập hạn chế vào các ứng dụng .
terdon

@terdon có vẻ như là một công việc xung quanh và không chính xác như Ubuntu
Edward Torvalds

Tôi không biết làm thế nào Ubuntu làm điều đó. Nếu bạn cần "chính xác như Ubuntu", bạn sẽ phải chỉnh sửa câu hỏi của mình và giải thích điều đó có nghĩa là gì. Tuy nhiên, các liên kết được cung cấp trong câu trả lời được liên kết đưa ra những cách bạn có thể giới hạn quyền hạn của người dùng và gần như chắc chắn cách Ubuntu đã thực hiện bất cứ điều gì họ đã thực hiện sau hậu trường. Thử nó.
terdon

Câu trả lời:


9

Hóa ra nó khá đơn giản với GDM. Tôi giả sử bạn đang sử dụng GDM vì bạn cũng đang sử dụng Gnome. Đầu tiên, tạo guesttài khoản người dùng với mật khẩu trống:

sudo useradd -d /tmp/guest -p $(openssl passwd "") guest

Các openssl passwd "" sẽ trở lại giá trị băm của chuỗi rỗng, do đó thiết lập mật khẩu để trống.

Bây giờ, tất cả những gì bạn cần là hai tập lệnh này:

  • /etc/gdm/PostLogin/Default

    Điều này được thực hiện sau khi bạn đăng nhập và sẽ tạo thư mục /tmp/$guestuser( /tmp/guesttheo mặc định) và sao chép các tệp mặc định từ /etc/skelđó. Để thay đổi tên người dùng mặc định cho người dùng khách, hãy đặt thành tên guestuserkhác ở đầu.

    #!/bin/sh
    
    guestuser="guest"
    
    ## Set up guest user session
    if [[ "$USER" = "$guestuser" ]]; then
        mkdir /tmp/"$guestuser"
        cp /etc/skel/.* /tmp/"$guestuser"
        chown -R "$guestuser":"$guestuser" /tmp/"$guestuser"
    fi
    exit 0
  • /etc/gdm/PostSession/Default

    Điều này được thực hiện sau khi bạn đăng xuất và sẽ xóa /etc/$guestuserthư mục và tất cả nội dung của nó. Đảm bảo đặt guestusercùng một giá trị trong cả hai tập lệnh.

    #!/bin/sh
    
    guestuser="guest"
    
    ## Clear up the guest user session
    if [[ "$USER" = "$guestuser" ]]; then
        rm -rf /tmp/"$guestuser"
    fi
    
    exit 0

Cuối cùng, làm cho hai tập lệnh thực thi:

sudo chmod 755 /etc/gdm/PostLogin/Default  /etc/gdm/PostSession/Default

Bây giờ, chỉ cần đăng xuất và bạn sẽ thấy guestngười dùng mới của mình . Bạn có thể đăng nhập bằng cách chọn nó và nhấn Enterkhi được nhắc nhập mật khẩu. Người guestdùng sẽ không thể sử dụng sudovì đó là mặc định cho tất cả người dùng. Chỉ người dùng được đề cập rõ ràng trong /etc/sudoershoặc những người là thành viên của các nhóm được đề cập rõ ràng trong sudoers(như , wheelhoặc sudotùy thuộc vào phân phối của bạn) mới có thể sử dụng sudo.


Nếu bạn đang sử dụng phiên bản gần đây của GDM, nó có thể vô hiệu hóa nút đăng nhập trong khi hộp mật khẩu trống. Để giải quyết vấn đề này, bạn có thể yêu cầu GDM không nhắc mật khẩu cho các nhóm cụ thể. Thông báo trước là điều này cũng sẽ bỏ qua menu chọn phiên cho các thành viên của nhóm đó. Nếu bạn muốn làm điều này bạn nên thêm dòng này vào đầu của /etc/pam.d/gdm-password:

auth sufficient pam_succeed_if.so user ingroup guest

Tại sao bạn phải đến chmodnhững tập tin đó? không cần điều đó, bởi vì những đoạn script đó được chạy bằng root
Edward Torvalds

1
@edwardtorvalds vậy? Điều đó có gì khác biệt? Root không thể thực thi các tập tin không thể thực thi. Và vâng, bạn cần nó bởi vì tôi đã thử nó mà không làm cho chúng thực thi được và nó đã thất bại. Nó sẽ xuất hiện các tập lệnh đang được chạy trực tiếp ( /path/to/script) và không phải là đối số sh. Điều này có ý nghĩa vì các ví dụ được cung cấp bao gồm một dòng shebang.
terdon

Trên màn hình Đăng nhập, giải pháp của bạn yêu cầu nhấn enter mà không cần nhập bất cứ thứ gì hoạt động trong 3.16. Trong gnome mới hơn (có thể từ 3.18), bạn không thể nhấn enter mà không nhập bất cứ thứ gì. Vì vậy, làm việc xung quanh là để giữ phần mật khẩu băm /etc/shadowtrống.
Edward Torvalds

do /tmp/guest/thư mục không tồn tại khi khởi động, dịch vụ bóng của systemd luôn bị lỗi
Edward Torvalds

1
@MattSturgeon yeah, có vẻ hoàn toàn hợp lý, tôi chỉ hỏi vì tôi chưa thử nó, tôi không thể biết nó có hoạt động không. Chỉnh sửa tuyệt vời, cảm ơn!
terdon

2

Bạn có thể sử dụng các kịch bản đăng xuất . Ở đó bạn có thể xóa thư mục nhà cho tài khoản khách của bạn và tạo một thư mục mới khi đăng xuất. Nếu cần thiết, bạn có thể làm cho nó sudocó thể bằng tài khoản khách thông qua visudo. Thêm yourguestacc ALL=(root) NOPASSWD: /path/to/script/recreating/the/home/folder. Xem wiki vòm để biết thêm thông tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.