انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: majidkamali1370 در 08 بهمن 1391، 09:17 بظ
-
سلام.
من یه مشکلی واسم پیش اومده. :(
اشتباهی دستور زیر رو زدم و تقریبا همه فایلهای توی هوم سطح دسترسیشون عوض شده. حالا فایل متنی رو هم میخوام باز کنم میگه میخوای اجراش کنی؟ :'(
~$ chmod -R 777 .
۱. میشه یه جوری اون رو به حالت قبل برگردوند؟
۲. اگه نمیشه، میشه یه اسکریپت برام بنویسید که با استفاده از ls -l بفهمه که فایلی که توی این خط هست فایله یا فولدر و بعد اگه فولدر بود اجازه دیفالت فولدر (rwxrwxr-x) و اگه فایل بود اجازه دیفالت فایل (--rw-rw-r) رو بهش اختصاص بده؟ (فکر کنم سه چهار تا | احتمالا داره)
-
این دستور برایه فایلایه غیر دایرکتوری. هر نوع فایلی رو به غیر از دایرکتوری پیدا میکنه.
وارد home دایرکتوریتون بشین بعد اجراش کنین. جایه 777 هم پرمیشنی که گفتین رو بزارین
find . -type f -maxdepth 1 -print -exec /bin/chmod 777 {} \;
برایه نوع هایه دیگه فایل هم این و نگاه :
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option or the -follow
option is in effect, unless the symbolic link is broken. If you
want to search for symbolic links when -L is in effect, use
-xtype.
s socket
D door (Solaris)
-
دستتون درد نکنه.
الان تستش میکنم.
-
این دستور فقط تا یک مرحله وارد هر فولدر میشه؟
-
دسترسی 644 و 755 دسترسی بدی نیست . به پوشه ها 755 بدهید و به پرونده ها 644
درون پوشه ای که گندزده اید بروید سپس :find ./* -type d -exec chmod 755 {} \;
find ./* -type f -exec chmod 644 {} \;
-
از این اسکریپت هم برای راحتی کار میتونید استفاده کنید.
#!/bin/bash
if [ $@ ] ; then
location=$@
else
location=`pwd`
fi
echo "This script changes folder permissions to 755 and file permissions to 644"
echo "Are you sure you want to change permissions of \"\033[44m$location\033[0m\""
echo "Type \"\033[1myes\033[0m\" to continue or \"no\" to abort."
read answer
if [ "$answer" = "yes" ] ; then
echo "Script is running. Please wait ..."
find $location -type d -exec chmod 755 '{}' \;
find $location -type f -exec chmod 644 '{}' \;
elif [ "$answer" = "no" ] ; then
echo "Script was terminated"
exit 0
else
echo "Sorry, \"$answer\" not recogonized. Enter yes or no"
exit 0
fi
echo "The script is now completed!"
exit 0
-
هواسم نبود میخاین وارد دایرکتوری ها هم بشه. از دستور جناب doomhammer65ir استفاده کنین
-
با تشکر از همه دوستان.
حل شد