Linux Experts
223 subscribers
11 photos
2 videos
20 links
A place where commits tell stories 📖, and bugs are features

Ctrl + Alt + Explore 🚀


Contact: @su_root_sh
Group: @Linux_ex
Download Telegram
Channel created
Channel name was changed to «Linux Experts»
A long time ago in a galaxy far, far Away, a group of friends set out on a journey... 🚀

[friends@banana ~]$ git init .


🔘 #Memory
🍌8
گاهی وقت لازم هست یک برنامه رو به صورت ایزوله و سندباکس اجرا کنیم. یکی از برنامه هایی که این کار رو انجام میده Firejail هست و هر برنامه رو در یک Namespace جداگانه اجرا می‌کنه.

‌‏Namespace توی لینوکس قابلیتیه برای جداسازی منابع سیستم. هر پردازش داخل فضای مشخص خودش اجرا میشه و دید محدودی نسبت به منابع داره؛ طوری که انگار روی یک سیستم مستقل کار میکنه. این قابلیت برای ایزوله کردن یک پردازش از سایر پردازش‌های سیستم مناسبه.

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

whitelist /opt/maple
whitelist /home/linux_exp/.maplesoft/
net none
private
private-tmp
seccomp
caps.drop all


توضیح تنظیمات پروفایل بالا:

🔹 whitelist: دسترسی فقط به مسیرهای مشخص (مثل cache و مسیری که برنامه قرار داره تا بتونه درست کار کنه)
🔹 net none: قطع کامل اینترنت و شبکه
🔹 private / private-tmp: دایرکتوری ها در یک فایل سیستم موقت روی tmp/ ایجاد میشن
🔹 seccomp: محدود کردن syscallهای مهم
🔹 caps.drop all: حذف همه دسترسی‌های ویژه (حتی با sudo هم امکان کارهایی مثل mount/unmount رو نداره)

بعد از ساخت و ذخیره پروفایل، اون رو همراه با برنامه‌ایی که می‌خوایم اجرا کنیم به Firejail می‌دیم:

firejail --profile=~/.config/firejail/maple.profile maple &

توی مخازن اکثر توزیع ها هستش میتونید نصب و استفاده کنید.

🔘 @linux_exp | #Linux #Firejail
🔥7👍2
بعضی وقتا برای شروع کاری ذهن ما گرفتار تفکر «همه‌چیز یا هیچ» میشه: یا باید همه چیز کامل باشه، یا اصلاً شروع نکنیم. اما واقعیت متفاوته...

هیچ‌چیز کامل نیست؛ اما تلاش تدریجی برای بهتر شدن و نزدیک شدن به کامل بودن، شیوه درستی از زندگی هستش.

🔗 Image source
🔘 @linux_exp | #NonTechnical
👍6
از این به بعد، هر چند وقت یک بار پستی با هشتگ #معرفی_نرم‌افزار منتشر می‌کنیم.

اینجا توی کامنت‌ها می‌تونید نرم‌افزارها یا ابزارهایی رو معرفی کنید که به دردتون خوردن و فکر می‌کنید بقیه هم لازمه بشناسن رو بازنشر بدید 🌱

لینک برنامه رو (موبایل یا دسکتاپ) همراه با یه توضیح کوتاه این زیر کامنت کنید 👇

اگر هم پروژه ایی از خودتون هست که مفیده و دوست دارید به اشتراک بذارید، بازم میتونید این زیر کامنت کنید.

🔘 @linux_ex | #معرفی_نرم‌افزار
👍6💅1
LFS : Linux from Scratch

اسمی که حتی برای کاربران چندین ساله گنو/لینوکس ترسناکه اما میتونه یک تفریح خیلی اموزنده باشه.

پروژه LFS در واقع پروژه ایه که به شما نشون میده چجوری مرحله به مرحله سیستم عامل لینوکسی خودتون رو از سورس کد بسازید.

این پروژه این امکان رو به شما میده که با جزییات بسیار دقیق و گاها جالب اشنا بشید و اتفاقاتی که دست به دست هم میدن تا یک سیستم عامل رو بوجود بیارن رو درک کنید.

جامعه هدف LFS بیشتر توسعه دهندگان و کاربران حرفه ای هست که میخوان کنجکاوی خودشون رو ارضا کنن و مهارت هاشون رو به چالش بکشن. اما اینجا محدود نمیشه شما اگه دنبال یک سیستم عامل سفارشی از صفر میگردید جزو جامعه هدف LFS هستید

ریلیز اولیه LFS حدود سال ۱۹۹۹ بود که نشون بده چجوری میشه یک توزیع لینوکسی رو از سورس بیلد گرفت و اون رو ساخت. شاید براتون سوال باشه اگه از صفره ریلیز چی ؟! ریلیز کتاب :)

اگه شماهم دنبال به چالش کشیدن مهارت های خودتون هستید یا میخواید امتحان کنید میتونید کتاب LFS رو بصورت رایگان از [ سایت ] خودش دریافت کنید .

git clone https://git.linuxfromscratch.org/lfs.git lfs-git


🔘 @linux_exp | #linux #lfs
42👍1👻1
Media is too big
VIEW IN TELEGRAM
💢 چطوری یک فلش مموری بوتیبل از ایزوی ویندوز توی لینوکس بسازیم ؟


توی این ویدیوضمن بررسی چالش های این کار، دو ابزار woeUSB و Ventoy رو باهم بررسی کردیم و در اخر Ventoy رو روی یک usb باهم نصب کردیم .

+ مطلب خیلی ساده ایه اما شروعی بود برای محتواهای تصویریمون 🤝 منتظر ویدیو های مفید تر باشید :)


🔘 @linux_exp | #usb #linux #video
🔥42👍1🍾1🆒1
چجوری موقع لاگین شدن از SSH نوتیف دریافت کنیم؟

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

بهترین ابزار برای انجام این کار استفاده از PAM (Pluggable Authentication Module) هستش که میتونیم کار دلخواهمون رو (اینجا فرستادن نوتیف) موقع باز شدن یک نشست (session) توی SSH هندل کنیم

برای انجام این کار سراغ فایل
/etc/pam.d/sshd
برید و بعد خطی که توش session حال حاضر تعریف شده اضافه کنید:
session optional pam_exec.so /usr/local/bin/ssh-login-notify.sh

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

بخش اخر خیلی به خلاقیت خودتون بستگی داره که چجوری هندلش کنید. مثلا ایمیل فرستاده بشه یا توی تلگرام و سایر جاها مثل دیکسورد نوتیفش رو داشته باشید و هزاران کار دیگه!

+ مرحله اخر بصورت استفاده از Gmail SMTP توی منبع ذکر شده میتونید مطالعه کنید :)

[ Source ]

🔘 @linux_exp | #SSH #PAM #linux
🔥9👌52👍1
دیروز یکی از دوستان با وجود اینکه چند گیگ فضای خالی روی سرور داشت، ولی نمی‌تونست فایل ایجاد کنه که مشکل از پر شدن inode های سرور بود.

📌 ‏inode چیه؟


می‌تونیم inode رو مثل کارت شناسایی فایل‌ها توی لینوکس تصور کنیم. هر فایلی که روی سیستم هست یه کارت شناسایی (inode) داره که توش اطلاعات مهم مثل اندازه فایل، محل ذخیره‌سازی فایل روی دیسک، مالک و تاریخ‌ها نوشته شده. یعنی حتی اگه فضای خالی روی هارد باشه، اگه همه کارت‌ها پر شده باشن، سیستم نمی‌تونه فایل جدید بسازه چون دیگه کارت شناسایی جدید برای فایل وجود نداره.

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


♨️ مشکل پر شدن چطوری پیش میاد؟

معمولا وقتی تعداد خیلی زیادی فایل ریز و درشت روی سیستم ذخیره می‌کنیم (بیش از حد نرمال)، مخصوصا فایل‌های کوچک، هر فایل یه inode می‌گیره. بعد از یه مدت، حتی اگه فضای هارد زیادی داشته باشیم، همه inode ها پر می‌شن و سیستم دیگه نمی‌تونه فایل جدید بسازه.

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

معمولا فایل‌های لاگ قدیمی، فایل‌های موقت یا کش‌ها بیشترین inode رو مصرف می‌کنن. حتی دایرکتوری‌ها هم inode دارند! با پاک کردن این فایلها می‌تونید فضای inode رو آزاد کنید و مشکل پر شدن رو حل کنید.


🔘 @linux_exp | #linux #inode
🔥5🥰3👍2👌1🫡1
📌 معرفی ReVanced

‏ReVanced یک مجموعه ابزار اوپن‌سورسه که بهتون اجازه می‌ده اپ‌های محبوب مثل YouTube،‏ YouTube Music،‏ TikTok،‏ Spotify و ... رو بدون تبلیغ، با امکانات مثل پخش در پس‌زمینه یا اسپانسر بلاک و شخصی‌سازی‌های ویژه استفاده کنید.

ReVanced Manager اپ رسمی اندرویدی تیم ReVanced هست که نصب و مدیریت همه اپ‌های مود شده ReVanced رو ساده و امن می‌کنه. جایگزین Vanced قدیمی شده و همیشه آپدیت میشه تا بهترین تجربه بدون تبلیغ رو در اختیار شما بذاره.

طرزکار ReVanced Manager به این شکل هست که لیست پچ‌های سازگار با آخرین نسخۀ اپ موردنظر رو بهتون نشون می‌ده و شما باید فایل APK اون اپ رو بهش بدید و پچ‌های موردنظرتون رو انتخاب کنید تا پروسۀ زیر رو به ترتیب به صورت خودکار انجام بده.
Decompile -> Patch -> Complie -> Sign APK

فایل خام APK با نسخه‌های خاص رو می‌تونید از سایت‌هایی مثل APKMirror.com دانلود کنید.


هرچند پیدا کردن نسخۀ مناسب برای پچ و انجام دادن این پروسه ممکنه زمان‌بر و سنگین باشه. اگه نمی‌خواستید این مراحل رو طی کنید، می‌تونید از builderهای غیررسمی اوپن‌سورس استفاده کنید که این مراحل رو انجام می‌دن و خروجی نهایی رو در اختیارتون می‌ذارن.

حواستون باشه که اگه از پچ‌های پیش‌فرض استفاده می‌کنید برای لاگین کردن به اکانت گوگلتون باید GmsCore داشته باشید.

‏GmsCore بهتون اجازه می‌ده حتی اگه سرویس‌های گوگل رو ندارید بتونید به راحتی از ReVanced استفاده کنید.


ReVanced ] [ ReVanced Manager ] [ GmsCore ] [ Peternmuller's Builder ]

🔘 @linux_exp | #android #tools
👍4🔥3
💢 چندتا اصلاح (یا بهتر بگیم اشتباه) مهم تو دنیای برنامه‌نویسی هست که دونستنشون خالی از لطف نیست و باعث می‌شه کمتر تو تله‌شون بیفتیم:

🔶 Shotgun Debugging
یعنی وقتی یه باگ داری، به جای اینکه منطقی بررسیش کنی، شروع می‌کنی بی‌هدف بخش‌های مختلف کد رو دست‌کاری کردن، به امید اینکه یه جایی یه چیزی درست بشه.
در واقع داری با شات‌گان شلیک می‌کنی و بدون اینکه بدونی هدف دقیقا کجاست، امیدواری یکی از تیرها بخوره به هدف.
نتیجه؟ احتمالا یه چیز درست می‌شه، ولی دوتا چیز دیگه خراب میشن.


🔷 Deep Magic
به کدی گفته می‌شه که اون‌قدر پیچیده، مبهم یا پر از ترفندهای غیرمعمول هست که حتی خود نویسنده‌اش هم بعد از مدتی نمی‌فهمه دقیقا چی نوشته. معمولا این نوع کد کاری پیشرفته یا غیرمنتظره انجام می‌ده و از بیرون مثل «جادو» به نظر می‌رسه، ولی در واقع نگه‌داری و درک اون بسیار سخته. کد خوب باید واضح، قابل‌خوندن و قابل‌توضیح باشه، نه پر از «جادو».


🔶 Cargo Cult Programming
وقتی یه چیزی رو تو یک پروژه یا شرکت دیگه دیدیم و بدون اینکه بفهمیم چرا یا چطور استفاده شده، همونو تو پروژه خودمون پیاده می‌کنیم.
مثلا: «فلان شرکت از Kubernetes استفاده می‌کنه، پس ما هم باید بریم سمتش، چون حتما گزینه خوب و درستی بوده که انتخابش کرده»
در ظاهر داریم از Best Practice ها استفاده می‌کنیم، ولی در واقع فقط داریم تقلید می‌کنیم بدون دونستن منطق پشت این انتخاب.


🔘 @linux_exp | #programming #fyi
👍7🔥3👌21
تو کیبورد استاندار فارسی کاراکترهای کنترلی نوشتاری وجود داره که برای مدیریت جهت و ترتیب نوشتار تو متن‌های چندزبانه (مثل فارسی که راست به چپه و انگلیسی که چپ به راسته) استفاده می‌شه. این کاراکترها برای کنترل درست نمایش متن‌های دوسویه و پیچیده ضرورین و در استاندارد یونیکد تعریف شدن.

LRM (Left-to-Right Mark) و RLM (Right-to-Left Mark):
کاراکترهای نامرئی‌ای که جهت نوشتار رو مشخص می‌کنن و اون رو تغییر می‌دن بدون این‌که چیزی نمایش داده بشه. مثلا RLM باعث می‌شه متن پس از اون راست‌به‌چپ تفسیر بشه و LRM برعکس.

LRO (Left-to-Right Override) و RLO (Right-to-Left Override):
این کاراکترها جهت متن رو به صورت اجباری و override تعیین می‌کنن، یعنی تمام کاراکترهای بعدی تا پایان این حالت، به چینش مشخص شده (چپ به راست یا راست به چپ) نمایش داده می‌شن، حتی اگه مخالف رفتار طبیعی‌شون باشه.

LRE (Left-to-Right Embedding) و RLE (Right-to-Left Embedding):
مشابه LRO/RLO ولی به‌صورت تعبیه (embedding) هستن، یعنی می‌تونن در متن اصلی جهت بخش کوچکی رو تغییر بدن اما این حالت اجباری نیست و رفتار طبیعی کاراکترهارو تغییر نمی‌ده.

بخش کوچک تحت تاثیر در این مورد عموما کاراکترهای خنثی هستن یعنی به‌طور پیش‌فرض جهتی برای چینش‌شون تعیین نشده مثل علائم (+/!->)


PDF (Pop Directional Formatting):
کاراکتری که پایان یک حالت override یا embedding رو نشون می‌ده و کنترل جهت رو به حالت قبل برمی‌گردونه.

مثال:
‏<RLM>‏order کاراکترهای LTR مثلا اعداد پشت هم ۱ ۲ ۳ می‌تونن بشن <LRM>‌‌‎۱ ۲ ۳‌‌‎<RLM>‌‌‏!

تا جایی که فهمیدم تلگرام تو فرستادن کاراکترهای embedding و override مشکل داره.


🔘 @linux_exp | #linux #keyboard #unicode
👍411