انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: saman.TF در 09 اردیبهشت 1393، 02:38 بظ
-
سلام
یه پوشه دارم بنام new حالا میخوام کاری کنم هرچی فایل که تو این پوشه کپی میشه فقط بشه اونو دید وبشه بازش کرد ونشه روی اون فایلها تغیراتی
اعمال کرد مثلا یه فایل فشرده را بشه باز کرد ولی نشه ازش چیزی حذف کرد یا چیزی جایگزین کرد یا چیزی بهش (به فایل زیپ) اضافه کرد.
;)
-
پرمیشن write رو از اون فایلا بگیرین :
http://30li.org/bash/commands/chmod
-
از دستور زیر استفاده کردم ولی جواب نداد چرا
xubuntu@xubuntu:/media/xubuntu/20gig$ chmod ug-w new
بدون هیچ اخطاری میره خط بعدی به این صورت:
xubuntu@xubuntu:/media/xubuntu/20gig$
حتی با sudoهم امتحان نکرم نشد
-
شما دارین مجوز فولدر رو عوض میکنید که فقط برای خود فولدر است ،برای این که کاربرها نتونن فایل های داخل اون رو تغییر بدن (حتی کاربر خودتون) از کد زیر استفاده کنید :
chmod -w new/*
و اگه میخواید خودتون اجازه دست رسی داشته باشید :
chmod 644 new/*
-
شما دارین مجوز فولدر رو عوض میکنید که فقط برای خود فولدر است ،برای این که کاربرها نتونن فایل های داخل اون رو تغییر بدن (حتی کاربر خودتون) از کد زیر استفاده کنید :
chmod -w new/*
و اگه میخواید خودتون اجازه دست رسی داشته باشید :
chmod 644 new/*
بازم فرقی نکرد خیلی راحت میشه هر کاری کرد اینم بگم که از لایو استفاده میکنم
-
دستورتون یه -R کم داره :)
شما باید پرمیشن r و x رو بدید و w رو حذف کنید،یعنی مثلا می شه یه همچین چیزی:
chmod -R 500 new
-
چرا جواب نمیده ](*,)
-
??? بعد از این که تغییرات رو انجام میدید خروجی دستور ls -l رو بزارین.
-
drwx------ 1 xubuntu xubuntu 144 Apr 29 18:15 new
-
اینی که گذاشتین برای خود فایل هست، شما باید مجوز های فایل های داخلش رو تغییر بدید(کدی که قبل گذاشتم با استفاده از *) نه خود فولدر رو، این کار رو تست کردید؟
-
یعنی با cdبرم داخل پوشه new و این کد را اجرا کنم? */chmod -w new
این خطارو گرفت ](*,)
chmod: cannot access ‘new/*’: No such file or directory
-
- علامت * به معنی "همه" است ،یعنی شما یا برو داخل پوشه مورد نظرت با دستور cd و این دستور رو بزن :
chmod -w *
و یا در شاخه ای که خود فایل هست همون قبلی رو بزن :
chmod -w now/*
- در اولی بهش میگیم هر چیزی که توی همین ادرسی که هستم هست رو مجوز تغییرش رو از بین ببر.
- و در دومی داریم بهش میگیم برو داخل پوشه ی new که در همین ادرسی که الان هستیم وجود داره و مجوز همه ی فایل های داخل اون رو تغییر بده. ;)
-
درست شد مشکل از فرمت پارتیشن بود. ;)
ولی اون چیزی که اول پرسیده بودم اینکه یه پوشه داشته باشیم که دسترسی اون پوشه طوری باشه که هر فایلی که درونش کپی
کنیم (به فایلهایی که درونش از اول بوده کاری ندارم )نشه تغییرات روش اعمال کرد فکر کنم عملی نیست درسته ?
همچین چیزی فکر کنم نمیشه اصلا فایلی کپی نمیشه که حالا بخوایم به بقیش فکر کنیم درسته دیگه ؟ ;)
-
- لینوکس نشد نداره ;)
- حالت های زیادی ممکنه پیش بیاد که میشه با یک اسکریپت درستش کرد.
-
- لینوکس نشد نداره ;)
- حالت های زیادی ممکنه پیش بیاد که میشه با یک اسکریپت درستش کرد.
خوب چجوری میشه ؟ [-o< ;)
-
- یک اسکریپت کوچیک نوشتم که کارش اینه که در زمان هایی که در حال اجرا هست (اسکریپت) بررسی میکنه اگر فایل یا فولدر جدیدی در اون پوشه اضافه بشه اون رو chmod -w میکنه ،شیوه ی استفاده ازش اینجوریه که متنش رو در فایلی در همون پوشه مورد نظر میریزی و با bash اجراش میکنی یا خودت قابل اجراش میکنی یا توی cron یا توی bashrc میزاری
#!/bin/bash
while [[ true ]]
do
ls > temp1
sleep 1m
ls > temp2
diff temp1 temp2 | grep ">" | cut -c 3- > temp3
if [[ -s temp3 ]]
then
cat temp3 | xargs chmod -w
chmod +w temp*
fi
done
- مشکلی که هست اینه که باز هم میشه فایل های داخل پوشه رو که اجازه write نداریم رو پاک کنیم یا تغییر نام بدیم ،از دوستان ممنون میشم اگه اطلاعاتی دارن در این موضوع توضیح بدن چرا اینجوریه.
-
- مشکل یکی قبلی حل شد و همون جور که گفتی میتونه فایل های اضافه شده رو بخونه و کپی کنه ولی نمیتونه جاشون رو تغییر بده و یا پاکشون کنه ،و نکته دیگه هم این که باید این اسکریپت با کاربر روت اجرا بشه یا با دستور sudo قبل از اجراش.
#!/bin/bash
# this script should run with root user
if [[ `whoami` != "root" ]]
then
echo "run with root"
exit
fi
while [[ true ]]
do
ls > temp1
sleep 3s
ls > temp2
diff temp1 temp2 | grep ">" | cut -c 3- > temp3
if [[ -s temp3 ]]
then
cat temp3 | xargs chmod -w -R
cat temp3 | xargs chattr +i -R
chattr -i temp*
chmod +w temp*
fi
done