هیچ محصولی در سبد خرید نیست.

ثبت‌نام

آیا لینوکس ویروس میگیره؟

مقدمه

سلام. شاید شما هم شنیده باشین که میگن «لینوکس ویروس نمیگیره». یا اینکه میگن «ما توی لینوکس آنتی ویروس» نداریم. امروز میخوایم در مورد همین موضوع صحبت کنیم. اما قبلش ازتون میخوام اگر کانال من رو هنوز سابسکرایب نکردین اینکار رو انجام بدین تا محتوای مرتبط با برنامه نویسی و لینوکس رو همیشه دم دست داشته باشین. مرسی

آیا لینوکس ویروس میگیره؟

آیا لینوکس ویروس میگیره؟

خب بریم سراغ اولین سوالی که برای خیلی از دوستان پیش میاد. آیا «لینوکس ویروس میگیره؟». در واقع لینوکس، کرنل یا هسته ی سیستم عامله که توسط لینوس تروالدز ساخته شده اما روی اون کرنل، کلی ابزار و محیط گرافیکی و چیزای دیگه سوار میشن. پس احتمالا منظور ما از این سوال اینه که آیا توزیع های گنو/لینوکسی مثل دبیان، اوبونتو، کالی و… به ویروس مبتلا میشن یا نه؟

در واقع خود لینوکس به چند دلیل از جمله متن باز بودن، ساختار سیستم عامل و توسعه مداوم توسط توسعه دهنده های زیادی از سراسر دنیا، بسیار امنه. از طرفی کلی آدم با تخصص های امنیتی باگ های سکیوریتی رو به لینوکس گزارش میدن و معمولا خیلی سریع این مشکلات برطرف میشن.

اینم از خوبی نرم افزار آزاده که معمولا امن تر و بی چاله چوله تره. تا یه سطح معقولی هم میدونیم که اون پشت مشتا بک دوری برای دوستان NSA نزاشتن. خلاصه اگر مشکلی پیدا بشه، فوری یه پچ براش میاد که معمولا توزیع ها در نسخه های جدیدتر شون آپدیت میکنن. البته امکان کامپایل دستی کرنل هم وجود داره ولی معمولا برای سرور ها منطقیش اینه که روی آخرین ورژن LTS بمونیم که پایدار تره.

کرنل لینوکسکرنل لینوکس

اما جدای از خود کرنل که گفتیم بسیار امنه، ابزار های استاندارد لینوکس هم همینطور هستند. خصوصا که ما در لینوکس، پکیج ها (یا همون بسته های نرم افزاری) رو از مخازن (ریپازیتوری های) معتبر و پکیج منیجر هایی مثل snap که ubuntu software ازش استفاده میکنه و apt که در همه ی توزیع های دبیان بیس وجود داره می گیریم و خیلی خیلی کم پیش میاد که یه نرم افزار یا بسته ای توی این مخازن و مدیر بسته ها نباشه. حتی در اون موارد هم از منابعی مثل گیت هاب خود اون پروژه دانلود میکنیم. در نتیجه خطر و ریسکی برای درگیری با ویروس و بدافزارها از این راه ها وجود نداره.

همین دلایل باعث بسیار امن شدن لینوکس شده اند، اما باز چون اخیرا لینوکس خصوصا برای کاربران دسکتاپ، یه گزینه خوب و منطقی حساب میشه و خیلیا بسمتش اومدن، با ورود هر چه بیشتر کاربر ها هکر ها و برنامه نویس های Malware هم بیشتر سعی میکنن به این طرف هم نگاهی داشته باشند و یه کارهایی بکنند. اینجاست که میخوام خیال راحتتون رو یکمی ناراحت بکنم. چون لینوکس هم مثل هر سیستم عاملی امکان ویروس گرفتن رو داره. البته ویروس نهایتا یه نرم افزار بده که کارهای از نظر ما بدی رو انجام میده. توی لینوکس تا زمانیکه نرم افزار های امن رو از مخازن و منابع معتبر میگیریم که در اغلب اوقات اینطوریه خیالمون کاملا راحته از سمتی خود سیستم هم که گفتیم تا حد خیلی خیلی زیادی امنیت داره.

اما بحث بیشتر وقتی که ما یک نرم افزار مخرب رو که میتونه یه اسکریپت پایتون یا شل هست رو دانلود و اجرا کنیم. تا زمانیکه دسترسی روت به اون فایل ندادیم منطقا کار زیادی نمیتونه بکنه اما اگر خودمون فایل رو با دسترسی روت اجرا کنیم منطقا بسته به اون پکیج، اتفاقات مختلفی از جمله شنود اطلاعات، کی لاگینگ، ارسال اطلاعات فایلهای جدید و کلی چیز دیگه میتونه اتفاق بیفته.

ویروس هایی برای لینوکس

با وجود اینکه تا الان تعدادی ویروس مهم برای لینوکس وجود داره اما در مقابل ویروس هایی که برای ویندوز وجود داره تقریبا صفر هست، خیلی خیلی کمتره. خب بزارین یکی از این ویروس ها رو معرفی کنم:

  • یه ویروسی اومده برای لینوکس هایی که از محیط گرافیکی Gnome استفاده میکنن. در واقع به شکل یه افزونه است اما کار های خطرناک زیادی رو پشت صحنه انجام میده. این ویروس به اسم Evil Gnome شناخته میشه و البته در مخازن معتبر و سایت Gnome-look که منبع اصلی دانلود اکستنشنهای مرتبط با این محیط گرافیکی هست وجود نداره و فقط تو یه سری سایت های غیر رسمی آپلود شده که باز این هشدار رو به ما میده که پکیج ها رو از منابع معتبرشون دانلود کنیم. برای هر چیزی توی لینوکس منبع و ریپازیتوری امن خودش وجود داره و همین موضوع نسبت به ویندوز ما رو از نظر امنیتی خیلی جلوتر میندازه. اما بزارید یه مقدار از کارای این ویروس براتون بگم.
    این ویروس از ابزار makeSelf استفاده کرده که با اجرای این فایل خودش عملیات استخراج فایلهای برنامه رو انجام میده و در واقع ویروس رو در مسیر زیر کپی میکنه.
    ~/.cache/gnome-software/gnome-shell-extensions/
    این ویروس میاد به طور دائم به سرورش وصل میشه و منتظر دریافت دستورات جدید و ورژن جدید ویروس میشه، میتونه اسکرین شات بگیره، عکس بگیره، صدا رو ضبط کنه، اطلاعات فایلها رو بدزده و همه ی اینها رو مرتب میتونه به سرورش بفرسته. یه تابع هم برای کی لاگینگ داره یعنی هر کلیدی که رو صفحه کلید فشار داده میشه رو بتونه ذخیره کنه.

چطوری در لینوکس امن بمونیم؟

هر توزیع لینوکسی ای معمولا یه راهنمای پایه برای حفظ امنیت کاربران داره. به عنوان مثال در اوبونتو رعایت هفت قانون زیر باعث امن موندن شما میشه:

  • هر وقت اعلان به روزرسانی امنیتی براتون اومد، بی درنگ نصبش کنین.
  • آنتی ویروس نصب نکنید چون توی لینوکس نیازی بهش ندارین، مگر مواقعی کی با ویندوز فایل به اشتراک میزارین
  • فایروال خودتون رو روشن کنید
  • جز در موارد ضروری، همیشه از مخازن معتبر دانلود کنید
  • جاوا رو بصورت پیش فرض در مرورگرتون خاموش کنید
  • در صورتی که از نرم افزار Wine استفاده میکنید، با حواس جمع اینکارو انجام بدین
  • مهم تر از همه: از عقل سلیم خود استفاده کنید، مهم ترین تهدید امنیتی معمولا بین کیبورد و صندلیه! 🙂

پیشنهاد میکنم سری به این لینک بزنید: https://wiki.ubuntu.com/BasicSecurity

برای لینوکس هم آنتی ویروس هایی وجود دارند که میتونید نصب و استفاده کنین. عمدتا از این نرم افزار ها برای اسکن USB-disk و دیسک های جانبی که ممکنه در محیط ویندوز آلوده باشند استفاده میکنیم اما در کل میتونیم با استفاده از این نرم افزار ها خود سیستم لینوکسی رو هم اسکن کنیم.

در آخر میخوام یه آنتی ویروس رایگان و متن باز برای لینوکس معرفی کنم که میتونه براتون مفید باشه. خصوصا اگر فایلهایی رو با ویندوز به اشتراک میزارید یا میخواید فلش دیسک یا هاردتون رو اسکن کنید. یکی از بهترین هاش Clamav هست که یه آنتی ویروسه که توی ترمینال اجرا میشه اما اگر کار باهاش براتون سخته یا خوشتون نمیاد در کنارش رابط گرافیکیش رو هم میتونید نصب کنید که اسمش clamtk هست و به عنوان به نرم افزار توی سیستم نصب میشه خیلی راحت قابل دسترسه.

https://www.youtube.com/watch?v=oBtpY7NIgdg
لینک مشاهده ویدیو

امیدوارم این پست یا ویدیو بدردتون بخوره و چیزی ازش یادگرفته باشین، لطفا نظرتون رو در مورد این ویدیو تو بخش کامنت ها برام بنویسید و اگر این ویدیو رو دوست داشتید لایک کنید تا در یوتیوب امتیاز بهتری بگیریم و این ویدیو برای دیگران هم پیشنهاد بشه. مرسی از همه ی شما که کانال من رو دنبال می کنید و دنبال یادگیری و توسعه دانش خودتون هستید.

خب حالا بگید ببینم، آیا لینوکس ویروس میگیره؟ 🙂

بررسی اوبونتو نسخه ی 20.04

امروز میخوایم در مورد نسخه ی جدید ۲۰.۰۴ اوبونتو صحبت کنیم و به بررسی اجمالی تغییرات و ویژگی های جدیدش بپردازیم.

چیستی «انسانِ» پیچیده و ارتباط آن با ماهیت برنامه نویسی

چیستی انسان پیچیده و ارتباط آن با ماهیت برنامه نویسی

انسان ها احتمالا یکی از پیچیده ترین موجودات این عالم هستند. چرا که موجودیتشان شامل بسیاری چیز ها و عناصر مختلفی می شود و ویژگی های بسیار دارند. از تک تک اتم های بدنشان گرفته تا افکار، رفتار، موجودیت های فیزیکیشان در دنیا، روابطشان، وابستگی هایشان، تک تک واژگان و حرف هایی که می زنند، امید ها، آرزو ها، حسرت ها، تجارب، احساساتشان، دارایی ها ندارایی هایشان و کلی چیز های دیگر که از شمارش خارج است؛ یا به گونه ای من اینطور فکر می کنم.

چیستی انسان پیچیده با ماهیت برنامه نویسی: انسان موجود عجیبی است. در کل یک موجود است با یک سری Entity و مشخصه که به تعداد خیلی زیادی Fork شده است. انگاری یک کلاس خیلی بزرگ که Clone شده باشد و انقدر بزرگ است که برای پردازش هر «انسان» نیاز به ابر رایانه ها و البته پردازش عمیق است.

در کل اگر نگاه شیئ گرایانه داشته باشید و یک برنامه نویس حرفه ای و کار کشته باشید، میدانید چه می گویم. کلا بنظر من شیء گرایی به ما در ترسیم یک جهان کمک می کند. فرض کنید یک انسان یک کلاس است با ویژگی های مختلف به عنوان متغیر، چیز هایی هم به عنوان ثابت، مانند تاریخ تولد و…، یک سری متد یا فانکشن؛ به عنوان مثال راه رفتن، غذا خوردن، نوشتن و… .

اولین بار که این نگاه را به دنیا داشتم در هنرستان بود. درس Adobe Flash ، یک چیزی داشت عین یک Object. هر شیء میتونست جدا گانه کار بکنه. تصور بکنید یک ماشین که خودش یک شیء است و کلی شیء زیر مجموعه داره. مثل لامپ، لاستیک، فرمان و… . این دنیای Object Oriented دنیای بسیار زیبایی است و نگاه جالبی رو به نسبت جهان به ما میده.

جالب اینکه مبحثی وجود داره به اسم وراثت یا Inheritance که در برنامه نویسی شیء گرا بسیار کاربرد داره. در این مواقع ما از موجودیت ها و متد های یک کلاس میتوانیم به کلاس های فرزند هم بدهیم یعنی عملا بحث توارث مطرح است.

یکی از چیز هایی که برنامه نویسی به ما می آموزد «منطق» است. برنامه نویسی صبحت کردن با یک سیستم با قابلیت برنامه ریزی است. ما به سیستم می گوییم چه کار بکند. البته در مباحث هوش مصنوعی چیز های بسیار پیچیده تر می شوند. کامپیوتر بشدت منطقی است. یعنی اگر شما به سیستم خود دستور بدهید خاموش شو، بدون اینکه در نظر بگیرد شوخی کرده اید یا نه اطاعت امر می کند.

جالب است نه؟! (بیشتر…)

ذهنیت برنامه نویسی واقعا چیست؟

براستی ذهنیت برنامه نویسی چیست و چه تفاوتی با کد نویسی دارد؟! برنامه نویس به چه کسی گفته می شود و یک برنامه نویس باید چگونه فکر کند؟

نرم افزارهایی برای کنترل استفاده از فضای مجازی

در این مقاله قصد دارم شما را با چند تا از بهترین نرم افزار های مدیریت زمان در گوشی های موبایل آشنا کنم و به شما کمک کنم تا وقتتون رو با چرخ زدن توی نرم افزار های فضای مجازی (social media) مانند اینستاگرام، فیسبوک، تلگرام، واتساپ، لاین، وایبر و… هدر ندین.

آموزش ساخت ماشین حساب ساده با پایتون

سلام?، در این قسمت از آموزش های پروژه محور پایتون با شما هستیم تا یک ماشین حساب پایتون رو بصورت خیلی ساده پیاده سازی کنیم. اول از همه باید بدونیم این برنامه ای که می خوایم بنویسیم چه کار هایی قراره انجام بده. همونطور که از اسمش هم پیداست قراره یه سری عددو (اینجا برای سادگی فقط 2 عدد) با هم جمع، تفریق، ضرب و تقسیم کنیم. یه همین سادگی.

نکته: قراره بصورت functional کد بنویسیم. یعنی کد های هر قسمتو بصورت جداگانه بنویسیم و بعد فراخوانی کنیم. مثلا ماژول جمع زدن، تفریق و… رو می نویسیم بعد تو هسته ی اصلی برنامه فراخوانی می کنیم.

خب  چون کارمون با حساب و کتابه همون اول برنامه میایم کتابخونه ی math پایتون رو که برای محاسبات ریاضی هستش رو include می کنیم.

from math import *

بعدش یه پیام خوش آمد گویی برای استارت برنامه می نویسیم.

print ("Hello sir! welcome to Rabbit calculator...")

خب حالا نوبت به تعریف یه فانکشن برای منوی برنامه است. می خوایم لیستی از کارهایی که میشه رو بعلاوه ی operator هایی که کاربر باید بزنه تا اون کار انجام بشه رو وارد کنیم.

def options():
   print("------------------------------------------------------------------")
   print("Options: ")
   print ("------------------------------------------------------------------")
   print("Enter '+' to add two numbers")
   print("Enter '-' to subtract two numbers")
   print("Enter '*' to multiply two numbers")
   print("Enter '/' to divide two numbers")
   print("Enter '**' to power two numbers")
   print("Enter '&' to square root ")
   print("Enter 'exit' to exit the calculator")
   print("------------------------------------------------------------------")

حالا توابع جمع، ضرب و… رو می نویسیم.

#divide function
def divide():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 / num2
print("The answer: ", result,"\n")
except ZeroDivisionError:
print ("Error: division by zero is not possible!")
divide()
finally:
x = input ("wanna continue? (y/n) ")
if x == "y" or x == "Y":
divide()
else:
exit


#Add function
def add():
try:
num1,num2 = float(input("Enter first number: ")),float(input("Enter second number: "))
result = num1 + num2
print ("The answer: ",result,"\n")
except:
print ("An error ooccured!")
finally:
r = input ("wanna continue? (y/n) ")
if r == "y" or r == "Y":
add()
else:
exit
#Subtract function
def subtract():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 - num2
print("The answer: ", result,"\n")
except:
print ("An error ooccured!")
finally:
z = input ("wanna continue? (y/n) ")
if z == "y" or z == "Y":
subtract()
else:
exit

#Multiply function
def multiply():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 * num2
print("The answer: ", result,"\n")
except:
print ("An error ooccured!")
finally:
y = input ("wanna continue? (y/n) ")
if y == "y" or y == "Y":
multiply()
else:
exit

#Power function
def power():
try:
num1, num2 = float(input("Enter first number: ")), float(input("Enter second number: "))
result = num1 ** num2
print("The answer: ", result, "\n")
del (result)
except:
print ("An error ooccured!")
finally:
a = input ("wanna continue? (y/n) ")
if a == "y" or a == "Y":
power()
else:
exit
#Square root function
def square_root():
try:
num1 = float(input("Enter Your number: "))
result = sqrt(num1)
print("The answer: ",result)
except:
print ("An error ooccured!")
finally:
b = input ("wanna continue? (y/n) ")
if b == "y" or b == "Y":
square_root()
else:
exit

حالا کد های اصلی برنامه رو که توش همه ی فانکشن ها رو فراخوانی کردیمو می نویسیم:

#Base codes
while True:
options()
try:
u_in = input("Enter Your command: ")
if u_in == "exit" or u_in == "Exit" or u_in == "quit" or u_in == "Quit":
print("Good bye!\n------------------------------------------------------------------")
break
elif u_in == "+":
add()
elif u_in == "-":
subtract()
elif u_in == "*":
multiply()
elif u_in == "/":
divide()
elif u_in == "**":
power()
elif u_in == "&":
square_root()
else:
print ("check your input!\n")
except:
print ("An error ooccured!")

#Show all errors
raise

نکات:

  • while True: یعنی تا بینهایت همینجوری اجرا بشه. چون شرطش برقراره.
  • کد ها رو تو try گذاشتم تا اگه مشکلی تو اجراش پیش اومد بیام با دستور except یه متنی رو که خودم نوشتم به عنوان ارور نشون بده.
  • دستور raise میاد ارور ها رو نشون میده. (در واقع تو انگلیسی هم raise به معنای بالا آوردنه)

دوستان هرکدوم از دستورات رو که نمتوجه نشدید میتونید همین پایین کامنت بزارید.

موفق باشید

لینک ها:

#iguru_soc_icon_wrap_638788e015a78 a{ background: transparent; }#iguru_soc_icon_wrap_638788e015a78 a:hover{ background: transparent; border-color: #00bda6; }#iguru_soc_icon_wrap_638788e015a78 a{ color: #acacae; }#iguru_soc_icon_wrap_638788e015a78 a:hover{ color: #ffffff; }