Bagaimana cara membatasi pengguna ke lingkungan desktop tertentu?

8

Saya menjalankan instalasi standar kurang lebih Ubuntu Precise 12.04 dan saya cukup puas dengan melakukan tugas sehari-hari dengan lingkungan desktop Unity.

Namun ketika berbicara tentang bermain, saya merasa jauh lebih nyaman dengan LXDE (latar belakang: dalam kondisi saat ini, Unity menghasilkan framerat yang jauh lebih rendah daripada misalnya Unity 2D atau LXDE - ini adalah bug yang dikenal dan sedang dikerjakan).

Untuk tujuan itu saya membuat profil pengguna gamer dan sekarang saya ingin membatasi untuk menggunakan lingkungan desktop LXDE saja.

Untuk menguraikan ini lebih lanjut: ketika diminta untuk masuk setelah boot saya hanya ingin LXDE muncul sebagai opsi untuk profil pengguna gamer di layar masuk sementara profil pengguna standar saya masih memiliki opsi untuk memilih lingkungan desktop mana yang akan digunakan.

Terima kasih sebelumnya atas segala wawasan yang mungkin bisa membantu!

FuzzyQ
sumber
Ini harus menjaga pilihan terakhir Anda sebagai default untuk waktu berikutnya. Apakah tidak melakukan ini? Apakah ada alasan Anda tidak ingin opsi lain, jika itu default ke lingkungan desktop yang benar?
reverendj1
Saya memperhatikan perilaku ini juga setelah saya mengajukan pertanyaan. Pada dasarnya, itulah yang saya inginkan dan mengapa saya bertanya. Selain itu, saya masih tertarik pada solusi - saya perlu belajar lebih banyak tentang grup & izin '') Saya sangat terkejut bahwa ini tampaknya menjadi masalah besar. Apakah tidak mungkin untuk dicapai?
FuzzyQ

Jawaban:

4

Oke, dari pemahaman saya tentang LightDM (manajer login) sepertinya tidak didukung untuk membatasi lingkungan desktop untuk pengguna tertentu . Ini adalah kesepakatan semua atau tidak sama sekali. Secara default, ketika pengguna memilih lingkungan desktop, itu akan menjadi lingkungan desktop default mereka. Ketika mereka login lain kali, kecuali mereka memilih yang lain, mereka akan login ke default mereka.

Namun, Anda dapat membuatnya agar pengguna tidak dapat mengubah ini. Pengguna ini masih dapat memilih lingkungan desktop yang berbeda, tetapi jika mereka melakukannya, itu tidak akan mengubah standarnya. Saya percaya ini adalah cara teraman untuk melakukan ini, jika Anda tidak khawatir orang itu akan mengubahnya. Yang harus Anda lakukan adalah mengedit .dmrcfile mereka (terletak di direktori home mereka, yaitu / home / user). Di sinilah sesi default mereka disimpan. Ubah Sessionvariabel dalam file itu menjadi apa pun yang Anda inginkan, yaitu ubuntuUnity DE default, ubuntu-2dadalah Unity 2D, dan LXDELXDE. Untuk membuatnya jadi ini tidak akan diubah jika mereka masuk dengan DE lain, kita bisa membuatnya tidak berubah (tidak dapat diubah):

sudo chattr +i /home/user/.dmrc

Sekarang tidak ada yang dapat mengubah file itu (root dan program lain yang disertakan) kecuali Anda menghapus tanda yang tidak dapat diubah:

sudo chattr -i /home/user/.dmrc

Jika Anda benar-benar TIDAK ingin pengguna ini pernah masuk dengan DE lain, saya menemukan cara yang benar-benar gila (yaitu melakukan ini dengan risiko Anda sendiri) untuk mencapai ini. Saya agak bosan dan sepertinya ini hal yang menyenangkan untuk dicoba. Semua DE berbeda yang bisa dilihat oleh LightDM disimpan /usr/share/xsessionssebagai .desktopfile. FYI, Anda dapat menghapus semua yang tidak ingin ditampilkan di layar masuk (tapi itu akan menghapusnya untuk SEMUA pengguna). Jika Anda membuka salah satu dari ini, mereka cukup mudah. Itu adalah file peluncur desktop dasar, sama seperti semua pintasan di desktop Anda. Masing-masing berisiExecbaris, yang akan dieksekusi ketika Anda memilih DE Anda di layar login (yaitu DE mana yang diluncurkan). Kami akan mengambil keuntungan dari ini dan memeriksa pengguna mana yang masuk. Jika pengguna adalah pengguna terbatas kami, kami akan memaksa mereka untuk menggunakan DE tertentu.

Pertama, untuk setiap .desktopfile di dalam, /usr/share/xsessions/Anda harus membuat skrip /usr/local/bin. Sebagai contoh saya, saya akan menunjukkan bagaimana melakukan ini untuk ubuntu.desktop, yang merupakan Unity DE, dan menggunakan LXDE sebagai DE kita memaksa pengguna terbatas kami (pengguna terbatas) untuk menggunakan. Melihat LXDE.desktop, kita dapat melihat bahwa Execperintahnya adalah /usr/bin/startlxdedan tidak ada TryExecperintah. Ketika Anda membuka ubuntu.desktopkita melihat bahwa Execperintahnya adalah gnome-session --session=ubuntudan TryExecperintahnya adalah unity. The TryExecperintah hanya apa yang terdengar seperti. Setelah menjalankan Execperintah, itu akan mencoba menjalankan TryExecperintah, tetapi jika gagal, itu tidak akan crash.

Sekarang, dengan mengambil perintah yang kita dapatkan dari .desktopfile, kita dapat membuat skrip kita. Kami akan menempatkan mereka di /usr/share/bin. Kita perlu membuat dua, satu untuk Execdan satu untuk TryExec. Kami akan melakukan sesuatu seperti ini:

ubuntude.sh

#!/bin/bash

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

ubuntudetry.sh

#!/bin/bash

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

Kami hanya menguji apakah orang yang masuk adalah pengguna terbatas kami, dan menjalankan DE yang sesuai. Sekarang, kita perlu memastikan mereka dapat dieksekusi:

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

Kita sekarang perlu mengubah kita ubuntu.desktopsehingga akan memanggil skrip kita, bukan DEs yang sebenarnya. Komentari Execdan TryExecbaris dalam file, dan ganti dengan ini:

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

Cukup ulangi proses untuk DE lain yang mungkin Anda miliki. Jika tidak ada TryExecDE, maka tidak perlu membuat skrip detry.sh juga, karena LXDE tidak menggunakan a TryExec. Jelas ini agak sedikit meretas, dan Anda harus memastikan bahwa Anda mencadangkan file apa pun sebelum mengeditnya, tetapi ini akan berfungsi jika Anda benar-benar perlu memastikan bahwa pengguna masuk ke DE yang benar.

reverendj1
sumber
1
Pertama-tama: terima kasih atas jawaban terperinci Anda! Ini pendekatan yang cukup cerdik. Tetapi jika saya mendapatkan bagian terakhir yang benar, itu akan memaksa pengguna terbatas untuk masuk ke lxde tidak peduli pilihan mana yang dia pilih di lightdm . Tetapi masih akan menampilkan semua opsi lain yang tercantum di / usr / share / xsessions /, apakah saya mendapatkan hak ini? Dalam hal ini, saya lebih suka menggunakan opsi 1. Sayang sekali tidak ada opsi khusus pengguna untuk mengatur sesi lingkungan desktop. Menghapus xsessions yang tidak diinginkan dari folder pengguna akan berguna dan sederhana.
FuzzyQ
1
Sama-sama. Saya menganggapnya sebagai tantangan, dan saya ingin menggali lebih dalam tentang LightDM. Benar, pengguna masih akan melihat semua opsi lain, hanya saja tidak masalah, karena mereka akan dipaksa untuk menggunakan LXDE. Seperti yang saya katakan, file .dmrc ada untuk menjaga default spesifik pengguna, tapi ya, tidak ada cara bawaan untuk memaksa pengguna untuk hanya menggunakan DE tertentu, atau membatasi mana yang dapat mereka lihat / gunakan. Semua orang atau siapa pun, tanpa retasan yang saya sajikan.
reverendj1
1

pada Debian Squeeze dan Wheezy Anda juga dapat menambahkan .xsessionrc dengan satu baris

ekspor STARTUP = XXX

(tempat XXX pada skrip sesi yang dipaksakan Anda lihat Exec-Line di atas) di direktori home pengguna untuk memaksa jenis sesi tertentu terlepas dari apa yang telah dipilih pengguna.

Seharusnya juga berfungsi di Ubuntu.

(Lihatlah /etc/X11/Xsession.d/40x11-common_xsessionrc dan 50x11-common_determine-startup untuk melihat, mengapa ini bekerja)

Peter
sumber
0

Jawaban dari reverendj1 tidak berfungsi untuk saya. Alasannya mungkin karena nilai yang Anda tentukan di Exec = tidak dieksekusi secara langsung, tetapi diteruskan ke / etc / X11 / Xsession sebagai argumen. (sumber: https://askubuntu.com/a/857420/873016 )

Solusi lain untuk masalah ini:
1. Cadangkan semua / usr / share / xsessions / .desktop file
2. Hapus semua / usr / share / xsessions /
.desktop file
3. Buat hanya /usr/share/xsessions/default.desktop dengan

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

"default" adalah kata kunci untuk Xsession dan akan mencari sesi khusus di direktori pengguna.
4. Sekarang buat file /home/{username}/.xsession untuk setiap nama pengguna. Untuk aplikasi "mirip kios", ini akan terlihat seperti ini:

#!/bin/bash

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

Jika misalnya pengguna lain harus diizinkan untuk memulai manajer desktop yang penuh sesak, itu bisa terlihat seperti ini:

#!/bin/bash

exec icewm-session
  1. Pastikan file ~ / .xsession dapat dieksekusi
sudo chmod +x ~/.xsession

Diuji pada ubuntu 16.04 dengan lightdm

egodigitus
sumber