انجمنهای فارسی اوبونتو
تازه کار => انجمن تازهکاران => نویسنده: setaiesh در 22 آذر 1392، 09:10 بظ
-
سلام؛
اسکریپتی نوشتم که داخلش به کارت شبکه دسترسی پیدا میکنه و یک سری اطلاعات رو در اون تغییر میده.
اما به errorی برخوردم که نمیدونم چه جوری باید درستش کنم!
line : /etc/network/interfaces: Permission denied
من به این اسکریپت با chmod اجازه تغییرات رو میدم. ولی در خود اسکریپت، به خطی که به فایل کارت شبکه میخواد دسترسی پیدا کنه و در اون چیزی بنویسه ایراد میگیره و اجازه نمیده!
چه جوری باید این خطا رو برطرف کنم؟
-
محتویات اسکریپت را کامل بزار .
-
محتویات اسکریپت را کامل بزار .
#!/bin/bash
#chmod u+x /etc/network/interfaces;
##add
str1="add";
str2="dhcp";
if [ "$1" == "$str1" ]
then
{
netcartname1=$(grep $2 /etc/network/interfaces );
if [[ "$3" == "$str2" && $netcartname1 ]]
then
echo "There's a netcart with the same name";
elif [[ "$3" == "$str2" && !$netcartname1 ]]
then
{
# sudo dhclient $2;
echo "auto $2">>/etc/network/interfaces;
echo "iface $2 inet dhcp">>/etc/network/interfaces;
# sudo /etc/init.d/networking restart;
}
fi;
exit $?;
البته به طور کامل اسکریپت رو نذاشتم تا زیاد قاطی پاتی نشه و فقط جایی که این ارور رو میده گذاشتم.
اگر لازمه به طور کامل اسکریپت رو بگذارم؟
-
کاربری که باهاش اسکریپت رو اجرا میکنید اجازه تغییر در فایل /etc/network/interfaces رو نداره و در نتیجه خطا میگیرید. اگر اسکریپت کاملا مطمئنه از این فایل یک بکاپ بگیرید و با کاربر ریشه اسکریپت رو اجرا کنید.
ضمنا برای خواناتر شدن کد بهتر بود اون رو توی تگ کد قرار میدادین (علامت # تو ادیتور انجمن).
-
کاربری که باهاش اسکریپت رو اجرا میکنید اجازه تغییر در فایل /etc/network/interfaces رو نداره و در نتیجه خطا میگیرید. اگر اسکریپت کاملا مطمئنه از این فایل یک بکاپ بگیرید و با کاربر ریشه اسکریپت رو اجرا کنید.
ضمنا برای خواناتر شدن کد بهتر بود اون رو توی تگ کد قرار میدادین (علامت # تو ادیتور انجمن).
ممنونم از پاسختون
اما نمی دونم چه جوری میشه با کاربر ریشه وارد لینوکس شد!!!
(البته توی ماشین مجازی هم دارم کار میکنم...)
و البته با فرمان chmod u+x بهش اجازه دسترسی هم میدم... ولی نمی دونم چرا بازم این خطا رو داره؟!!
-
اینطوری عمل کن .
sudo -i
ازت پسورد میخواد ، بعد از دادن پسورد علامت $ به # تغییر میکنه . که نشون دهنده دسترسی مستقیم روت هست
-
دستور chmod u+x اجازه اجرا شدن رو به اسکریپت میده، اجازه دسترسی نمیده.
-
دستور chmod u+x اجازه اجرا شدن رو به اسکریپت میده، اجازه دسترسی نمیده.
خوب باید آرگومانهای chmod چی باشه که اجازه دسترسی و تغییر رو بده؟
-
http://30li.org/bash/commands/chmod
-
درست نیست که فایل interfaces رو پرمیشنش رو تغییر بدین تا اسکریپت دست رسی داشته باشه .
یک راهش اینه که صاحب اسکریپت رو root کنین با دستور chown بعد با دستور chmod که تو پست قبلی اموزشش رو گذاشتن بهش suid بدین . این جوری با هر یوزری اون اسکریپت رو اجرا کنین با دست رسی روت اجرا میشه .
http://30li.org/bash/commands/chown
-
SID روش خطرناکی هستش و به راحتی میتونه مورد سواستفاده قرار بگیره.
راه درست اینه که اون اسکریپت با کاربر root اجرا بشه!