নির্দিষ্ট অ্যাকাউন্টগুলিতে খোলার থেকে নির্দিষ্ট অ্যাপ্লিকেশনগুলিকে কীভাবে ব্লক করবেন


13

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

উবুন্টুর নতুন ব্যবহারকারীর পক্ষে এটি করার কী ভাল এবং সহজ উপায়।


নির্দিষ্ট ফাইলগুলিতে এসিএল রাখবেন?
এমডিপিসি

সুরক্ষার প্রয়োজনীয় স্তর কী? এখানে কি ব্যবহারযোগ্য উত্তর হবে: জিজ্ঞাসুবন্টু
জ্যাকব ভিলিজ

এখনই সুরক্ষা স্তরটি ন্যূনতম। ব্যবহারকারীদের কেবল কোনও ধরণের অ্যাপ্লিকেশনটিতে (কোনও উপায়ে) অ্যাক্সেস অস্বীকার করা দরকার। আমার ধারণা করা ব্যবহারকারীরা লিনাক্স সম্পর্কে কম জ্ঞান রাখবেন এবং সম্ভবত কখনও টার্মিনালটি ব্যবহার করবেন না তবে আপনি এটি সম্পর্কে কোনও তথ্য যুক্ত করতে পারেন।
লুইস আলভারাডো

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

এটি আমি কল্পনা করেছিলাম অ্যাপআর্মারটি করণীয়, তবে আমি মনে করি না এটি "সহজ" উপায় হিসাবে যোগ্যতা অর্জন করে।
মুড়ু

উত্তর:


15

উ: কনফিগারেশনাল বিকল্পসমূহ

যদি ব্লকটি বোঝানো হয় অভিজ্ঞ-অভিজ্ঞ ব্যবহারকারীদের নির্দিষ্ট কিছু অ্যাপ্লিকেশন ব্যবহার করা থেকে বিরত রাখতে হয়, তবে অ্যাপ্লিকেশনটির ডেস্কটপ ফাইল (বর্ণিত হিসাবে) সম্পাদনা (এর স্থানীয় কপি [1]) সম্ভবত দ্রুততম এবং সহজতম উপায়।
অতিরিক্ত বাধা তৈরি করতে এবং / অথবা অ্যাপ্লিকেশনটি ( [2]এবং [3]) ব্লক করার জন্য আমরা কী করেছি তা ব্যবহারকারী খুব সহজেই খুঁজে পায় যে বিষয়টি রোধ করতে কিছু অতিরিক্ত জিনিস করা যেতে পারে ।

সেটআপটি অভিজ্ঞ ব্যবহারকারীদের সাথে অবরুদ্ধ পরিস্থিতিতে উপযুক্ত নয়। গড় ব্যবহারকারীদের সাথে "হোম" পরিস্থিতিতে এটি বেশ কয়েকটি ক্ষেত্রে যথেষ্ট হবে be

1. .ডেস্কটপ ফাইলটি সম্পাদনা (এর স্থানীয় সংস্করণ) দ্বারা জিডিট ব্লক করার উদাহরণ

  • অ্যাপ্লিকেশন এর ডেস্কটপ ফাইল অনুলিপি করুন /usr/share/applicationsথেকে ~/.local/share/applications:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    
  • ফাইলটি সম্পাদনা করুন: এটি একটি জিডিট উইন্ডোতে টেনে এনে জেডিট (যখন আপনি এখনও করতে পারেন :)) দিয়ে এটি খুলুন।

    • লাইন প্রতিস্থাপন

      Exec=gedit %U
      

      দ্বারা:

      Exec=zenity --info --text 'You are not allowed to use this application'
      
    • শর্টকাটগুলির একটি থেকে অ্যাপ্লিকেশন শুরু করা রোধ করতে (সম্ভাব্য) শর্টকাটগুলি সরান:

      লাইনটি মুছে ফেলুন (gedit উদাহরণের জন্য):

      Actions=Window;Document;
      

      এবং বিভাগ (গুলি) এর মতো:

      [Desktop Action Window]
      Name=Open a New Window
      Exec=gedit --new-window
      OnlyShowIn=Unity;
      

    তারপরে (লগ আউট / লগ-ইন করার পরে) ব্যবহারকারী এই বার্তাটি দেখতে পাবেন যদি সে ড্যাশ থেকে জিডিট খুলতে চেষ্টা করে বা অ্যাপ্লিকেশনটির সাথে লিঙ্কযুক্ত কোনও ফাইল খোলার চেষ্টা করে:

    এখানে চিত্র বর্ণনা লিখুন

    • ড্যাশ থেকে অ্যাপ্লিকেশনটি গোপন করা ((চ্ছিক পরিমাপ)

      উপরের পরিবর্তনগুলি করার পরে, gedit.desktopফাইলটি এখনও খোলা রয়েছে, আমরা একটি অতিরিক্ত লাইন যুক্ত করতে পারি:

      NoDisplay=true
      

      এই লাইনটি যুক্ত করে, geditএমনকি ড্যাশেও প্রদর্শিত হবে না।

    পূর্বাবস্থায় ফিরুন

    পূর্বাবস্থায় ফেলার জন্য, স্থানীয় .desktopফাইলটি এখান থেকে সরান~/.local/share/applications

২. এটি খুঁজে পাওয়া আরও কিছুটা কঠিন করে তোলা

.desktopফাইলটি সম্পাদনা করার পরে , অ্যাপ্লিকেশনটি আর ড্যাশটিতে প্রদর্শিত হবে না, ড্যাশ অনুসন্ধান এখনও আমাদের সদ্য নির্মিত gedit.desktopফাইলটি দেখায় , যা অজান্তেই কীভাবে অ্যাপ্লিকেশন ব্লকটি থেকে বাঁচতে পারে তার ইঙ্গিত দিতে পারে।

এখানে চিত্র বর্ণনা লিখুন

এটি এড়াতে, আমাদের ডিরেক্টরিটি ~/.local/share/applicationsড্যাশ অনুসন্ধান থেকে বাদ দিয়ে সন্ধানের ইতিহাস সাফ করা উচিত ।
সিস্টেম সেটিংস> "সুরক্ষা এবং গোপনীয়তা"> "ফাইল এবং অ্যাপ্লিকেশন" (ট্যাব) খুলুন। ~/.local/share/applicationsঅনুসন্ধান থেকে বাদ দেওয়ার জন্য ডিরেক্টরিটিতে ডিরেক্টরি যুক্ত করুন ।

এখানে চিত্র বর্ণনা লিখুন

৩. (না) টার্মিনাল / কমান্ড লাইন ব্যবহার করে

geditকমান্ডটি পুনর্নির্দেশ করা হচ্ছে(1)

.desktopফাইলটি সম্পাদনা ড্যাশ থেকে অ্যাপ্লিকেশনটি ব্যবহারে বাধা দেয়, তবে ব্যবহারকারী যদি AltF2অ্যাপ্লিকেশনটি চালনার জন্য সমন্বয় এবং কমান্ড জানেন তবে তিনি টার্মিনালের মতোই অ্যাপ্লিকেশনটি শুরু করতে সক্ষম হবেন। অতিরিক্ত পরিমাপ স্থাপনের জন্য একটি দুর্দান্ত এবং সহজ হ'ল ডিরেক্টরি তৈরি করা (যদি এটি এখনও উপস্থিত না থাকে) ডিরেক্টরিটি ~/binতৈরি করে এবং ডিরেক্টরিতে একটি ছোট স্ক্রিপ্ট তৈরি করা হয়:

#!/bin/bash
zenity --info --text 'You are not allowed to use this application'

এটিকে এক্সিকিউটেবল করুন এবং অ্যাপ্লিকেশনটির নাম দিন; geditএক্ষেত্রে.

যেহেতু ~/binরয়েছে PATH, কমান্ডটি চালানো "রিয়েল" geditঅ্যাপ্লিকেশনটির পরিবর্তে স্ক্রিপ্টটি কল করবে । ফলস্বরূপ, একই- You are not allowed to use this applicationম্যাসেজ প্রদর্শিত হবে

geditকমান্ডটি পুনর্নির্দেশ করা হচ্ছে(2)

অ্যাপ্লিকেশনটির আদেশটি পুনর্নির্দেশের আরেকটি উপায় (আরও সীমাবদ্ধ প্রভাব সহ, দ্রষ্টব্য দেখুন) .bashrcফাইলটিতে একটি উপনাম যুক্ত করা :

gedit ~/.bashrc

লাইন যুক্ত করুন (gedit উদাহরণ):

alias gedit='zenity --info --text "You are not allowed to use this application"'

দ্রষ্টব্য : এটি কেবলমাত্র অতিরিক্ত পরিমাপ হিসাবে ব্যবহৃত হবে, কারণ এটি কেবলমাত্র টার্মিনাল থেকে সরাসরি অ্যাপ্লিকেশনটি কল করতে বাধা দেয়। (উদাহরণস্বরূপ) .txtফাইলে ডাবল ক্লিক করলেও অ্যাপ্লিকেশনটি ওপেন হবে।

টার্মিনাল ব্যবহার মোটেই কঠিন বা অসম্ভব করে তুলুন

টার্মিনালটির ব্যবহার রোধ করতে, আপনি gnome-terminal.desktopযেমন - ফাইলটি ঠিক তেমন কৌশল করতে পারেন [1]এবং / অথবা টার্মিনালটি চালানোর জন্য ডিফল্ট শর্টকাট কী সংমিশ্রণটি পরিবর্তন করতে পারেন (সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাটস"> "শুরু" )


৪. .desktopফাইলের সম্পাদিত সংস্করণটি স্বয়ংক্রিয়ভাবে তৈরি করতে (বা পূর্বাবস্থায় ফিরিয়ে আনার) জন্য একটি ছোট সরঞ্জাম (১ হিসাবে 1)

আপনি হয় আর্গুমেন্ট সহ নিচের স্ক্রিপ্টটি রান যদি blockবা unblock(আপনি আবশ্যক হয় এক সঙ্গে এটি চালানোর), আপনি (গ্লোবাল) ডেস্কটপ ফাইল, আপনার ইনস্টল করা অ্যাপ্লিকেশনের প্রতিনিধিত্বমূলক সঙ্গে একটি তালিকা উপস্থাপন করা হবে:

এখানে চিত্র বর্ণনা লিখুন

একটি বাছুন, এবং আপনার অ্যাপ্লিকেশনটি আপনি যে যুক্তি দিয়ে এটি চালাচ্ছেন তার উপর ভিত্তি করে অবরুদ্ধ বা অবরোধ মুক্ত।

বিঃদ্রঃ

এটি কাজ করতে আপনাকে লগ আউট / লগ ইন করতে হতে পারে।

এই পান্ডুলিপি

#!/usr/bin/env python3

import os
import shutil
import sys

mode = sys.argv[1]

home = os.environ["HOME"]
global_dir = "/usr/share/applications/"

files = [file for file in os.listdir(global_dir) if file.endswith(".desktop")]
relevant = []
for i in range(len(files)):
    file = files[i]
    with open(global_dir+file) as src:
        text = src.read()
    if not "NoDisplay=true" in text:
        relevant.append((file))
for i in range (len(relevant)):
    print(str(i+1)+".", relevant[i])

choice = int(input("\nplease enter the number of the corresponding .desktop file: "))
filename = relevant[choice-1]

local_file = home+"/"+".local/share/applications/"+filename
global_file = global_dir+filename

def block_application(filename):
    if not os.path.exists(local_file):
        shutil.copyfile(global_file, local_file)
    with open(local_file) as src:
        lines = src.readlines()
    shortcuts_section = [i for i in range(len(lines)) if lines[i].startswith("Actions=")]
    if len(shortcuts_section) != 0:
        lines = lines[:shortcuts_section[0]]
    command = [i for i in range(len(lines)) if lines[i].startswith("Exec=")]
    if len(command) != 0:
        lines[command[0]] = 'Exec=zenity --info --text "You are not allowed to use this application"\n'
    with open(local_file, "wt") as out:
        for line in lines:
            out.write(line)

if mode == "block":
    block_application(filename)
elif mode == "unblock":
    os.remove(local_file)

স্ক্রিপ্টটি খালি ফাইলে অনুলিপি করুন, এটি হিসাবে সংরক্ষণ করুন block_apps.pyএবং এটির মাধ্যমে চালান:

python3 /path/to/block_apps.py block

অথবা

python3 /path/to/block_apps.py unblock

বি স্ক্রিপ্ট অপশন (গুলি)

নির্দিষ্ট অ্যাপ্লিকেশনগুলি ব্লক করা ব্যাকগ্রাউন্ডে একটি স্ক্রিপ্ট চালিয়েও করা যেতে পারে। "নিষিদ্ধ" অ্যাপ্লিকেশনগুলির মধ্যে একটি চালু থাকলে স্ক্রিপ্টটিতে কিছু নির্দিষ্ট পদক্ষেপ নিতে হবে।

1. নিষিদ্ধ অ্যাপ্লিকেশনগুলি ব্যবহার করার সময় স্ক্রিনটি ম্যানিপুলেট করার স্ক্রিপ্ট।

নীচের স্ক্রিপ্টটি ব্যবহারকারী সংজ্ঞায়িত অ্যাপ্লিকেশনগুলি ব্লক করার জন্য একটি নমনীয় উপায় সরবরাহ করে। এটি একটি সাধারণ কমান্ড দিয়ে চলেছে, নিষিদ্ধ অ্যাপ্লিকেশনগুলি একটি আর্গুমেন্ট হিসাবে, উদাহরণস্বরূপ (ধরে নিলে আপনি স্ক্রিপ্টটি কার্যকর করে দিয়েছেন):

    /path/to/block_apps.py firefox gedit gnome-terminal

এই জাতীয় অ্যাপ্লিকেশন ব্লক করার সুবিধা হ'ল এটি নমনীয়; এমনকি এক অ্যাকাউন্টের মধ্যেই, অন্য অ্যাপ্লিকেশনগুলি কেবল যুক্তি হিসাবে অন্য অ্যাপ্লিকেশনগুলি ব্যবহার করে ব্যবহার করা যেতে পারে।

এর মানে কি

লাইনগুলির একটিতে মন্তব্য করে:

# action = "xrandr --output "+screen+" --brightness 0"

অথবা

# action = "xrandr --output "+screen+" --rotate inverted"

স্ক্রিপ্টটি হয়:

পর্দা কালো ( action = "xrandr --output "+screen+" --brightness 0"):

এখানে চিত্র বর্ণনা লিখুন

বা এটিকে উল্টে দেয় ( action = "xrandr --output "+screen+" --rotate inverted"):
( কে বলেছিল ityক্য ডানদিকে লঞ্চটি লাগাতে দেয় না? )

এখানে চিত্র বর্ণনা লিখুন

এই পান্ডুলিপি

#!/usr/bin/env python3
import subprocess
import getpass
import sys
import time

applications = []
i = 1

while True:
    try:
        applications.append(sys.argv[i])
        i = i+1
    except IndexError:
        break

cmd1 = "xrandr"
get = subprocess.check_output(["/bin/bash", "-c", cmd1]).decode("utf-8").split()
screen = [get[i-1] for i in range(len(get)) if get[i] == "connected"][0]

#-- uncomment (only) one of the options below
# action = "xrandr --output "+screen+" --brightness 0"
action = "xrandr --output "+screen+" --rotate inverted"
#--

while True:
    cmd2 = "ps -u "+getpass.getuser()
    applist = subprocess.check_output(["/bin/bash", "-c", cmd2]).decode("utf-8")
    for application in applications:
        if application in applist:
            subprocess.Popen(["/bin/bash", "-c", action])
    time.sleep(5)

কিভাবে ব্যবহার করে

  • একটি খালি ফাইলে স্ক্রিপ্ট অনুলিপি, এইভাবে সংরক্ষণ এটি হিসাবে block_apps.py, এটা এক্সিকিউটেবল করতে
  • কমান্ড দ্বারা এটি চালান:

    /path/to/block_apps.py <application_1> <application_2> <application_3> etc...
    
  • গুরুত্বপূর্ণ
    করতে বধblock_apps.py স্ক্রিপ্ট এবং পুনঃস্থাপন "স্বাভাবিক" সেটিংস, নিচের (এটা একটি শর্টকাট কী সমন্বয় অধীন উপলব্ধ করতে) স্ক্রিপ্ট ব্যবহার করুন:

#!/usr/bin/env python3
import subprocess

cmd = "ps -ef | grep block_apps.py"
run = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").split("\n")
match = [line for line in run if "block_apps.py" in line]
command = "kill "+match[0].split()[1]
subprocess.Popen(["/bin/bash", "-c", command])

cmd1 = "xrandr"
get = subprocess.check_output(["/bin/bash", "-c", cmd1]).decode("utf-8").split()
screen = [get[i-1] for i in range(len(get)) if get[i] == "connected"][0]

restore_1 = "xrandr --output "+screen+" --brightness 1"
restore_2 = "xrandr --output "+screen+" --rotate normal"

for item in [restore_1, restore_2]:
    subprocess.Popen(["/bin/bash", "-c", item])

স্ক্রিপ্টগুলির মতো সর্বদা এটি খালি ফাইলে অনুলিপি করুন, এটি সংরক্ষণ করুন, কার্যকর করে দিন kill_blockapps.pyএবং এটিকে চালান:

/path/to/kill_blockapps.py

আপনি সম্ভবত এটির একটি শর্টকাট কীতে রাখতে চান: চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাট"> "কাস্টম শর্টকাট"। "+" ক্লিক করুন এবং উপরের মত কমান্ড যুক্ত করুন।


জ্যাকব দুর্দান্ত কাজ। দুর্দান্ত উত্তর। এটি উন্নত করা চালিয়ে যান।
লুইস আলভারাডো

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