Làm cách nào để hạn chế người dùng trong một môi trường máy tính để bàn cụ thể?


8

Tôi đang chạy cài đặt Ubuntu Precise 12.04 tiêu chuẩn ít nhiều và tôi khá hài lòng với việc thực hiện công việc hàng ngày với môi trường máy tính để bàn Unity.

Tuy nhiên, khi chơi, tôi cảm thấy thoải mái hơn nhiều với LXDE (nền: ở trạng thái hiện tại, Unity lưu trữ tốc độ khung hình thấp hơn nhiều so với Unity 2D hoặc LXDE - đó là một lỗi đã biết và đang được xử lý).

Với mục đích đó, tôi đã tạo một hồ sơ người dùng game thủ và bây giờ tôi muốn hạn chế nó chỉ sử dụng môi trường máy tính để bàn LXDE.

Để giải thích thêm: khi được yêu cầu đăng nhập sau khi khởi động, tôi chỉ muốn LXDE xuất hiện dưới dạng tùy chọn cho hồ sơ người dùng của game thủ tại màn hình đăng nhập trong khi hồ sơ người dùng chuẩn của tôi vẫn có tùy chọn để chọn môi trường máy tính để bàn nào sẽ sử dụng.

Cảm ơn trước cho bất kỳ cái nhìn sâu sắc có thể giúp đỡ!


Nó sẽ giữ lựa chọn cuối cùng của bạn làm mặc định cho lần tiếp theo. Có phải nó không làm điều này? Có một lý do bạn không muốn các tùy chọn khác, nếu nó được mặc định cho môi trường máy tính để bàn chính xác?
Reverendj1

Tôi cũng nhận thấy hành vi này sau khi tôi đặt câu hỏi. Về cơ bản, đó đã là những gì tôi muốn và tại sao tôi hỏi. Bên cạnh đó, tôi vẫn quan tâm đến một giải pháp - Tôi cần tìm hiểu thêm về các nhóm & quyền '') Tôi rất ngạc nhiên vì đây dường như là một vấn đề rất lớn. Là nó không thể thực hiện được?
FuzzyQ

Câu trả lời:


4

Được rồi, theo hiểu biết của tôi về LightDM (trình quản lý đăng nhập) dường như không được hỗ trợ để hạn chế môi trường máy tính để bàn cho một người dùng cụ thể . Đó là một thỏa thuận tất cả hoặc không có gì. Theo mặc định, khi người dùng chọn môi trường máy tính để bàn, đó sẽ trở thành môi trường máy tính để bàn mặc định của họ. Khi họ đăng nhập lần sau, trừ khi họ chọn một người khác, họ sẽ đăng nhập vào mặc định của họ.

Tuy nhiên, bạn có thể làm cho nó để người dùng không thể thay đổi điều này. Người dùng này vẫn có thể chọn một môi trường máy tính để bàn khác, nhưng nếu có, nó sẽ không thay đổi mặc định của họ. Tôi tin rằng đây là cách an toàn nhất để làm điều này, nếu bạn không lo lắng rằng người đó sẽ thay đổi nó. Tất cả bạn phải làm là chỉnh sửa .dmrctệp của họ (nằm trong thư mục chính của họ, tức là / home / user). Đây là nơi phiên mặc định của họ được lưu trữ. Thay đổi Sessionbiến trong tệp đó thành bất cứ điều gì bạn muốn, tức ubuntulà Unity DE mặc định, ubuntu-2dlà Unity 2D và LXDElà LXDE. Để làm cho nó không bị thay đổi nếu họ đăng nhập bằng DE khác, chúng ta chỉ cần làm cho nó không thay đổi (không thể thay đổi):

sudo chattr +i /home/user/.dmrc

Bây giờ không ai có thể thay đổi tệp đó (bao gồm các chương trình gốc và các chương trình khác) trừ khi bạn xóa cờ không thay đổi:

sudo chattr -i /home/user/.dmrc

Nếu bạn hoàn toàn KHÔNG muốn người dùng này đăng nhập bằng DE khác, tôi đã tìm ra một cách thực sự hack (tức là làm điều này có nguy cơ của riêng bạn) để thực hiện điều này. Tôi đã chán và đây có vẻ là một điều thú vị để thử. Tất cả các DE khác nhau mà LightDM có thể thấy được lưu giữ /usr/share/xsessionsdưới dạng .desktoptệp. FYI, bạn có thể xóa bất kỳ thứ nào trong số này mà bạn không muốn hiển thị trên màn hình đăng nhập (nhưng điều đó sẽ xóa nó cho TẤT CẢ người dùng). Nếu bạn mở bất kỳ một trong số này, chúng khá đơn giản. Chúng là các tệp launcher máy tính để bàn cơ bản, giống như tất cả các phím tắt trên máy tính để bàn của bạn. Mỗi cái chứa mộtExecdòng, đó là những gì được thực thi khi bạn chọn DE của mình tại màn hình đăng nhập (tức là DE được khởi chạy). Chúng tôi sẽ tận dụng lợi thế này và kiểm tra xem người dùng nào đang đăng nhập. Nếu người dùng là người dùng bị hạn chế của chúng tôi, chúng tôi sẽ buộc họ sử dụng một DE nhất định.

Đầu tiên, đối với mỗi .desktoptệp trong /usr/share/xsessions/bạn sẽ cần tạo một tập lệnh /usr/local/bin. Ví dụ của tôi, tôi sẽ chỉ cho bạn cách thực hiện điều này ubuntu.desktop, đó là Unity DE và sử dụng LXDE làm DE mà chúng tôi đang buộc người dùng bị hạn chế (người hạn chế) sử dụng. Nhìn vào LXDE.desktop, chúng ta có thể thấy rằng Execlệnh này /usr/bin/startlxdevà không có TryExeclệnh nào . Khi bạn mở ubuntu.desktopchúng ta thấy rằng Execlệnh là gnome-session --session=ubuntuTryExeclệnh là unity. Các TryExeclệnh chỉ là những gì nó nghe như thế nào. Sau khi chạy Execlệnh, nó sẽ thử chạy TryExeclệnh, nhưng nếu thất bại, nó sẽ không gặp sự cố.

Bây giờ, nhận những lệnh chúng tôi nhận được từ các .desktoptệp chúng tôi có thể tạo tập lệnh của mình. Chúng tôi sẽ đặt chúng vào /usr/share/bin. Chúng ta sẽ cần làm hai, một cho Execvà một cho TryExec. Chúng tôi sẽ làm một cái gì đó như thế này:

ubuntude.sh

#!/bin/bash

if [ `/usr/bin/whoami` = "restricteduser" ] ; then
   /usr/bin/startlxde
else
   gnome-session --session=ubuntu
fi

ubuntudatures.sh

#!/bin/bash

if [ `/usr/bin/whoami` != "restricteduser" ] ; then
   unity
fi

Chúng tôi chỉ đang kiểm tra xem người đăng nhập có phải là người dùng bị hạn chế của chúng tôi hay không và kích hoạt DE thích hợp. Bây giờ, chúng ta cần đảm bảo rằng chúng có thể được thực thi:

sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh

Bây giờ chúng ta cần thay đổi ubuntu.desktopđể nó sẽ gọi các tập lệnh của chúng ta, thay vì các DE thực tế. Nhận xét ExecTryExeccác dòng trong tệp và thay thế chúng bằng:

Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh

Chỉ cần lặp lại quá trình cho bất kỳ DE khác mà bạn có thể có. Nếu không có TryExecDE, thì không cần phải tạo tập lệnh detry.sh cho nó, vì LXDE không sử dụng a TryExec. Rõ ràng đây là một chút hack và bạn nên đảm bảo rằng bạn sao lưu bất kỳ tệp nào trước khi chỉnh sửa chúng, nhưng nó sẽ hoạt động nếu bạn thực sự cần phải chắc chắn rằng người dùng đang đăng nhập vào DE chính xác.


1
Trước hết: cảm ơn câu trả lời công phu của bạn! Đây là một cách tiếp cận khá tinh ranh. Nhưng nếu tôi hiểu đúng phần cuối cùng đó, nó sẽ buộc người dùng bị hạn chế đăng nhập vào lxde bất kể anh ta chọn tùy chọn nào trong lightdm . Nhưng nó vẫn sẽ hiển thị tất cả các tùy chọn khác được liệt kê trong / usr / share / xsimes /, tôi có hiểu đúng không? Trong trường hợp này, tôi muốn đi với tùy chọn 1. Thật xấu hổ khi không có tùy chọn cụ thể của người dùng để thiết lập các phiên môi trường máy tính để bàn. Loại bỏ xsairs không mong muốn khỏi thư mục người dùng sẽ vừa tiện dụng vừa đơn giản.
FuzzyQ

1
Không có gì. Tôi coi đó là một thử thách và tôi có ý định đào sâu vào LightDM hơn. Đúng vậy, người dùng vẫn sẽ thấy tất cả các tùy chọn khác, điều đó không thành vấn đề, vì họ sẽ buộc phải sử dụng LXDE. Như tôi đã nói, tệp .dmrc có ở đó để giữ mặc định dành riêng cho người dùng, nhưng vâng, không có cách tích hợp nào để buộc người dùng chỉ sử dụng một số DE nhất định hoặc hạn chế những cái họ có thể nhìn thấy / sử dụng. Đó là tất cả mọi người hoặc không ai, không có hack tôi đã trình bày.
Reverendj1

1

trên Debian Squeeze và Wheezy, bạn cũng có thể thêm .xsessionrc bằng một dòng duy nhất

xuất STARTUP = XXX

(trong đó XXX ist script phiên bắt buộc của bạn, hãy xem Exec-Line ở trên) trong homedirectory của người dùng để buộc một loại phiên nhất định bất kể người dùng đã chọn gì.

Cũng nên làm việc trên Ubuntu.

(Hãy xem /etc/X11/Xsession.d/40x11-common_xsessionrc và 50x11-common_determine-startup để xem, tại sao điều này hoạt động)


0

Câu trả lời từ Reverendj1 không hiệu quả với tôi. Lý do có thể là giá trị bạn chỉ định trong Exec = không được thực thi trực tiếp, nhưng được chuyển đến / etc / X11 / Xsession làm đối số. (nguồn: https://askubfox.com/a/857420/873016 )

Một giải pháp cho vấn đề này:
1. Sao lưu tất cả / usr / share / xsessions / file .desktop
2. Delete all / usr / share / xsessions /
file .desktop
3. Tạo chỉ /usr/share/xsessions/default.desktop với

[Desktop Entry]
Name=Default
Comment=This session is the default session. It will look up the user specific desktop session in ~/.xsession.
Exec=default

"Mặc định" là từ khóa của Xsession và sẽ tìm kiếm phiên cụ thể trong thư mục của người dùng.
4. Bây giờ hãy tạo một tập tin / home / nbusernamespl /.xsession cho mỗi tên người dùng. Đối với ứng dụng "giống như kiosk", ứng dụng này sẽ trông như thế này:

#!/bin/bash

cd /home/{yourUsername}/ && ./startApplication.py
logout

Nếu ví dụ: một người dùng khác được phép bắt đầu một trình quản lý máy tính để bàn đầy đủ, nó có thể trông như thế này:

#!/bin/bash

exec icewm-session
  1. Đảm bảo tệp ~ / .xsession có thể thực thi được
sudo chmod +x ~/.xsession

Đã thử nghiệm trên Ubuntu 16.04 với lightdm

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.