انجمن‌های فارسی اوبونتو

تازه کار => انجمن تازه‌کاران => نویسنده: setaiesh در 22 آذر 1392، 09:10 ب‌ظ

عنوان: Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: setaiesh در 22 آذر 1392، 09:10 ب‌ظ
سلام؛
اسکریپتی نوشتم که داخلش به کارت شبکه دسترسی پیدا میکنه و یک سری اطلاعات رو در اون تغییر میده.
اما به errorی برخوردم که نمیدونم چه جوری باید درستش کنم!

line : /etc/network/interfaces: Permission denied

من به این اسکریپت با chmod اجازه تغییرات رو میدم. ولی در خود اسکریپت، به خطی که به فایل کارت شبکه میخواد دسترسی پیدا کنه و در اون چیزی بنویسه ایراد میگیره و اجازه نمیده!
چه جوری باید این خطا رو برطرف کنم؟
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: بهروز رمضانی در 22 آذر 1392، 09:18 ب‌ظ
محتویات اسکریپت را کامل بزار .
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: setaiesh در 22 آذر 1392، 09:34 ب‌ظ
محتویات اسکریپت را کامل بزار .


#!/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 $?;


البته به طور کامل اسکریپت رو نذاشتم تا زیاد قاطی پاتی نشه و فقط جایی که این ارور رو میده گذاشتم.
اگر لازمه به طور کامل اسکریپت رو بگذارم؟
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: Ma3X در 23 آذر 1392، 01:31 ق‌ظ
کاربری که باهاش اسکریپت رو اجرا می‌کنید اجازه تغییر در فایل /etc/network/interfaces رو نداره و در نتیجه خطا می‌گیرید. اگر اسکریپت کاملا مطمئنه از این فایل یک بکاپ بگیرید و با کاربر ریشه اسکریپت رو اجرا کنید.
ضمنا برای خواناتر شدن کد بهتر بود اون رو توی تگ کد قرار می‌دادین (علامت # تو ادیتور انجمن).
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: setaiesh در 23 آذر 1392، 09:06 ق‌ظ
کاربری که باهاش اسکریپت رو اجرا می‌کنید اجازه تغییر در فایل /etc/network/interfaces رو نداره و در نتیجه خطا می‌گیرید. اگر اسکریپت کاملا مطمئنه از این فایل یک بکاپ بگیرید و با کاربر ریشه اسکریپت رو اجرا کنید.
ضمنا برای خواناتر شدن کد بهتر بود اون رو توی تگ کد قرار می‌دادین (علامت # تو ادیتور انجمن).


ممنونم از پاسختون
اما نمی دونم چه جوری میشه با کاربر ریشه وارد لینوکس شد!!!
(البته توی ماشین مجازی هم دارم کار میکنم...)
و البته با فرمان chmod u+x  بهش اجازه دسترسی هم میدم... ولی نمی دونم چرا بازم این خطا رو داره؟!!
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: بهروز رمضانی در 23 آذر 1392، 09:27 ق‌ظ
اینطوری عمل کن .
sudo -iازت پسورد می‌خواد ، بعد از دادن پسورد علامت $ به # تغییر میکنه . که نشون دهنده دسترسی مستقیم روت هست
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: nixoeen در 23 آذر 1392، 09:52 ق‌ظ
دستور chmod u+x اجازه اجرا شدن رو به اسکریپت می‌ده، اجازه دسترسی نمی‌ده.
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: setaiesh در 24 آذر 1392، 09:18 ق‌ظ
دستور chmod u+x اجازه اجرا شدن رو به اسکریپت می‌ده، اجازه دسترسی نمی‌ده.

خوب باید آرگومانهای chmod چی باشه که اجازه دسترسی و تغییر رو بده؟
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: Ma3X در 24 آذر 1392، 12:08 ب‌ظ
http://30li.org/bash/commands/chmod
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: ali.abry در 24 آذر 1392، 05:57 ب‌ظ
درست نیست که فایل interfaces رو پرمیشنش رو تغییر بدین تا اسکریپت دست رسی داشته باشه .
یک راهش اینه که صاحب اسکریپت رو root کنین با دستور chown بعد با دستور chmod که تو پست قبلی اموزشش رو گذاشتن بهش suid بدین . این جوری با هر یوزری اون اسکریپت رو اجرا کنین با دست رسی روت اجرا میشه .
http://30li.org/bash/commands/chown
عنوان: پاسخ : Permission denied مربوط به فرمان داخل اسکریپت
ارسال شده توسط: nixoeen در 24 آذر 1392، 07:00 ب‌ظ
SID روش خطرناکی هستش و به راحتی می‌تونه مورد سواستفاده قرار بگیره.

راه درست اینه که اون اسکریپت با کاربر root اجرا بشه!