انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: محمدامین در 26 شهریور 1392، 09:14 بظ
-
فرمان زیر باید دسترسیش روت باشه:
shutdown -h now
راهی برای خاموش کردن بدون sudo وجود داره؟
-
توی لینوکس واسه تنفس هم باید root باشی ! مگه اینکه بری و sudo رو دستگاری کنی تا برای یه دستور خاص نیاز به پسورد نداشته باشه ! فکر کنم راهش هم وجود داشته باشه بگردی پیدا می شه ، فکر کنم دوستان قبلا دوستان توی همین انجمن گفته بودن.
-
نمیدونم از نظر امنیت مشکل داره یا نه، اما :
sudo chmod +s /sbin/shutdown
-
اگه خودت نمیتونی روشش رو حدس بزنی یعنی اینکار برات خطر داره، پس یا بیخیالش شو و یا اونقدر یادبگیر که خودت بتونی روشش رو ایجاد کنی
-
خب پس چطوریه که از منوی خود سیستم راحت حتی کاربر معمولی هم میتونه این جار رو انجام بده؟
-
نمیدونم از نظر امنیت مشکل داره یا نه، اما :
sudo chmod +s /sbin/shutdown
معلومه که مشکل داره! SUID تنها باید در شرایط خیلی خاص استفاده بشه و به راحتی میتونه مورد سواستفاده قرار بگیره.
برای خاموش کردن، میتونید بنویسید:
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown
-
راهی برای خاموش کردن بدون sudo وجود داره؟
دستور shutdown رو نمیدونم ولی روی توزیع مدرنی که از systemd (http://www.freedesktop.org/wiki/Software/systemd/) استفاده میکنه (فدورا، آرچ و ...) خیلی سادهاست:
systemctl poweroff
-
فکر کنم اگر به دستور shutdown دست رسی suid بدی درست بشه مثل دستور passwd که بهش دست رسی suid دادن . البته فایل اجرایی دستورش باید صاحبش root باشه تا کار کنه .
http://30li.ir/bash/commands/chmod
اخرش suid رو گفته
-
نمیدونم از نظر امنیت مشکل داره یا نه، اما :
sudo chmod +s /sbin/shutdown
معلومه که مشکل داره! SUID تنها باید در شرایط خیلی خاص استفاده بشه و به راحتی میتونه مورد سواستفاده قرار بگیره.
برای خاموش کردن، میتونید بنویسید:
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown
یعنی برای خاموش کردن سو استفاده بشه یا چیزا های دیگه هم میشه ؟ (برای اطلاعات خودم میپرسم)
-
یعنی برای خاموش کردن سو استفاده بشه یا چیزا های دیگه هم میشه ؟ (برای اطلاعات خودم میپرسم)
برای چیزهای دیگه. برنامهای که با ایده SUID بودن نوشته نشده رو نباید SUID کرد، چون ممکنه ملاحظات امنیتیای که برای SUID بودن لازمه رو در نظر نگرفته باشند.
-
سلام.
من از لویونتو استفاده میکنم. البته با سشن (session) اُوپنباکس (openbox).
داستان اینه که کلاً دکمه یا منویی برای این کار نیست. یا باید از طریق ترمینال این کار رو انجام بدم و یا باید اول از اُوپنباکس خارج بشم، بعد توی صفحهی لوگین لوبونتو از دکمهای برای خواموش یا ریست هست استفاده کنم.
یه جستجویی کردم به به این رسیدم:
http://www.debianuserforums.org/viewtopic.php?f=9&t=216 (http://www.debianuserforums.org/viewtopic.php?f=9&t=216)
ولی کار نمیکنه...
از فرمان
systemctl poweroff
هم استفاده کردم که خوب ظاهراً چنین چیزی در اُپنباکس نداریم.
این فرمان رو ولی امتحان نکردم.
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown
راستش خیلی طولانی بود و من ازش سر در نیاوردم. و همچنین توش خیلی «گنوم» داشت. گفتم اول بپرسم برای اُپنباکس هم کار میکنه یا نه؟
--------
خوب این هم کار نمیکنه.
-
گام اول یورش به sudo
sudo visudo
گام دوم دستکاری sudo برای اینکه برای دستور shutdown نیازی به پسورد نباشد (مشکلات امنیتی به عهده خودتان می باشد)
برای این کار به انتهای متن
username ALL=(ALL) NOPASSWD: /sbin/shutdown
را اضافه نموده و آن را ذخیره می کنیم.
مصدوم آماده است حال برای خاموش کردن کافی است دستور
sudo /sbin/shutdown -h now
را بزنید
البته دوستان توجه کنند اگر به کل بی خیال امنیت کامپیوتر شده اید می توانید به جای آن خط این خط را اضافه کنید
username ALL=(ALL) NOPASSWD: ALL
توجه کنید به جای username نام کاربری خود را وارد کنید.
-
برای این کار به انتهای متن
username ALL=(ALL) NOPASSWD: /sbin/shutdown
را اضافه نموده و آن را ذخیره می کنیم.
به آخر فایل یا زیر بخش User privilege specification ؟
به جای ALL چی بنویسم که فقط خودم بدون پسورد این کار رو انجام بدم؟
یه نکتهی دیگه اینکه من از دستور زیر توی ترمینال جواب میگیرم:
babak@babak-Studio-1558:~$ echo "mypasswd"|sudo -S shutdown -k now
[sudo] password for babak:
Broadcast message from root@babak-Studio-1558
(unknown) at 12:08 ...
The system is going down for maintenance NOW!
ولی وقتی اون رو در فایل menu.xml قرار میدم کار نمیکنه:
<item label="Shutdown"><action name="Execute"><execute>echo "mypasswd"|sudo -S /sbin/shutdown -h now</execute></action></item>
-
به آخر همون متن که می یاد بعد هم ذخیره اش کن اگر دیدی موقع خروج خطا می ده گزینه خروج بدون تغییر رو بزن
به جای ALL نمی خواد هیچی بزاری به نظرم همون دستور خودت از لحاظ امنیت خیلی بهتره پس بهتره sudo رو دستکاری نکنی پسر خوب ;)
من اومدم یه کاری کردم gedit یا pluma رو باز کردم توش اینو ریختم
echo "password"|sudo -S /sbin/shutdown -h now
به جای password هم که معلومه چی باید بگذاریم بعد ذخیره اش کردم به اسم shutdown بعد هم با راست کلیک و رفتن به properties قابلیت اجرا بهش دادم بعد هم رو کلیک کردم و run رو زدم و کامپیوتر خاموش شد.
-
من این رو نوشتم توی یک فایل به اسم restart.sh و بهش امکان اجرا هم دادم:
#!/bin/bash
echo "mypasswd"|sudo -S /sbin/shutdown -r now
برای شاتدان هم همین کار رو کردم و آدرس رو توی menu.xml وارد کردم و حل شد.
فقط یک سوال اینکه من پسورد رو توی این فایلها نوشتم. همینکه فقط به صاحب فایل اجازهی دسترسی دادم کافیه؟ امنیت ایجاد میکنه؟
-
خاموش کردن از طریق dbus
(http://andrusiv.com/blog/2011/12/12/shutdown-dbus.html)
-
ببین همین کاری که الان کردی خودش از لحاظ امنیت زیاد جالب نیست اگر یه نفر بتونه فقط به سطح دسترسی یه کاربر معمولی برسه دیگه کار تمومه و با خوندن اون فایل رمز شما دو دستی در اختیارش قرار می گیره اما گاهی راحتی کار به کاهش سطح امنیت می چربه مثلا شما می دونستی همین رابط گرافیکی امنیت رو می یاره پایین ! واسه همین هم تو سرور ها استفاده نمی شه.(حالا نگید به خاطر سنگین نشدن هم هست که خودم می دونم)
بی زحمت یه حل شد اضافه کنید.
-
خوب صاحب فایل منم. غیر از من کس دیگههم میتونه باز کنه؟ همهی دسترسیها رو روی صاحب فایل گذاشتم.
بی زحمت یه حل شد اضافه کنید.
راستش من موضوع رو ایجاد نکردم.
خاموش کردن از طریق dbus
(http://andrusiv.com/blog/2011/12/12/shutdown-dbus.html)
این هم چیز خیلی خوبیه. فقط یه سوال: همهی کاربرا میتونن این رو اجرا کنن؟
-
خوب صاحب فایل منم. غیر از من کس دیگههم میتونه باز کنه؟ همهی دسترسیها رو روی صاحب فایل گذاشتم.
تمام برنامه هایی که شما باز می کنی سطح دسترسی به این فایل رو دارن ! کافیه یکی بتونه این برنامه ها رو هک کنه یا یه باگ کوچولو داشته باشه ! اصلا معقول نیست که پسوردت رو بریزی توی یه فایل که همه برنامه های که سطح دسترسی ریشه ندارن به اون فایل دسترسی داشته باشن این خیلی غیر امنه !
-
برای این همچین چیزی پرسیدم که بدونم آخه یه کاربر معمولی (و نه ادمین) چطور میتونه سیستم رو با چند تا کلیک ساده خاموش کنه؟ یعنی در واقع اون فرمانی که بدون پسورد کامپیوتر رو خاموش میکنه چیه؟
-
به طور واضح می گم کاربر معمولی حق خاموش کردن یا ری ست رو نداره مگر با اجازه کاربر ریشه ! پس باید تنظیمات امنیتی رو عوض کنیم که این کار ممکن بشه که توی صفحه قبل توضیح داده شد.
رابط های کاربری این قابلیت رو ایجاد می کنن با یک سری اجازه های قبلی از سطح کاربری ریشه برای کارهای خاص مثل restart و خاموش کردن .