Đượ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 .dmrc
tệ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 Session
biến trong tệp đó thành bất cứ điều gì bạn muốn, tức ubuntu
là Unity DE mặc định, ubuntu-2d
là Unity 2D và LXDE
là 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/xsessions
dưới dạng .desktop
tệ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ộtExec
dò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 .desktop
tệ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 Exec
lệnh này /usr/bin/startlxde
và không có TryExec
lệnh nào . Khi bạn mở ubuntu.desktop
chúng ta thấy rằng Exec
lệnh là gnome-session --session=ubuntu
và TryExec
lệnh là unity
. Các TryExec
lệnh chỉ là những gì nó nghe như thế nào. Sau khi chạy Exec
lệnh, nó sẽ thử chạy TryExec
lệ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 .desktop
tệ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 Exec
và 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 Exec
và TryExec
cá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ó TryExec
DE, 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.