لینوکس دارای دستورات متعددی برای اهداف مختلف است؛ برای استفاده بهینه و مدیریت لینوکس، باید با دستورات گوناگون آشنا باشید. ما تلاش میکنیم شما را با کارکردهای دستورات مختلف لینوکس آشنا کنیم تا پس از خرید یک سرور مجازی لینوکس، بتوانید از ویژگیهای لینوکس بهرهمند شوید و به اهداف خود دست یابید.
دستور su برای تغییر به حساب کاربری دیگر در لینوکس استفاده میشود. دستور su در میان کاربران لینوکس به عنوان دستور تغییر شناخته میشود، زیرا در طول یک جلسه ورود عادی، شناسه کاربری را تغییر میدهد. دستور su، مانند سایر دستورات لینوکس، گزینههای مختلفی برای اهداف گوناگون دارد. گزینه “-“، که به معنای “شل ورود” است، یکی از گزینههای رایج برای تغییر رفتار دستور su است. استفاده از آرگومان “-” باعث میشود دستور su شل ورود را برای کاربر مشخص شده اجرا کند و متغیرهای محیطی و دایرکتوری کاری را برای حساب کاربری جاری تغییر دهد.
تفاوت بین دستورات su و su- به محیط و متغیرهای محیطی بر میگردد. از آنجایی که تفاوت بین su و su – برای کاربران واضح نیست، ما در این مقاله به طور خلاصه su در برابر su- را بررسی میکنیم. برای درک بهتر تفاوت بین su و su -، تا انتهای این مقاله را بخوانید.
تعریف متغیرهای محیطی
متغیرهای محیطی در لینوکس، مقادیر پویایی هستند که برای تعریف ویژگیهای محیطی که فرآیندهای shell را اجرا میکند، استفاده میشوند. همچنین، متغیرهای محیطی بر پیکربندی و سفارشیسازی رفتار سیستم عامل و برنامههای مختلف تأثیر میگذارند. متغیرهای محیطی لینوکس برای مشخص کردن مسیرهای پیشفرض، تنظیم پارامترهای سیستم، تنظیم اولویتها و موارد دیگر استفاده میشوند.
متغیرهای محیطی لینوکس شامل اطلاعاتی در مورد تنظیمات کاربر، تنظیمات سیستم و دادههای مربوط به سیستم عامل هستند. از آنجایی که متغیرها بخشی از محیط shell هستند، کاربران میتوانند در سراسر سیستم از طریق هر برنامه یا فرآیند به آنها دسترسی داشته باشند و متغیرهای محیطی را تغییر دهند. سیستم لینوکس شامل متغیرهای زیادی است که در این بخش از مقاله، ما در مورد متغیرهای محیطی مرتبط با دستور su صحبت خواهیم کرد.
شما میتوانید با اجرای دستور export، به لیستی از متغیرهای سیستم خود دسترسی پیدا کنید.
برخی از متغیرهای محیطی لینوکس مانند PATH (برای مشخص کردن مسیرهای جستجو برای فایلهای اجرایی)، USER (نام کاربری جاری یا شناسه کاربری)، HOME (ارائه دهنده دایرکتوری خانگی کاربر)، SHELL (ارائه دهنده شل اجرا شده به سیستم)، LOGNAME (شناسه کاربری که با آن وارد شدهاید) از قبل تعریف شدهاند و برخی از آنها توسط کاربران برای ذخیره دادههای سفارشی ایجاد میشوند. شما میتوانید از فایل پیکربندی ~/.bashrc یا ~/.bash_profile برای تنظیم متغیرهای محیطی استفاده کنید.
برای دسترسی به متغیرهای محیطی، از این سینتکس استفاده کنید:
$VARIABLE_NAME یا ${VARIABLE_NAME}
به عنوان مثال، برای دسترسی به مقدار PATH، از دستور زیر استفاده کنید:
$PATH
یا
echo $PATH
با استفاده از مقادیر متغیر PATH، سیستم میتواند مسیر و محل دستورات یا برنامههای اجرا شده را پیدا کند.
توجه: فایل /etc/profile شامل متغیرهای پیشفرض PATH است.
برای دسترسی به مقادیر متغیرهای محیطی که بر دستور su تأثیر میگذارند، مانند HOME، SHELL، USER، LOGNAME و PATH، میتوانید از سینتکسی که برای دسترسی به مقادیر متغیر PATH استفاده کردیم، استفاده کنید.
su در برابر su – چه تفاوتی وجود دارد؟
همانطور که در ابتدای مقاله توضیح دادیم، دستورات su و su- دو روش متفاوت برای تغییر حساب کاربری و تغییر به حساب کاربری دیگر هستند. با استفاده از دستور su بدون آرگومان “-“، میتوانید به حساب کاربری دیگری تغییر کنید، در حالی که متغیرهای محیطی مربوط به کاربر اصلی را حفظ میکنید. اما دستور su -، در حالی که شما را به حساب کاربری دیگری منتقل میکند، متغیرهای محیطی را پاک میکند. در ادامه، ما su و su- را به طور مفصلتر مقایسه خواهیم کرد.
۱. متغیرهای محیطی:
– su: متغیرهای محیطی کاربر اصلی را حفظ میکند.
– su -: متغیرهای محیطی کاربر جدید را بارگذاری میکند و متغیرهای محیطی کاربر قبلی را پاک میکند.
۲. دایرکتوری کاری:
– su: دایرکتوری کاری فعلی را حفظ میکند.
– su -: دایرکتوری کاری را به دایرکتوری خانگی کاربر جدید تغییر میدهد.
۳. فایلهای پیکربندی:
– su: فایلهای پیکربندی کاربر اصلی (مانند .bashrc و .bash_profile) را حفظ میکند.
– su -: فایلهای پیکربندی کاربر جدید را بارگذاری میکند.
۴. شل ورود:
– su: شل ورود کاربر جدید را اجرا نمیکند.
– su -: شل ورود کاربر جدید را اجرا میکند، که ممکن است باعث اجرای برخی از اسکریپتهای ورود شود.
در کل، استفاده از su – باعث میشود محیط کاربر جدید به طور کامل بارگذاری شود، در حالی که su محیط کاربر قبلی را تا حد زیادی حفظ میکند. انتخاب بین این دو گزینه بستگی به نیازهای شما دارد. اگر میخواهید محیط کاربر جدید را به طور کامل تجربه کنید، su – گزینه مناسبتری است. اما اگر فقط به دنبال دسترسی موقت به حساب کاربری دیگر هستید، su ممکن است گزینه بهتری باشد.
دستور su :
با اجرای دستور su، میتوانید به حساب کاربری دیگری که مشخص میکنید منتقل شوید و اگر حساب کاربری را مشخص نکنید، به طور پیشفرض وارد حساب کاربری Root میشوید، در حالی که محیط کاربری فعلی، متغیرهای محیطی و اسکریپتهای پروفایل شما حفظ میشوند. با اجرای دستور su، شما به حساب کاربری دیگری تغییر میکنید بدون اینکه شل ورود اجرا شود و متغیرهای محیطی تنظیم شده برای حساب کاربری فعلی یا دایرکتوری کاری تغییر نمیکند.
به عنوان مثال، برای ورود به یک حساب کاربری خاص مانند Opera در حالی که تغییری در متغیرهای محیطی اعمال نمیشود، دستور زیر را وارد کنید:
$ su Opera
با اجرای دستور قبلی، شما به حساب کاربری Opera منتقل میشوید بدون اینکه شل ورود اجرا شود و متغیرهای محیطی و اسکریپتهای پروفایل حفظ میشوند. این مانند این است که کاربر در همان محیط قبل از تغییر حساب کاربری قرار دارد و فقط به حساب کاربری دیگری وارد میشود.
توجه: برای تغییر به حساب کاربری Opera، باید گذرواژه حساب کاربری را که به آن منتقل میشوید (Opera) بدانید زیرا از شما خواسته میشود.
دستور su – :
اگر میخواهید علاوه بر تغییر به حساب کاربری دیگر، محیط کاربری خود را نیز تغییر دهید، دستور su – مفید خواهد بود. اگر از دستور su – برای تغییر به حساب کاربری مورد نظر خود استفاده کنید، مقادیر متغیرهای محیطی و دایرکتوری حساب کاربری مورد نظر، جایگزین مقادیر مربوط به محیط کاری فعلی شما میشود و تمام متغیرهای محیطی متعلق به کاربر اصلی حذف میشوند.
دستور su – بهترین راه برای پیکربندی کامل محیط است. همچنین، دستورات su -l و su –login نیز همان عملکرد su – را دارند و شل ورود را برای انتقال به حساب کاربری مورد نظر یا حساب Root اجرا میکنند. به عنوان مثال، برای تغییر به حساب کاربری Opera با اجرای شل ورود، دستور زیر را اجرا کنید:
$ su - Opera
اگر از دستور su برای تغییر به کاربر دیگر استفاده نشود و حساب کاربری خاصی را همراه با این دستورات مشخص نکنید، این دستورات مجوزهای سوپر کاربر را در سیستم لینوکس درخواست میکنند و به طور پیشفرض، محیط کاربری شما به محیط کاربری Root تغییر میکند.
بنابراین، اگر میخواهید وارد حساب کاربری Root شوید، میتوانید دستور su را بدون ذکر نام کاربری اجرا کنید تا به طور خودکار به حساب کاربری Root منتقل شوید:
$ su
نتیجهگیری
درک تفاوت بین دستورات su و su – تأثیر مهمی بر تغییر محیط و متغیرهای محیطی در لینوکس هنگام تغییر بین حسابهای کاربری دارد. به طور خلاصه، دستور su به شما امکان میدهد تا هنگام تغییر به حساب کاربری دیگر، محیط کاربری فعلی را حفظ کنید. در مقابل، دستور su – شل ورود را برای انتقال به حساب کاربری مشخص شده اجرا میکند و به طور کلی متغیرهای محیطی و دایرکتوری کاری تنظیم شده در محیط کاربر را تغییر میدهد.
اگر میخواهید محیط کاربری فعلی خود را حفظ کنید و فقط به حساب کاربری دیگری تغییر کنید، از دستور su استفاده کنید. اما اگر میخواهید محیط کاربری کامل کاربر مقصد را تجربه کنید، دستور su – گزینه مناسبتری است.
انتخاب بین این دو دستور بستگی به نیازهای شما دارد. در برخی موارد، حفظ محیط کاربری فعلی ضروری است، در حالی که در موارد دیگر، تغییر کامل محیط کاربری برای اهداف خاص مورد نیاز است.
درک عمیقتر تفاوت بین این دو دستور به شما کمک میکند تا بتوانید به درستی بین آنها انتخاب کنید و محیط کاربری مورد نظر خود را در لینوکس پیکربندی کنید.