আমি কীভাবে কোনও ব্যবহারকারীকে একটি নির্দিষ্ট ডেস্কটপ পরিবেশে সীমাবদ্ধ করব?


8

আমি উবুন্টু যথাযথ 12.04 এর কম বা কম স্ট্যান্ডার্ড ইনস্টলেশন চালাচ্ছি এবং ইউনিটি ডেস্কটপ এনভায়রনমেন্টের সাথে প্রতিদিনের কাজটি করতে আমি বেশ সন্তুষ্ট।

এটি খেলার ক্ষেত্রে, তবে, আমি এলএক্সডিইডি সহ অনেক বেশি স্বাচ্ছন্দ্য বোধ করি (পটভূমি: এটি বর্তমান অবস্থায়, ইউনিটি যেমন ইউনিটি 2 ডি বা এলএক্সডিই-র তুলনায় অনেক কম ফ্রেমরেটগুলি সংরক্ষণ করে - এটি একটি পরিচিত বাগ এবং এতে কাজ করা হচ্ছে))

সেই উদ্দেশ্যে আমি একটি গেমার ব্যবহারকারী প্রোফাইল তৈরি করেছি এবং এখন আমি কেবল এটি LXDE ডেস্কটপ পরিবেশ ব্যবহারের জন্য সীমাবদ্ধ রাখতে চাই।

এটিকে আরও বিশদভাবে জানাতে: বুটের পরে লগইন করতে বললে আমি চাই যে লগইন-স্ক্রিনে গেমার ব্যবহারকারীর প্রোফাইলের জন্য কেবলমাত্র এলএক্সডিইডি বিকল্প হিসাবে উপস্থিত হয় যখন আমার স্ট্যান্ডার্ড ব্যবহারকারী প্রোফাইলে এখনও কোন ডেস্কটপ পরিবেশ ব্যবহার করতে হবে তা বেছে নেওয়ার বিকল্প থাকা উচিত।

যে কোনও অন্তর্দৃষ্টি সাহায্যের জন্য অগ্রিম ধন্যবাদ!


পরের বারের জন্য এটি আপনার শেষ পছন্দটি ডিফল্ট হিসাবে রাখা উচিত। এটা কি করছে না? আপনি অন্য বিকল্পগুলি না চান এমন কোনও কারণ রয়েছে, যদি এটি সঠিক ডেস্কটপ পরিবেশে ডিফল্ট হয়?
শ্রদ্ধেয় 1 ই

আমি প্রশ্ন জিজ্ঞাসা করার পরেও আমি এই আচরণটি লক্ষ্য করেছি। মূলত, এটি ইতিমধ্যে আমি যা চেয়েছিলাম এবং কেন আমি জিজ্ঞাসা করেছি। এর বাইরেও, আমি এখনও একটি সমাধানে আগ্রহী - আমাকে গ্রুপ এবং অনুমতি সম্পর্কে আরও শিখতে হবে '') আমি খুব আশ্চর্য হয়েছি যে এটি এত বড় একটি সমস্যা বলে মনে হচ্ছে। এটি সম্পাদন করা কি অসম্ভব?
FuzzyQ

উত্তর:


4

ঠিক আছে, লাইটডিএম (লগইন পরিচালক) সম্পর্কে আমার ধারণা থেকে এটি কোনও নির্দিষ্ট ব্যবহারকারীর জন্য ডেস্কটপ পরিবেশ সীমাবদ্ধ করার পক্ষে সমর্থন করে বলে মনে হচ্ছে না । এটি একটি সমস্ত বা কিছুই চুক্তি। ডিফল্টরূপে, যখন কোনও ব্যবহারকারী কোনও ডেস্কটপ পরিবেশ চয়ন করেন, এটি তাদের ডিফল্ট ডেস্কটপ পরিবেশে পরিণত হবে। যখন তারা পরের বার লগইন করবেন, যদি না তারা অন্য একটি চয়ন করে, তারা তাদের ডিফল্টটিতে লগইন হবে।

তবে আপনি এটি তৈরি করতে পারেন যাতে ব্যবহারকারী এটি পরিবর্তন করতে না পারে। এই ব্যবহারকারীটি এখনও একটি পৃথক ডেস্কটপ পরিবেশ নির্বাচন করতে সক্ষম হবে, তবে তারা যদি তা করে তবে এটি তাদের ডিফল্ট পরিবর্তন করবে না। আমি বিশ্বাস করি এটি এটির সবচেয়ে নিরাপদ উপায়, যদি আপনি উদ্বিগ্ন না হন যে ব্যক্তি এটি পরিবর্তন করে দেবে। আপনাকে যা করতে হবে তা হ'ল তাদের .dmrcফাইল সম্পাদনা (তাদের হোম ডিরেক্টরিতে অবস্থিত, অর্থাৎ / হোম / ব্যবহারকারী)। এখানেই তাদের ডিফল্ট সেশনটি সংরক্ষণ করা হয়। পরিবর্তন Sessionযা চাও যে ফাইলে পরিবর্তনশীল, অর্থাত্ ubuntuডিফল্ট ইউনিটি ডেন হয়, ubuntu-2dইউনিটি 2D, এবং LXDELXDE হয়। এটি তৈরির জন্য যাতে তারা অন্য কোনও ডিই এর সাথে লগ ইন করে তবে এটিকে পরিবর্তন করা হবে না, আমরা কেবল এটিকে অপরিবর্তনীয় (পরিবর্তনযোগ্য) করতে পারি:

sudo chattr +i /home/user/.dmrc

আপনি অপরিবর্তনীয় পতাকাটি অপসারণ না করা হলে এখনই কেউ সেই ফাইলটি (রুট এবং অন্যান্য প্রোগ্রাম অন্তর্ভুক্ত) পরিবর্তন করতে পারবেন না:

sudo chattr -i /home/user/.dmrc

আপনি যদি পুরোপুরি না চান তবে এই ব্যবহারকারীটি আর কোনও ডিই দিয়ে লগ ইন করতে পারে, আমি এটি সম্পাদন করার জন্য সত্যিকারের একটি হ্যাকি উপায় (যেমন আপনার নিজের ঝুঁকিতে এটি করুন) বের করেছিলাম। আমি একঘেয়েমি ছিলাম এবং এটি চেষ্টা করার মতো মজাদার জিনিস বলে মনে হয়েছিল। লাইটডিএম দেখতে পাবে এমন বিভিন্ন ডিই এর সমস্ত ফাইল /usr/share/xsessionsহিসাবে রাখা হয় .desktop। এফওয়াইআই, আপনি লগইন স্ক্রিনে দেখাতে চান না এমন কোনওটি মুছতে পারেন (তবে এটি এটি সমস্ত ব্যবহারকারীদের জন্য মুছে ফেলবে)। আপনি যদি এগুলির কোনও একটি খুলেন তবে সেগুলি মোটামুটি সোজা। এগুলি হ'ল আপনার ডেস্কটপে শর্টকাটের মতোই বেসিক ডেস্কটপ লঞ্চার ফাইল। প্রতিটিতে একটি থাকেExecলাইন, যা আপনি লগইন স্ক্রিনে আপনার ডিই বেছে নেওয়ার সময় কার্যকর হয় (অর্থাত্ ডিই চালু হয়)। আমরা এর সদ্ব্যবহার করতে যাচ্ছি এবং কোন ব্যবহারকারী লগ ইন করছে তা যাচাই করে দেখছি restricted

প্রথমত, প্রতিটি .desktopফাইলের জন্য /usr/share/xsessions/আপনাকে একটি স্ক্রিপ্ট তৈরি করতে হবে /usr/local/bin। আমার উদাহরণস্বরূপ, আমি এটি কীভাবে এটি করতে হবে তা দেখাব ubuntu.desktopযা ইউনিটি ডি, এবং এলএক্সডিইডি কে DE হিসাবে ব্যবহার করতে আমরা আমাদের সীমাবদ্ধ ব্যবহারকারীর (সীমাবদ্ধকারী) ব্যবহার করতে বাধ্য করছি। এলএক্সডিইডি.ডেস্কটপটির দিকে তাকালে আমরা দেখতে পাচ্ছি যে Execকমান্ডটি রয়েছে /usr/bin/startlxdeএবং কোনও TryExecআদেশ নেই। আপনি খোলার পরে ubuntu.desktopআমরা দেখতে পাই যে Execকমান্ডটি হ'ল gnome-session --session=ubuntuএবং TryExecআদেশটিও হ'ল unityTryExecকমান্ড ঠিক কি এটা মনে হয়। Execকমান্ডটি চালানোর পরে , এটি কমান্ডটি চালানোর চেষ্টা করবে TryExec, কিন্তু এটি ব্যর্থ হলে এটি ক্রাশ হবে না।

এখন, এই কমান্ডগুলি গ্রহণ করে আমরা .desktopফাইলগুলি থেকে আমাদের স্ক্রিপ্টগুলি তৈরি করতে পারি। আমরা তাদের ভিতরে রাখব /usr/share/bin। আমাদের দুটি তৈরি করতে হবে, একটি এর জন্য Execএবং একটি এর জন্য TryExec। আমরা এরকম কিছু করব:

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

লগ ইন করা ব্যক্তিটি আমাদের বিধিনিষেধযুক্ত ব্যবহারকারী কিনা তা আমরা কেবল পরীক্ষা করেই নিচ্ছি এবং যথাযথ ডিই কে গুলি চালাচ্ছি। এখন, আমাদের নিশ্চিত করা দরকার যে সেগুলি কার্যকর হয়:

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

আমাদের এখন আমাদের পরিবর্তন ubuntu.desktopকরতে হবে যাতে এটি আমাদের স্ক্রিপ্টগুলিকে আসল ডিইএসের পরিবর্তে কল করে। ফাইলটির লাইন Execএবং TryExecলাইনগুলি মন্তব্য করুন এবং তাদের সাথে এটি প্রতিস্থাপন করুন:

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

আপনার থাকতে পারে এমন অন্য কোনও ডিইএসের জন্য কেবল প্রক্রিয়াটি পুনরাবৃত্তি করুন। যদি কোনও TryExecডিই এর জন্য না থাকে, তবে এটির জন্য একটি ডিট্রি.শ স্ক্রিপ্ট তৈরি করার দরকার নেই কারণ এলএক্সডিই কোনও ব্যবহার করে না TryExec। স্পষ্টতই এটি কিছুটা হ্যাকি, এবং আপনার কোনও ফাইল সম্পাদনা করার আগে আপনার অবশ্যই এটির ব্যাক আপ নিশ্চিত করা উচিত, তবে কোনও ব্যবহারকারী সঠিক ডিই-তে লগ ইন করছে কিনা তা নিশ্চিত করার প্রয়োজন হলে এটি কাজ করবে।


1
সবার আগে: আপনার বিস্তৃত উত্তরের জন্য ধন্যবাদ! এটি বেশ চালাকি পদ্ধতি। তবে আমি যদি শেষের অংশটি সঠিকভাবে পাই তবে এটি সীমাবদ্ধ ব্যবহারকারীর জন্য লক্সডে লগ ইন করতে বাধ্য করবে যেটি লাইটডেমে যে বিকল্পটি বেছে নিয়েছিল তা নয় । তবে এটি এখনও / ইউএসআর / শেয়ার / এক্সেসিওনস / তালিকাভুক্ত অন্য সমস্ত বিকল্পগুলি দেখায়, আমি কি এই অধিকার পাচ্ছি? এই ক্ষেত্রে, আমি বরং বিকল্পটি 1 নিয়ে যাব It's এটি লজ্জার বিষয় যে ডেস্কটপ এনভায়রনমেন্ট সেশনগুলি সেটআপ করার জন্য কোনও ব্যবহারকারী নির্দিষ্ট বিকল্প নেই। কোনও ব্যবহারকারীর ফোল্ডার থেকে অযাচিত এক্সেসেসনগুলি সরিয়ে ফেলা সহজ এবং সহজ উভয়ই।
FuzzyQ

1
আপনাকে স্বাগতম. আমি এটিকে একটি চ্যালেঞ্জ হিসাবে গ্রহণ করেছি এবং আমি হালকাDM তে আরও খননের অর্থ করছি। ঠিক আছে, ব্যবহারকারী এখনও অন্য সমস্ত বিকল্প দেখতে পাবে, এটি কোনও ব্যাপার নয়, কারণ তারা এলএক্সডিইডি ব্যবহার করতে বাধ্য হবে। যেমনটি আমি বলেছি, .dmrc ফাইলটি ব্যবহারকারী-নির্দিষ্ট ডিফল্ট রাখার জন্য রয়েছে তবে হ্যাঁ, কোনও ব্যবহারকারীকে কেবল নির্দিষ্ট ডিইএস ব্যবহার করতে বাধ্য করার বা তাদের কোনটি দেখতে / ব্যবহার করতে পারে তা সীমাবদ্ধ করার কোনও অন্তর্নির্মিত উপায় নেই । আমি উপস্থাপন করা হ্যাক ছাড়া এটি সবাই বা কেউ নয় one
শ্রদ্ধেয় 1 ই

1

ডেবিয়ান স্কিজে এবং হুইজি তে আপনি একটি একক লাইনের সাথে একটি .xsessionrc যোগ করতে পারেন

রফতানি করুন STARTUP = XXX

(যেখানে XXX আপনার বাধ্যতামূলক অধিবেশন-স্ক্রিপ্টটি উপরের এক্সিকিউটি-লাইনটি দেখতে পাবে না) ব্যবহারকারী বাড়ির নির্দেশিকায় নির্দিষ্ট সেশনের প্রকারটিকে ব্যবহারকারী বেছে নেওয়া নির্বিশেষে বাধ্য করতে বাধ্য করে।

উবুন্টুতেও কাজ করা উচিত।

(এটি দেখার জন্য /etc/X11/Xsession.d/40x11-common_xsessionrc এবং 50x11-common_determine-startup এ একবার দেখুন)


0

শ্রদ্ধেয় 1 এর উত্তর আমার পক্ষে কাজ করছে না। কারণটি হতে পারে যে আপনি নির্ধারিত = এ নির্ধারিত মানটি সরাসরি সম্পাদন করা হয় না তবে আর্গুমেন্ট হিসাবে / etc / X11 / Xsession এ প্রেরণ করা হয়। (উত্স: https://askubuntu.com/a/857420/873016 )

সমস্যা আরেকটি সমাধান:
1. ব্যাকআপ সব, / usr / শেয়ার / xsessions / .desktop ফাইল
2. মুছুন সব, / usr / শেয়ার / xsessions /
.desktop ফাইল
3. শুধুমাত্র /usr/share/xsessions/default.desktop সঙ্গে তৈরি করুন

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

"ডিফল্ট" এক্সসিওশনটির একটি মূল শব্দ এবং ব্যবহারকারীর ডিরেক্টরিতে নির্দিষ্ট সেশনটি সন্ধান করবে।
৪. এখন প্রতিটি ব্যবহারকারীর জন্য একটি / home/{username}/.xsession ফাইল তৈরি করুন। একটি "কিওসকের মতো" অ্যাপ্লিকেশানের জন্য, এটি দেখতে এইরকম হওয়া উচিত:

#!/bin/bash

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

উদাহরণস্বরূপ, যদি অন্য কোনও ব্যবহারকারীকে একটি পূর্ণ বর্ধিত ডেস্কটপ ম্যানেজার শুরু করার অনুমতি দেওয়া হয় তবে এটি দেখতে এটি দেখতে পারা যায়:

#!/bin/bash

exec icewm-session
  1. নিশ্চিত করুন যে ~ / .xsession ফাইলটি নির্বাহযোগ্য
sudo chmod +x ~/.xsession

উবুন্টু 16.04 এ লাইটডিএম সহ পরীক্ষিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.