کار با ftp مانند دایرکتوری

روش‌های مختلفی برای کار با ftp وجود داره. اما هیچ چیز مثل این نمی‌شه که آدم ftp رو mount کنه و به راحتی هر دایرکتوری دیگه‌ای باهاش کار کنه.
curlftpfs یه ابزار عالی برای همین کاره. کار باهاش هم خیلی سادست:

[bash]
sudo curlftpfs -o allow_other ftp://wherever /some/mount/point
[/bash]

اون allow_other به دوستمون می‌گه که همه کاربرا به فولدر mount شده دسترسی دارن.

اگر کاربرد این دستور براتون زیاده می‌تونید همون طور که تو این پست توضیح دادم، یوزر و پسوردتون رو تو یه فایل ‪.netrc‬ ذخیره کنید. به همین راحتی.

لاگین اتوماتیک به ماشین‌های راه دور

وقتی به طور مرتب با ماشین‌های راه دور کار می‌کنیم، وارد کردن اسم کاربری و پسورد تبدیل به یه پروسه حوصله سربر می‌شه. واسه همین بهتره راه حلی پیدا کنیم که مشکل لاگین رو حل کنه.
لاگین اتوماتیک به ماشین‌های راه دور دو تا روش اصلی داره:
روش اول: استفاده از فایل ‪.netrc‬
خیلی از برنامه‌هایی که با ماشین‌های راه دور کار می‌کنند می‌تونند از فایل ‪.netrc‬‬ استفاده کنند. در واقع می‌شه یوزر و پسورد برای هر ماشین رو تو این فایل ذخیره کرد تا برنامه‌های دیگه ازش استفده کنند. فرمت این فایل به این شکله:

[bash]
machine github.com
login technoweenie
password SECRET

machine api.github.com
login technoweenie
password SECRET
[/bash]

فکر کنم به قدر کافی واضحه.

نکته مهم این که این روش برای هر پروتکلی که با OpenSSH کار می‌کنه (مثل ssh، scp و sftp) کار نمی‌کنه.
روش دوم: استفاده از کلیدهای ssh
برای استثناهای حالت قبل می‌شه به راحتی از کلیدهای ssh استفاده کرد.
مراحل کار:
اول جفت کلیدهای نامتقارنمون رو می‌سازیم: (یک بار برای همیشه)
[bash]
ssh-keygen
[/bash]
چند تا سوال تو این مرحله پرسیده می‌شه که همش رو مقادیر پیش‌فرض رو قبول می‌کنیم.
تو مرحله بعد کلید عمومی به کامپوتر مقصد کپی می‌شه:
[bash]
ssh-copy-id user@example.com
[/bash]

به همین راحتی.

یه نکته درباره git: وقتی داریم از git استفاده می‌کنیم باید دقت کنیم که داریم از کدوم پروتکل استفاده می‌کنیم. برای پروتکل https راه حل اول و برای پروتکل ssh راه دوم باید استفاده بشه.

باز هم خوب است

چند وقتیه ننوشتم. قضیه اینه که قبل از عید یه عمل داشتم و بعدش هم دوران نقاهت بود که خیلی سر کامپیوتر نمیومدم. وقتی هم که پشت آدم باد بخوره، دیگه تنبلیش میاد دوباره شروع کنه. یکی از چیزایی هم که تنبلی آدم رو تشدید می‌کنه اینه که می‌بینه این همه وبلاگ خوب هست که دارن در باره لینوکس می‌نویسن. خیلی بیشتر از سایت‌های فارسی، سایت‌های انگلیسی هست. پس چرا آدم وقت بگذاره و بنویسه؟

این‌ها توجیه‌هایی بود که من رو قانع کرد:
۱- اولین دلیل نوشتن، خوبی نوشتن برای خود آدمه. شاید بیشترین مصرف کننده این وبلاگ خودم باشم. خیلی وقتا که داشتم یه کار رو می‌کردم، به یه مشکلی بر خوردم که قبلا تو این وبلاگ دربارش نوشته بودم. این رو که یادم بود بر گشتم و راه حل رو به راحتی از تو پستای سابقم پیدا کردم.
۲- دلیل دیگه اینه که فرض کنید در باره موضوع الف هزار تا پست عالی تو اینترنت وجود داشته باشه. اما باز هم ممکنه کسی اساسا به فکر این موضوع نیفتاده باشه. خوب اگه کاربرایی که به نحوی با الف درگیر شدن، یه پست برای معرفیش بنویسن و چهار تا لینک خوب هم بذارن، کمک خیلی خوبیه.

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

اشتراک مخزن git

مساله اینه که من می‌خوام مخازن git که روی راسبری‌پی خونه دارم رو با بقیه اعضای تیم به اشتراک بزارم. قبلا کارهای مربوط به dynamic dns و port forwarding رو انجام دادم (+ و +) و می‌شه از طریق ssh با یه آدرس ثابت به خونه وصل شد. بقیه کار سادست. الان مراحل کار رو می‌گم و بعد یه مثال می‌زنم.

۱- برای هر کدوم از اعضای تیم یه یوزر می‌سازم.
۲- برای هر پروژه یه گروه می‌سازم.
۳- اعضای هر پروژه رو به گروه اون پروژه اضافه می‌کنم.
۴- یه فولدر تو روت فایل سیستم می‌سازم به اسم git.
۵- برای هر پروژه تو فولدر git یه فولدر می‌سازم و مالکش رو به گروه اون پروژه تغییر می‌دم.
توجه: دستورات قدم‌های ۱ تا ۵ رو می‌تونید تو این لینک پیدا کنید.
۶- قدم خیلی مهم: تنظیم می‌کنم که از این به بعد هر فایل جدیدی که تو فولدر پروژه ساخته می‌شه مال گروه همون پروژست. (منبع)
۷- یه ریپو خالی تو اون دایرکتوری ایجاد می‌کنم. (+)
۸- حالا کاربر می‌تونه از راه دور به مخزن وصل بشه و پوش کنه.

مثال کاربر user1 برای پروژه myproject:
[bash]
useradd -m user1
groupadd myproject
useradd -Gmyproject user1
mkdir -p /git/myproject.git
chgrp -R myproject /git/myproject.git
chmod -R g+rws /git/myproject.git
cd /git/myproject.git
git init –bare
[/bash]
و در سمت کاربر:
[bash]
git remote add origin ssh://example.com:/git/myproject.git
git push -u origin master
[/bash]

به روز رسانی:
دستورات رو اصلاح کردم و به علاوه چک می‌کنم که پروژه‌ای که ساخته شده حتما برای کار با گروه‌ها تنظیم شده باشه. (+)
[bash]
useradd -m user1
groupadd myproject
useradd -Gmyproject user1
mkdir -p /git/myproject.git
cd /git/myproject.git
git init –bare
git config core.sharedRepository group
chgrp -R myproject .
chmod -R g+rwX .
find . -type d -exec chmod g+s ‘{}’ +
[/bash]

به روز رسانی ۲:
برای اضافه کردن ریپوی اشتراکی یه اسکریپت کوچیک دارم که رو گیست به اشتراک گذاشته‌ام.

رفع مشکل این روزهای tor

اگه مثل من از tor استفاده می‌کنین لابد این روزها متوجه شدین که tor کار نمی‌کنه. خوب خوشبختانه مشکل این روزهای tor راه حل ساده‌ای داره.

برای رفع مشکل اول یه ایمیل به آدرس bridges@torproject.org می‌زنیم. متن ایمیل باید عبارت get bridges باشه و حتما از یه ایمیل یاهو یا جیمیل فرستاده بشه. حدس می‌زنید چرا؟ (؛

در جواب این ایمیل، یه ایمیل می‌گیریم که توش سه تا آدرس به این شکل فرستاده شده:
[bash]
Here are your bridges:

۱۱.۱۱.۱۱.۱۱:۱۱۱ ۹bbdd3a5ced8545ef46a0fe0a9fdf4c19871c6f8
۲۲.۲۲.۲۲.۲۲:۲۲۲ ۱۹d5e42afe1df7a94e2005470cc1996813890d70
۳۳.۳۳.۳۳.۳۳:۳۳۳ ۲۶۰۷c0e5d19e777e9ed0a83a5bc0caaa50df6ff5
[/bash]
حالا اگه از vidalia استفاده می‌کنیم،‌ از صفحه Settings، برگه Network، گزینه My ISP blocks connections to the Tor network رو انتخاب می‌کنیم و بعد این سه تا آدرس رو تو لیست پایین اضافه می‌کنیم.

اگر هم از لینوکس استفاده می‌کنیم،‌ فایل ‪/etc/tor/torrc‬ رو ویرایش می‌کنیم و این چند تا خط رو بهش اضافه می‌کنیم:
[bash]
UseBridges 1
UpdateBridgesFromAuthority 1
‌Bridge 11.11.11.11:111 9bbdd3a5ced8545ef46a0fe0a9fdf4c19871c6f8
Bridge 22.22.22.22:222 19d5e42afe1df7a94e2005470cc1996813890d70
Bridge 33.33.33.33:333 2607c0e5d19e777e9ed0a83a5bc0caaa50df6ff5
[/bash]
و در نهایت tor رو مجدد راه‌اندازی می‌کنیم:
[bash]
sudo service tor restart
[/bash]
شاد و آزاد باشید و آزادانه اینترنت‌گردی کنید. 🙂

پی‌نوشت مهم:
هم توی ویندوز هم توی لینوکس این مشکل وجود داره که اگه دفعه اولی که bridge ها رو تنظیم می‌کنیم،‌ خط
[bash]
UpdateBridgesFromAuthority 1
[/bash]
فعال باشه، تور فعال نمی‌شه. برای حل مشکل کافیه دفعه اولی که تور رو با بریج‌های جدید اجرا می‌کنیم این خط رو کامنت کنیم (اولش یه # اضافه کنیم) و بعد، از دفعه‌های بعد، اون خط رو از کامنت در بیاریم. برای ویندوز من این آپشن رو پیدا نکردم که کجاست و بنابراین باید مستقیم فایل torrc رو ویرایش کنیم. خوشبختانه میشه با استفاده از دکمه Edit current torrc file از صفحه Settings، برگه Advanced این کار رو انجام داد.