🔹 آشنایی با jq — چاقوی سوئیسی برای JSON!
اگه زیاد با فایلها یا خروجیهای JSON سر و کار دارین، احتمالاً میدونین خوندن و فیلتر کردنش با ابزارهای معمول مثل grep یا awk زیاد جالب از آب در نمیاد!
اینجاست که jq به دردتون میخوره. jq یه ابزار خط فرمانه که میتونه دادههای JSON رو بخونه، فیلتر کنه، تغییر بده یا حتی قالبشونو عوض کنه.
مثلاً با یه دستور ساده میتونین فقط یه فیلد خاص رو از یه فایل JSON بزرگ بیرون بکشین:
یا حتی صرفاً فقط دادهها رو مرتب و رنگی چاپ کنین تا راحتتر خونده بشن:
برای کسایی که با APIها، دادههای ساختاریافته یا اسکریپتهای خودکار کار میکنن، jq یه ابزار واقعاً نجاتدهندهست.
🔘 @linux_exp | #linux #commandline #tools
اگه زیاد با فایلها یا خروجیهای JSON سر و کار دارین، احتمالاً میدونین خوندن و فیلتر کردنش با ابزارهای معمول مثل grep یا awk زیاد جالب از آب در نمیاد!
اینجاست که jq به دردتون میخوره. jq یه ابزار خط فرمانه که میتونه دادههای JSON رو بخونه، فیلتر کنه، تغییر بده یا حتی قالبشونو عوض کنه.
مثلاً با یه دستور ساده میتونین فقط یه فیلد خاص رو از یه فایل JSON بزرگ بیرون بکشین:
cat data.json | jq '.users[].name'
یا حتی صرفاً فقط دادهها رو مرتب و رنگی چاپ کنین تا راحتتر خونده بشن:
cat data.json | jq
برای کسایی که با APIها، دادههای ساختاریافته یا اسکریپتهای خودکار کار میکنن، jq یه ابزار واقعاً نجاتدهندهست.
در ضمن اگه میخواستین سریعتر عمل کنین میتونین جاش jaq بزنین
🔘 @linux_exp | #linux #commandline #tools
👍4🔥4🥰1😁1🍌1
📂 مفهوم File Descriptor
در لینوکس، File Descriptor یا به اختصار FD یک عدد صحیحه که سیستمعامل برای دسترسی به هر فایل، سوکت، یا حتی ورودی/خروجی (مثل کیبورد و ترمینال) استفاده میکنه.
وقتی یک پروسه فایلی رو باز میکنه، کرنل یک عدد بهش اختصاص میده که همون File Descriptor هست (توی عکس بالا خیلی خوب به تصویر کشیده شده میتونید مراحل رو دنبال کنید)
به طور استاندار هر پروسه، سه fd مهم داره:
0 → stdin (ورودی)
1 → stdout (خروجی)
2 → stderr (خطا)
گاها ازشون استفاده کردیم ولی شاید دقت نکردیم دقیقا دارن چی کار میکنن. مثلا وقتی خروجی و ارور یه دستور رو میفرستیم توی یک فایل:
دستور بالا متشکل از 2 ریدایرکت هست:
🔹 بخش اول: (
خروجی یا FD 1 متعلق به پروسه (دستور
🔸 بخش دوم: (
اگر اروری پیش بیاد، اون رو هم میفرسته همونجایی که خروجی (دسکریپتور 1) فرستاده شده.
توی تصویر بالا یک تکه کد پایتون هم هست که بصورت مصور و کامیکطور محاوره بین پروسه و کرنل رو نشون داده.
به طور کلی File Descriptor یه عدد ساده هست، اما در واقع پل ارتباطی بین برنامه و کرنل برای کار با فایلها و منابع I/O محسوب میشه.
🔘 @linux_exp | #linux #fd #file_descriptor
در لینوکس، File Descriptor یا به اختصار FD یک عدد صحیحه که سیستمعامل برای دسترسی به هر فایل، سوکت، یا حتی ورودی/خروجی (مثل کیبورد و ترمینال) استفاده میکنه.
وقتی یک پروسه فایلی رو باز میکنه، کرنل یک عدد بهش اختصاص میده که همون File Descriptor هست (توی عکس بالا خیلی خوب به تصویر کشیده شده میتونید مراحل رو دنبال کنید)
دستور lsof (کوتاه شده List Open Files) نشون میده چه فایلهایی توسط چه پروسههایی باز هستن.
به طور استاندار هر پروسه، سه fd مهم داره:
0 → stdin (ورودی)
1 → stdout (خروجی)
2 → stderr (خطا)
گاها ازشون استفاده کردیم ولی شاید دقت نکردیم دقیقا دارن چی کار میکنن. مثلا وقتی خروجی و ارور یه دستور رو میفرستیم توی یک فایل:
ls /etc > out.txt 2>&1
دستور بالا متشکل از 2 ریدایرکت هست:
🔹 بخش اول: (
ls /etc > out.txt)خروجی یا FD 1 متعلق به پروسه (دستور
ls) ریخته میشه توی فایل out.txt🔸 بخش دوم: (
2>&1)اگر اروری پیش بیاد، اون رو هم میفرسته همونجایی که خروجی (دسکریپتور 1) فرستاده شده.
توی تصویر بالا یک تکه کد پایتون هم هست که بصورت مصور و کامیکطور محاوره بین پروسه و کرنل رو نشون داده.
به طور کلی File Descriptor یه عدد ساده هست، اما در واقع پل ارتباطی بین برنامه و کرنل برای کار با فایلها و منابع I/O محسوب میشه.
🔘 @linux_exp | #linux #fd #file_descriptor
👍5🔥4🆒3❤1
❗ اطلاعیۀ تیم آرچ برای کاربران waydroid
تو نگارشهای پیش از v1.5.4-2 بستۀ waydroid آرچ لینوکس، فایلهای کش .pyc موقع اجرا ساخته میشدن که توسط پکمن شناسایی نمیشدن. این مشکل تو نگارش v1.5.4-3 برطرف شده و این فایلها در حین فرایند بستهبندی ساخته میشن.
در نتیجه موقع ارتقا ممکنه بسته با فایلهای ساختهشدۀ بدون مالک نگارشهای پیشین تداخل داشته باشه. اگه موقع بهروزرسانی به خطاهایی شبیه به این برخوردین:
میتونین با دستور زیر این فایلهارو بهطور امن بازنویسی کنین:
#linux #archlinux #packaging #news
🔘 @linux_exp ~> Source
تو نگارشهای پیش از v1.5.4-2 بستۀ waydroid آرچ لینوکس، فایلهای کش .pyc موقع اجرا ساخته میشدن که توسط پکمن شناسایی نمیشدن. این مشکل تو نگارش v1.5.4-3 برطرف شده و این فایلها در حین فرایند بستهبندی ساخته میشن.
در نتیجه موقع ارتقا ممکنه بسته با فایلهای ساختهشدۀ بدون مالک نگارشهای پیشین تداخل داشته باشه. اگه موقع بهروزرسانی به خطاهایی شبیه به این برخوردین:
error: failed to commit transaction (conflicting files)
waydroid: /usr/lib/waydroid/tools/__pycache__/__init__.cpython-313.pyc exists in filesystem
waydroid: /usr/lib/waydroid/tools/actions/__pycache__/__init__.cpython-313.pyc exists in filesystem
waydroid: /usr/lib/waydroid/tools/actions/__pycache__/app_manager.cpython-313.pyc exists in filesystem
میتونین با دستور زیر این فایلهارو بهطور امن بازنویسی کنین:
pacman -Syu --overwrite /usr/lib/waydroid/tools/\*__pycache__/\*
#linux #archlinux #packaging #news
🔘 @linux_exp ~> Source
❤6👍3🤷♂2
Linux Experts
❗ اطلاعیۀ تیم آرچ برای کاربران waydroid تو نگارشهای پیش از v1.5.4-2 بستۀ waydroid آرچ لینوکس، فایلهای کش .pyc موقع اجرا ساخته میشدن که توسط پکمن شناسایی نمیشدن. این مشکل تو نگارش v1.5.4-3 برطرف شده و این فایلها در حین فرایند بستهبندی ساخته میشن. در…
💢 معرفی Waydroid
Waydroid یه پروژۀ متنباز و آزاده که به شما اجازه میده سیستمعامل اندروید رو مستقیم داخل لینوکس اجرا کنید، بدون اینکه نیازی به شبیهسازی کامل سختافزار (مثل Android Studio Emulator یا VirtualBox) داشته باشید.
با Waydroid میتونید اپهای اندروید رو کنار اپهای لینوکسی باز کنید، بینشون جابهجا بشید یا اونا رو توی دسکتاپ خودتون پین کنید، از امکاناتی مثل صدا، شبکه و تاچ استفاده کنید.
اما Waydroid محدودیتی هم داره که به ویلند(Wayland) وابستهست. چون ویلند دسترسی مستقیمتر و مدرنتری به رندرینگ و compositor سیستم میده و بهتر میتونه گرافیکهای OpenGL و Vulkan رو بین میزبان و اندروید به اشتراک بذاره.
در مقابل، X11 ساختار قدیمیتری داره و برای این نوع یکپارچگی گرافیکی و شتاب GPU مناسب نیست. به همین خاطر، Waydroid در حال حاضر فقط روی محیطهایی که ویلند دارن (مثل گنوم یا پلاسما) بهدرستی کار میکنه.
🔘 @linux_exp | #linux #waydroid #wayland #android
Waydroid یه پروژۀ متنباز و آزاده که به شما اجازه میده سیستمعامل اندروید رو مستقیم داخل لینوکس اجرا کنید، بدون اینکه نیازی به شبیهسازی کامل سختافزار (مثل Android Studio Emulator یا VirtualBox) داشته باشید.
در واقع Waydroid از فناوری LXC (Linux Containers) استفاده میکنه تا یه محیط اندروید واقعی رو داخل یه کانتینر سبک اجرا کنه. چون این کانتینر از هستۀ لینوکس میزبان شما استفاده میکنه (نه یه کرنل جداگانه)، کارایی خیلی بالاتری نسبت به شبیهسازها داره. تا حدی که اپهای اندرویدی تقریبا با سرعت بومی اجرا میشن و از GPU واقعی سیستم برای شتاب گرافیکی استفاده میکنن.
با Waydroid میتونید اپهای اندروید رو کنار اپهای لینوکسی باز کنید، بینشون جابهجا بشید یا اونا رو توی دسکتاپ خودتون پین کنید، از امکاناتی مثل صدا، شبکه و تاچ استفاده کنید.
اما Waydroid محدودیتی هم داره که به ویلند(Wayland) وابستهست. چون ویلند دسترسی مستقیمتر و مدرنتری به رندرینگ و compositor سیستم میده و بهتر میتونه گرافیکهای OpenGL و Vulkan رو بین میزبان و اندروید به اشتراک بذاره.
در مقابل، X11 ساختار قدیمیتری داره و برای این نوع یکپارچگی گرافیکی و شتاب GPU مناسب نیست. به همین خاطر، Waydroid در حال حاضر فقط روی محیطهایی که ویلند دارن (مثل گنوم یا پلاسما) بهدرستی کار میکنه.
TL;DR
Waydroid یه راه سریع و یکپارچه برای اجرای اندروید روی لینوکسه که از کانتینر استفاده میکنه، نه شبیهسازی؛ و چون برای رندر گرافیک به ویلند وابستهست، فقط روی سیستمهایی که ویلند دارن اجرا میشه.
🔘 @linux_exp | #linux #waydroid #wayland #android
👍5🔥3⚡2🆒1
💢 توی سابردیت r/scams یک نفر پست گذاشته که چطور بعد از اجرای یه فایل مخرب، اطلاعتش از Password Manager مرورگر (کروم) دزدیده شده؛ چون کروم پسوردها رو به صورت plain text ذخیره میکنه!
داستان به این شکل بوده که مهاجم با ادعای بازیساز بودن پیام میده به قربانی و ازش میخواد که بازیش رو تست کنه. قربانی فایل بازی رو میده به آنتیویروس و اونم میگه مشکلی نیست؛ فایل رو اجرا میکنه و ازش خواسته میشه به خاطر اینکه انجین بازی درست کار کنه اون رو به صورت administrator ران کنه o_0
فرد این کار رو انجام میده و اولین اتفاقی که میوفته:
یک پنجره cmd باز میشه و مینویسه که برای مسیر زیر در آنتیویروس یک exception ساخته شد:
اینجا آنتیویروس دیگه مزاحم برنامه نمیشه و در نتیجه به دادههای داخلی کروم (مثل کوکی و پسوردها) دسترسی پیدا میکنه.
بعدش مهاجم توی دیسکورد شروع به اخاذی میکنه و برای اثبات، از فایل پسوردها اسکرینشات میفرسته — که همشون plain text بودن! جزییات بیشتر رو میتونید توی خود پست بخونید.
💠 نتیجهگیری
هدف بیشتر آگاهی از وضعیت کروم و مرورگر ها بود که اکثرا پسورد رو لوکال و بدون رمزنگاری نگه میدارن. اگه برنامهای بتونه به اون مسیرها دسترسی پیدا کنه (مثل اتفاق بالا)، عملا کل زندگیتون روی اینترنت در اختیار مهاجم قرار میگیره.
راههای مختلفی واسه حل این مشکل هست (مثل استفاده از پسورد منیجری که انکریپتد هست یا به کل استفاده نکردن ازشون) اما بخش مهم تر این هست که از تهدید احتمالی مطلع باشید.
🔘 @linux_exp | #vulnerability #chrome #fyi
داستان به این شکل بوده که مهاجم با ادعای بازیساز بودن پیام میده به قربانی و ازش میخواد که بازیش رو تست کنه. قربانی فایل بازی رو میده به آنتیویروس و اونم میگه مشکلی نیست؛ فایل رو اجرا میکنه و ازش خواسته میشه به خاطر اینکه انجین بازی درست کار کنه اون رو به صورت administrator ران کنه o_0
فرد این کار رو انجام میده و اولین اتفاقی که میوفته:
یک پنجره cmd باز میشه و مینویسه که برای مسیر زیر در آنتیویروس یک exception ساخته شد:
..AppData\Google\Chrome\Cookiesاینجا آنتیویروس دیگه مزاحم برنامه نمیشه و در نتیجه به دادههای داخلی کروم (مثل کوکی و پسوردها) دسترسی پیدا میکنه.
بعدش مهاجم توی دیسکورد شروع به اخاذی میکنه و برای اثبات، از فایل پسوردها اسکرینشات میفرسته — که همشون plain text بودن! جزییات بیشتر رو میتونید توی خود پست بخونید.
💠 نتیجهگیری
هدف بیشتر آگاهی از وضعیت کروم و مرورگر ها بود که اکثرا پسورد رو لوکال و بدون رمزنگاری نگه میدارن. اگه برنامهای بتونه به اون مسیرها دسترسی پیدا کنه (مثل اتفاق بالا)، عملا کل زندگیتون روی اینترنت در اختیار مهاجم قرار میگیره.
راههای مختلفی واسه حل این مشکل هست (مثل استفاده از پسورد منیجری که انکریپتد هست یا به کل استفاده نکردن ازشون) اما بخش مهم تر این هست که از تهدید احتمالی مطلع باشید.
🔘 @linux_exp | #vulnerability #chrome #fyi
👍5❤3🔥3🆒1
♨️ Debian Libre Live؛ دبیان تا حد ممکن آزاد
پروژه Debian Libre Live که بهتازگی معرفی شده، با هدف ارائه ایمیج لایو و نصاب دبیان که تا حد ممکن از هرگونه مؤلفه غیرآزاد (بهویژه firmware) خالی باشه طراحی شده. این پروژه برای معماری amd64 و arm64 هست و بر پایه همون نسخه اصلیه با تفاوت اینکه اجزای non‑free از اون حذف شده تا کاربرانی که به آزادی نرمافزار و شفافیت حساس هستند بتونن نسخهای نزدیک به دبیان رسمی رو بدون اتکا به نرمافزارهای close source، اجرا و نصب کنن.
این پروژه نقطه مقابل رایگیری سال ۲۰۲۲ دبیان هست برای قرار دادن firmwareهای غیرآزاد در ایمیجهای رسمی.
🔸 از اینجا میتونید ایمیج تازه پخته شده رو بگیرید.
🔘 @linux_exp | #debian #libre #fyi
پروژه Debian Libre Live که بهتازگی معرفی شده، با هدف ارائه ایمیج لایو و نصاب دبیان که تا حد ممکن از هرگونه مؤلفه غیرآزاد (بهویژه firmware) خالی باشه طراحی شده. این پروژه برای معماری amd64 و arm64 هست و بر پایه همون نسخه اصلیه با تفاوت اینکه اجزای non‑free از اون حذف شده تا کاربرانی که به آزادی نرمافزار و شفافیت حساس هستند بتونن نسخهای نزدیک به دبیان رسمی رو بدون اتکا به نرمافزارهای close source، اجرا و نصب کنن.
این پروژه نقطه مقابل رایگیری سال ۲۰۲۲ دبیان هست برای قرار دادن firmwareهای غیرآزاد در ایمیجهای رسمی.
ایمیجی مشابه Debian Live معمولی، اما بدون مؤلفه های غیرآزاد.
🔸 از اینجا میتونید ایمیج تازه پخته شده رو بگیرید.
🔘 @linux_exp | #debian #libre #fyi
🔥7