Gnu Tips

وبلاگ شخصی وحید معانی

برش یک فایل صوتی در ترمینال

mp3splt

mp3splt

من نیاز دارم که قسمتی از یک فایل صوتی رو ببرم و به صورت یک فایل مستقل ازش استفاده کنم امّا هیچ ابزاری روی گنو/لینوکس آرچم برای این کار ندارم، با یه خورده جستجو به دستور mp3splt می‌رسم (نه درست دیدین کلمه‌ی split داخل اسم دستور حرف i رو نداره!) این بسته داخل مخازج extra قرار داره و در توضیحاتش نوشته که:

Commandline tool for splitting mp3 and ogg files without decoding

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

 اعداد 00.00 و 03.51 نشون دهنده‌ی این هستن که دستور باید فایل file.mp3 رو از مکان 00.00 تا 03.51 ببره و توی یک فایل مجزا ذخیره کنه. فایل خروجی در پوشه‌ی splitted قرار خواهد گرفت و نامی به شکل زیر خواهد داشت:

برای آشنایی با دیگر امکانات و چگونگی استفاده از آنها می‌تونید از موتور‌های جستجو و عبارت‌هایی مانند mp3splt usage example استفاده کنید.

منبع:

 

 

 How to split large mp3 files using mp3splt

 

 

Crontab Generator: راه حلی برای سادگی در ایجاد Cron Jobs

تقریباً اوّلین و اصل‌ترین راه‌کار sysadmin های گنو/لینوکس و کلاً کاربران گنو/لینوکس برای اتوماتیک کردن کاراشون استفاده از Cron هست. این کار می‌تونه یه یادآوری کوچیک باشه یا یه کار پر خطر سر یه دیتابیس! امّا سختی نحو Cron Job‌ها از اصلی‌ترین و بزرگ‌ترین معایب و موانع استفاده از این برنامه هست. حالا گروه easycron که سرویس اصلیشون easycron یه task scheduler برای صدا زدن یه URL در زمان خاص یا بازه‌های زمانی هست (به اصطلاح Webcron) اومدن یه GUI تحت وب به نام  Crontab Generator ساختن که می‌شه باهاش به راحتی کاری رو که در نظر داریم روی سیستم در زمان یا بازه‌ی زمانی انجام بگیره رو به شکل گرافیکی و خیلی راحت ایجاد کرد و در نهایت Job ایجاد شده رو کپی کرد توی فایل Crontab!

online crontab-generator screenshot

online crontab-generator screenshot(click to enlarg)

برای استفاده از این سرویس می‌تونید به ایـــن آدرس برید. و یا از قسمت tools در سایت easycron.com گزینه‌ی Crontab Syntax Generator رو انتخاب کنید.

البته شاید نشه بهش گفت Crontab generator چون فقط یه Job رو ایجاد می‌کنه و نه کل فایل Crontab رو مثلاً اسم CronJob generator به نظرم بهتر بود. ولی خب از حق نگذریم کار جالبی هست و نباید مفید بودنش انکار کنیم :)

سطوح دسترسی اضافی (یک): Sticky bit

توی این مطلب می‌خوایم با یک سطح دسترسی غیر از سطوح معمول آشنا بشیم. بنابراین اگه با این مبحث (سطوح دسترسی) مشکل دارید پیشنهاد می‌کنم قبل از ادامه‌ی مطلب حداقل یکی از مطالب زیر رو بخونید تا بتونید ادامه‌ی بحث رو راحتتر پیگیری کنید.

۱. File Permissions and Attributes

۲. Understanding Linux File Permissions

فرض بگیریم می‌خوایم یه سری فایل رو کاربرا با هم به اشتراک بزارن بطوری که هر کاربر صاحب فایل‌های خودش باشه و بتونه فایلهای بقیه کاربرا رو بخونه و بنویسه ولی هیچ کاربری نتونه فایل کاربر دیگه‌ای رو حذف کنه یا تغییر نام بده. یک راه حل اینه که برای هر کدوم یه فولدر ایجاد کنیم که صاحب و گروهش خود کاربر باشه و بقیه کاربرا فقط دسترسی خوندن به فایل‌ها رو داشته باشن که خب راه حل خوبی نیست چون دسترسی نوشتن دسترسی پاک کردن یا تغییر نام رو هم به همراه خودش داره. یک راه حل دیگه و البته درستتر استفاده از sticky bitـه. اینکه چطوری اینکار انجام می‌شه رو در ادامه بحث می‌کنیم. ولی به این فک نکنید که این مثال غیر واقعیه. اگه همین الان از یه توزیع گنو/لینوکس استفاده می‌کنید باید بگم که فولدر tmp در مسیر ریشه‌ی سیستم‌عاملتون یه همچین حالتی داره و از همین راه‌حل داره استفاده می‌کنه. ;)

با ریشه‌ی تاریخی sticky bit کاری نداریم امّا اگه خیلی علاقه‌مند هستین می‌تونید به مدخل ویکی Sticky bit سر بزنید. معنی و مفهوم sticky bit دقیقا همون چیزی هست که برای این کار لازم داریم. به طور ساده: حذف و تغییر نام دادن هر فایل یا فولدر (و فایلهای داخل آن) که sticky bit برای آن فعال شده باشد فقط برای کاربر صاحب آن مجاز است، حتی اگر پرمیشن آن ۷۷۷ باشد. خب امّا چطور باید این سطح دسترسی رو به یک فایل/فولدر بدیم؟ از کجا بفمیم یک فایل/فولدر این سطح دسترسی رو داره؟

حذف و تغییر نام دادن هر فایل یا فولدر (و فایلهای داخل آن) که sticky bit برای آن فعال شده باشد فقط برای کاربر صاحب آن مجاز است، حتی اگر پرمیشن آن ۷۷۷ باشد.

برای فعال کردن این سطح دسترسی مثه بقیه‌ی آنها باید از دستور chmod استفاده کنیم. همون‌طور که می‌دونید کلاً برای سطوح دسترسی دو روش داریم. یکیش به صورت کاراکتری هست که برای هر سطح رو با یک کاراکتر خاص و استاندارد نشون می‌دیم که قبلاً باهاشون آشنا شدیم و اونی که باید الان باهاش آشنا بشیم کاراکتر t هست که برای sticky bit به کار می‌ره و با استفاده از کاراکتر‌های + (plsu) اضافه می‌شه و با استفاده از کاراکتر (minus) حذف می‌شه. به مثال زیر توجه کنید:

در این مثال برای فایل test-file که درمسیر home قرار داره sticky bit فعال می‌شه. نکته: به هنگام استفاده از این روش برای کنترل سطوح دسترسی دقت کنید چون این روش برای هر سه سطح صاحب، گروه و دیگران یکسان اعمال می‌شه! روش دیگه به صورت عددی و به اصطلاح هشت‌هشتی هست. در این روش پرمیشن نهایی مجموع پرمیشن‌های سطوح کاربر، گروه و دیگران هست که می‌شه یه عدد سه رقمی. در این روش مقدار sticky bit رو ۱۰۰۰ در نظر می‌گیریم که مجموع آن با پرمیشن فایل می‌شه پرمیشن جدید فایل/فولدر که sticky bit برای آن فعال شده است. به مثال زیر توجه کنید:

در این روش برای غیرفعال کردن sticky bit کافی است پرمیشن رو بدون عدد ۱۰۰۰ وارد کنیم. برای مثال:

حالا می‌رسیم به اینکه چطوری بفهمیم فایل/فولدری این سطح دسترسی رو داره؟ برای این کار لازم نیست دستور خاصی استفاده کنیم مشکل با همون دستور ls و آپشن l حل می‌شه. این سطح دسترسی با وجود حرف t به جای آخرین x در قسمت پرمیشن‌ها قابل فهمه. به مثال‌های زیر توجه کنید.

حرف t برای نمایش کاراکتری  sticky bit و عدد ۱۰۰۰ برای نمایش عددی آن به کار می‌رود.

من در مسیر share دو تا فایل دارم و دوتا فولدر که صاحب نصف هر یک از اینها کاربر vahit و نصف دیگه کاربر vahid هست. بر روی کل پوشه پرمیشن sticky bit فعاله. و می‌شه حرف t رو به شکل بزرگ و کوچیک در آخرین بیت پرمیشن‌ها دید. امّا دوتا نکته:

  1. تفاوت t (کوچیک) با T (بزرگ) در این هست که t (کوچیک) نشون می‌ده که دسترسی اجرایی برای دیگر کاربران این فایل/فولدر فعاله. و در مقابل T (بزرگ) نشون می‌ده که بقیه کاربران اجازه‌ی اجرای این فایل/محتویات این فولدر رو ندارن. برای مثال اگه پرمیشن یه فایل به شکل rwxr-xr-T باشه یعنی پرمیشن این فایل ۷۵۴ به همراه sticky bit هست و اگه پرمیشن همون فایل به شکل rwxr-xr-t باشه یعنی ۷۵۵ به همراه sticky bit هست. در حالت کلی نخواستن بیت دیگه‌ای اضافه کنن از این روش استفاده کردن که راحت هم باشه :)
  2. sticky bit برای فایل sub-file1 که در فولدر dir1 قرار داره هم فعاله ولی چون بعد از فعال کردن sticky bit بر روی مسیر share ایجاد شده بین سطوح دسترسیش نشون داده نمی‌شه. (چرایی و چگونگیش رو فعلاً نمی‌دونم!)

خب همین.

موفق و شاد منتظر بخش دوّم این مطلب باشید  :)

[آپدیت] شاهین مطلبی از وبلاگ خوبه آکلینوکس با عنوان «مجوزهای دسترسی فایل سیستم‌های ext در لینوکس» معرفی کرد که توصیه می‌کنم حتماً بخونیدش برای کامل‌تر شدن بحث خیلی مفیده :)

منابع:

What is a sticky Bit and how to set it in Linux?

Linux Users and Groups

useradd vs adduser

توی سیستم‌های لینوکس و یونیکس برای ایجاد کاربر جدید یا تغییر در کاربر دوتا دستور داریم. یکیش useradd هست و بعدیش adduser. تفاوشتون از هیچ تا خیلی‌یه که بستگی به دستور adduser داره. چطورش رو عرض می‌کنم. useradd یه دستور طبیعی یونیکس/لینوکس هست و به صورت دیفالت موقع نصب کامپایل و نصب می‌شه ولی adduser در بالاترین حالت یک frontend یا یک اسکریپت هست که برای راحتی کار با useradd نوشته شده حتی در برخی توزیع‌ها مانند CentOS به خود useradd لینک شده و عملاً هیچ تفاوتی نداره. به نظر من بهتره عادت کنیم از خود useradd استفاده کنیم تا توی توزیع‌های مختلف درگیر این تفاوت‌ها نشیم.
حتی از من می‌شنوید عادت کنید که از آپشن‌های gnu style استفاده کنید سر راست و قابل فهم :)

مطالعه‌ی بیشتر:  The differences between useradd and adduser commands