دستور whoami در لینوکس ابزاری ساده اما ضروری است که نام کاربری کاربر فعلی وارد شده را نشان میدهد.
زمانی که شما دستور whoami را در ترمینال تایپ کرده و Enter را فشار میدهید، سیستم با نام کاربری شما پاسخ میدهد و راهی سریع برای تأیید هویت شما در محیطهای چندکاربره فراهم میکند.
این دستور به ویژه برای اطمینان از اینکه تحت حساب صحیحی کار میکنید، مفید است، به خصوص زمانی که با چندین جلسه کاربری یا مجوزها سر و کار دارید.
نحو دستور whoami در لینوکس
نحو پایهای این دستور به شکل زیر است:
whoami [option]
این دستور نیازی به گزینهها یا آرگومانهای اضافی ندارد و استفاده از آن بسیار آسان است. فقط کافیست **whoami** را در ترمینال خود تایپ کرده و Enter را فشار دهید تا نام کاربری کاربر فعلی وارد شده را مشاهده کنید.
پیشنیازها برای استفاده از دستور whoami در لینوکس
برای اینکه این آموزش به درستی عمل کند، پیشنیازهای زیر را فراهم کنید:
– یک VPS لینوکسی با توزیع لینوکس سازگار (مانند اوبونتو، دبیان، سنتاواس).
– یک کاربر غیر ریشهای با مجوزهای sudo.
– دسترسی به ترمینال/خط فرمان.
مثالهای عملی برای درک دستور whoami در لینوکس
دستور whoami در لینوکس مانند یک برچسب نام دیجیتال عمل میکند و به سرعت نشان میدهد که شما به عنوان کدام کاربر وارد شدهاید. چه در حال مدیریت چندین جلسه باشید و چه بررسی مجوزهای حساب، **whoami** به راحتی هویت شما را تأیید میکند.
۱. نمایش کاربر فعلی در لینوکس
سادهترین استفاده از دستور **whoami** نمایش کاربر فعلی وارد شده است. این موضوع زمانی مفید است که بخواهید به سرعت تأیید کنید که با کدام حساب کاربری کار میکنید.
نحو:
whoami
مثال:
$ whoami
در اینجا، خروجی **john** است که نشان میدهد کاربر فعلی **john** است.
۲. تأیید کاربر مؤثر پس از تغییر حسابها
اگر با استفاده از دستور su (تغییر کاربر) به حساب دیگری سوئیچ کنید، میتوانید از **whoami** برای تأیید اینکه کدام حساب فعال است استفاده کنید.
تغییر به یک حساب کاربری دیگر:
su user1
استفاده از دستور **whoami** برای بررسی کاربر مؤثر:
whoami
مثال:
$ su user1
Password:
$ whoami
user1
این تأیید میکند که اکنون به عنوان **user1** وارد شدهاید.
۳. بررسی اینکه آیا یک کاربر مجوز sudo دارد یا خیر
میتوانید از **whoami** همراه با **sudo** برای بررسی اینکه آیا یک کاربر دارای مجوزهای مدیریتی است یا خیر استفاده کنید. اجرای `sudo whoami` به شما خواهد گفت که آیا کاربر دسترسی سطح ریشه دارد یا خیر.
sudo whoami
مثال:
$ sudo whoami
root
اگر خروجی **root** باشد، به این معنی است که کاربر دارای مجوزهای sudo است. اگر کاربر مجوزهای sudo نداشته باشد، پیغام خطای مجوز را مشاهده خواهید کرد.
۴. بررسی اینکه کدام کاربر یک اسکریپت را اجرا میکند
در اسکریپتنویسی شل، معمولاً مهم است که بدانید کدام کاربر اسکریپت را اجرا میکند. میتوانید از **whoami** برای بررسی اینکه آیا اسکریپت توسط کاربر ریشه اجرا میشود و نمایش هشدار در صورت نیاز استفاده کنید.
نحو:
if [[ "$(whoami)" != 'root' ]]; then
echo "You are not running this script as root!"
fi
مثال:
$ bash myscript.sh
You are not running this script as root!
این اسکریپت ساده بررسی میکند که آیا اسکریپت به عنوان ریشه اجرا میشود یا خیر. اگر نه، پیغام هشدار را چاپ میکند.
۵. لیست تمام گزینههای موجود برای whoami
شما همیشه میتوانید گزینههای اضافی را بررسی کرده یا با هر دستور لینوکس کمک بگیرید. از پرچم –help برای مشاهده گزینههای موجود برای whoami استفاده کنید.
whoami --help
مثال:
$ whoami --help
Usage: whoami [OPTION]...
Print the user name associated with the current effective user ID.
--help display this help and exit
--version output version information and exit
پیغام کمک جزئیاتی درباره استفاده از دستور و گزینههای آن ارائه میدهد.
۶. بررسی نسخه دستور whoami در لینوکس
برای بررسی اینکه کدام نسخه از **whoami** را استفاده میکنید، میتوانید از پرچم **–version** استفاده کنید.
whoami --version
مثال:
$ whoami --version
whoami (GNU coreutils) 8.30
این تأیید میکند که نسخه دستور **whoami** نصب شده بر روی سیستم شما چیست.
۷. نمایش شناسه کاربر (UID)
در لینوکس، هر کاربر یک شناسه عددی منحصر به فرد به نام **UID** (شناسه کاربر) دارد. اگر میخواهید **UID** را به جای نام کاربری نمایش دهید، میتوانید از گزینه **-u** با دستور **whoami** استفاده کنید.
whoami -u
مثال:
$ whoami -u
۱۰۰۱
در اینجا، **۱۰۰۱** شناسه کاربر فعلی است. این عدد نحوه شناسایی کاربر توسط سیستم را نشان میدهد، بدون توجه به نام کاربری.
۸. نمایش شناسه کاربر مؤثر (EUID)
شناسه کاربر مؤثر (**EUID**) در هنگام مدیریت مجوزها و امتیازات مهم است.
در حالی که **UID** به کاربر واقعی مربوط میشود، **EUID** میتواند زمانی که یک کاربر دستورات را با امتیازات بالاتر (مانند استفاده از sudo) اجرا میکند تغییر کند. گزینه **-e** در **whoami** شناسه کاربر مؤثر را نشان میدهد که امتیازات در حال استفاده را منعکس میکند.
whoami -e
مثال:
$ whoami -e
۱۰۰۱
اگر کاربران را تغییر دهید یا امتیازات را افزایش دهید، خروجی این دستور شناسه کاربر مؤثری را نشان خواهد داد که سیستم برای بررسی مجوزها در نظر دارد.
برای مثال، اگر دستوری را با sudo اجرا کنید و EUID را بررسی کنید، نتیجه ممکن است به شکل زیر باشد:
$ sudo whoami -e
۰
در این حالت، **۰** EUID کاربر ریشه است، به این معنی که شما دستورات را با امتیازات ریشه اجرا میکنید.
نحوه استفاده از دستور whoami با سایر دستورات لینوکس
در حالی که دستور **whoami** برای شناسایی کاربر فعلی مفید است، چندین دستور دیگر لینوکس اطلاعات مشابه یا دقیقتری ارائه میدهند.
بیایید بررسی کنیم که چگونه **whoami** با سایر دستورات مقایسه میشود و چگونه میتوانید آنها را با هم ترکیب کنید تا بینشهای جامعتری درباره جلسات کاربری به دست آورید.
۱. whoami در مقابل w: بررسی کاربران وارد شده و فعالیتهای آنها
دستور **whoami** در لینوکس فقط نام کاربر فعلی مؤثر را به شما میگوید، اما اگر به اطلاعات دقیقتری درباره تمام کاربران وارد شده به سیستم نیاز دارید، دستور **w** دوست شماست.
w
**مثال:**
$ w
۱۸:۳۰:۱۱ up 2:14, 2 users, load average: 0.01, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
john pts/0 192.168.1.10 16:22 2:00 0.10s 0.01s sshd: john [priv]
با استفاده از **w**، میتوانید ببینید کدام کاربران وارد شدهاند، جلسه ترمینال آنها، مدت زمانی که وارد شدهاند و چه فرآیندهایی را اجرا میکنند.
این اطلاعات بسیار دقیقتر از خروجی ساده نام کاربری **whoami** است.
۲. whoami در مقابل logname: اطلاعات مختلف کاربران
هر دو دستور **whoami** و **logname** نام یک کاربر را برمیگردانند، اما کمی در هدف متفاوت هستند.
دستور **whoami** کاربر مؤثر (کاربری که دستورات را اجرا میکند) را نشان میدهد، در حالی که **logname** نام ورود اصلی را برمیگرداند، حتی پس از تغییر حسابها.
نحو:
whoami
logname
مثال:
$ whoami
john
$ logname
john
اکنون اگر از sudo استفاده کنید:
$ sudo whoami
root
$ sudo logname
john
در اینجا، **whoami** گزارش میدهد که کاربر مؤثر اکنون ریشه است، اما **logname** نشان میدهد که کاربر اصلی که وارد شده (john) چه کسی است. این موضوع زمانی مفید است که بخواهید هر دو کاربر اصلی و مؤثر را دنبال کنید.
۳. whoami در مقابل who: دریافت لیست تمام کاربران وارد شده
در حالی که **whoami** فقط کاربر فعلی شما را نشان میدهد، دستور **who** لیستی از تمام کاربران وارد شده به سیستم در آن لحظه، همراه با ترمینال، زمان ورود و جزئیات جلسه را ارائه میدهد.
نحو:
who
$ who
john pts/0 2024-09-29 16:22 (192.168.1.10)
mary pts/1 2024-09-29 16:25 (192.168.1.11)
دستور **who** نمای وسیعتری از کاربران سیستم ارائه میدهد و به شما این امکان را میدهد که چندین جلسه کاربری را زیر نظر داشته باشید، در حالی که **whoami** فقط بر روی جلسه کاربری فعال تمرکز دارد.
۴. whoami در مقابل id: دریافت اطلاعات دقیق هویت کاربر
دستور **id** نمایی دقیقتر از هویت کاربر ارائه میدهد. این دستور شناسه کاربر (UID)، شناسه گروه (GID) و عضویتهای گروهی کاربر را نشان میدهد و بینش عمیقتری نسبت به **whoami** فراهم میکند.
id
مثال:
$ id
uid=1001(john) gid=1001(john) groups=1001(john),27(sudo)
این دستور نه تنها نام کاربری را نمایش میدهد، بلکه شناسه عددی کاربر و گروههایی که به آنها تعلق دارد را نیز نشان میدهد. اگر بخواهید **id** مانند **whoami** عمل کند، از گزینه **-un** استفاده کنید:
$ id -un
john
در این حالت، خروجی با **whoami** مطابقت دارد و فقط نام کاربری مؤثر را نشان میدهد.
نحوه ترکیب دستور whoami با سایر دستورات
با ترکیب **whoami** با سایر دستورات، میتوانید تصویر کاملتری از فعالیتهای کاربری در سیستم خود به دست آورید:
– بررسی اینکه کاربر فعلی کیست
برای مشاهده نام کاربر فعلی، دستور زیر را اجرا کنید:
whoami
– دیدن اینکه چه کاربران دیگری وارد شدهاند و چه کاری انجام میدهند
اجرای دستور زیر لیستی از تمام کاربران وارد شده، ترمینالهای آنها، زمان ورود و فعالیتهای فعلی آنها را نشان میدهد:
w
– پیگیری کاربر اصلی ورود (به ویژه هنگام تغییر کاربران)
از دستور زیر برای مشاهده نام کاربری اصلی استفاده کنید که برای ورود استفاده شده است، حتی اگر کاربران را تغییر داده باشید:
logname
– لیست تمام کاربران در سیستم در زمان فعلی
دستور زیر تمام کاربران فعلاً وارد شده به سیستم را لیست میکند:
who
– دریافت اطلاعات دقیق درباره هویت کاربر فعلی
برای ارائه اطلاعات دقیق درباره کاربر فعلی، شامل شناسه کاربر، عضویتهای گروه و غیره، دستور زیر را اجرا کنید:
id
این دستورات وقتی با هم استفاده شوند، نمای کاملی از محیط کاربری در لینوکس به شما میدهند و به شما کمک میکنند تا جلسات کاربری، مجوزها و امنیت را به طور مؤثری مدیریت کنید.
نتیجهگیری
شما میتوانید به سرعت نام کاربری فعلی خود را با استفاده از دستور **whoami** مشاهده کنید. زمانی که نیاز دارید هویت خود را تأیید کنید، این موضوع مفید است، به ویژه در محیطهایی که چندین نفر از یک سیستم استفاده میکنند.
چگونه اطلاعات بیشتری درباره کاربر فعلی به دست آورید؟
برای این کار باید **whoami** را با سایر دستورات مانند **id** ترکیب کنید تا اطلاعات دقیقی درباره هویت کاربر فعلی به دست آورید، شامل شناسه کاربر، عضویتهای گروه و غیره.
چرا whoami شناسه عددی به جای نام کاربری نمایش میدهد؟
اگر **whoami** شناسه عددی به جای نام کاربری نمایش دهد، احتمالاً به این معنی است که سیستم قادر به شناسایی نام کاربری مرتبط با آن شناسه نیست.
این موضوع ممکن است زمانی رخ دهد که نام کاربری از فایل **/etc/passwd** حذف شده باشد. برای حل این مشکل، بررسی کنید که آیا کاربر در **/etc/passwd** وجود دارد و اطمینان حاصل کنید که پیکربندی کاربر صحیح است.
چگونه مشکل عدم عملکرد دستور whoami در لینوکس را عیبیابی کنیم؟
اگر **whoami** کار نمیکند، سعی کنید با استفاده از راهحلهای زیر آن را حل کنید:
– **محیط خود را بررسی کنید:** اطمینان حاصل کنید که دستور **whoami** را در یک ترمینال یا خط فرمان اجرا میکنید که به ابزارهای لازم سیستم دسترسی دارد.
– **املا دستور را تأیید کنید:** دوباره بررسی کنید که آیا دستور را به درستی تایپ کردهاید، شامل حروف بزرگ و کوچک.
– **مجوزها را بررسی کنید:** اگر دستور را به عنوان یک کاربر غیر ریشهای اجرا میکنید، اطمینان حاصل کنید که مجوزهای لازم برای دسترسی به اطلاعات سیستم را دارید.