انجمنهای فارسی اوبونتو
		تازه کار => انجمن تازهکاران => نویسنده: 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 اجرا بشه!