لینوکس مقدماتی/انواع کاربر

ویکی‎کتاب، کتابخانهٔ آزاد
پرش به ناوبری پرش به جستجو
Gnome-go-last.svg Gnome-go-first.svg

در این درس به انواع کاربران در سیستم عامل لینوکس می‌پردازیم و سعی می‌کنیم تا با استفاده از برخی دستورها و برخی از فایل‌های لینوکس اطلاعاتی در مورد کاربران سیستم خود بدست آوریم.

انواع کاربران لینوکس[ویرایش]

در سیستم عامل لینوکس کاربران به سه قسمت تقسیم می‌شوند.

۱. کاربر استاندارد

۲. کاربر روت(ریشه)

۳. کاربر سیستمی

دستورهای مهم[ویرایش]

id[ویرایش]

توضیح[ویرایش]

این دستور اطلاعاتی در بارهٔ کاربران به ما می‌دهد.

میتوانیم اسم کاربر را به عنوان آرگومان به این دستور بدهیم مثلا id user1 یا میتوانیم بدون ذکر آرگومان از این دستور استفاده کنیم مثلا id که در اینصورت خروجی اطلاعات کاربر فعلی یعنی کاربری که ما با رمز عبور او وارد سیستم شده‌ایم را نشان می‌دهد. اطلاعاتی که نشان داده می‌شود از این قرار است ۱. شناسهٔ عددی کاربر و شناسهٔ حروفی کاربر(نام کاربری)، ۲. شناسهٔ عددی و حروفی گروه اصلی کاربر (primary group)

۳. شناسه‌های عددی و حروفی گروه‌های فرعی کاربر

مثال[ویرایش]

sadegh@sadegh-VirtualBox:~$ id

خروجی دستور فوق:

uid=1000(sadegh) gid=1000(sadegh) groups=1000(sadegh),4(adm),24(cdrom),27(sudo), 30(dip),46(plugdev),108(lpadmin),124(sambashare),999(vboxsf)

توضیح مثال

شناسهٔ عددی و حروفی کاربر ۱۰۰۰ و sadegh

شناسهٔ عددی و حروفی گروه اصلی کاربر ۱۰۰۰ و sadegh

شناسه‌های عددی و حروفی گروه‌های فرعی کاربر ۱۰۰۰ و sadegh و ۴ و adm و ۲۴ و cdrom و ۲۷ و sudo و ...

نکته: همانطور که می‌بینید کاربر sadegh عضو گروه sudo می‌باشد بنابراین می‌تواند از دستور sudo ،که در ادامه توضیح داده خواهد شد، برای اجرای دستورها استفاده کند.

مثال[ویرایش]

sadegh@sadegh-VirtualBox:~$ id user1

خروجی

uid=1002(user1) gid=1002(user1) groups=1002(user1),27(sudo)

در اینجا کاربر sadegh اطلاعاتی در مورد کاربر user1 کسب می‌کند.

w[ویرایش]

توضیح[ویرایش]

این دستور اطلاعاتی در بارهٔ کاربرانی که در حال حاضر در سیستم آنلاین و در حال استفاده از سیستم عامل هستند از قبیل نام فرایندهایی که هرکاربر در حال اجرای آن است را نشان می‌دهد.

خروجی این دستور شامل از قبیل دو قسمت است

قسمت اول شامل اطلاعاتی از قبیل زمانی که این دستور اجرا شده است یعنی زمان حال به ساعت و دقیقه و ثانیه، مدت زمانی که سیستم عامل روشن و در حال اجراست، تعداد کاربرانی که در حال حاضر در سیستم وارد شده‌اند و در حال استفاده از سیستم هستند، و متوسط load سیستم در ۱، ۵ و ۱۵ دقیقهٔ گذشته

قسمت دوم شامل اطلاعاتی است دربارهٔ کاربرانی است که به سیستم وارد شده‌اند و در حال استفاده از سیستم عامل هستند. که به صورت یک جدول نشان داده می‌شود.

ستون اول با عنوان USER، حاوی نام کاربرانی است که در حال استفاده از سیستم هستند،

ستون دوم با عنوان TTY حاوی نام ترمینالی است که کاربران با استفاده از آن به سیستم وارد شده‌اند(ترمینال یا فیزیکی TTY# یا از راه‌ دور یعنی شبه ترمینال است)،

ستون سوم با عنوان FROM حاوی آی پی کاربرانی است که از راه دور و با استفاده از شبه ترمینال به سیستم عامل وارد شده‌اند.

ستون چهارم با عنوان LOGIN@ که حاوی زمان ورود به سیستم است

ستون پنجم با عنون IDLE حاوی مدت زمانی است که کاربر با سیستم عامل کار نکرده است(هنوز از سیستم خارج نشده است ولی با آن کار نکرده است)

ستون ششم با عنوان JCPU مدت زمانی است که فرایندهای متصل به TTY، پردازشگر مرکزی را به خود مشغول داشته اند.

ستون هفتم با عنوان PCPU مدت زمانی است که فرایندی که در ستون بعدی یعنی ستون هشتم (WHAT) نامش می‌اید پردازشگر مرکزی را به خود مشغول داشته است.

ستون هشتم با عنوان WHAT دستوری است که کاربر روی ترمینال خود اجرا کرده است و این برنامه‌ای که این دستور باعث اجرایش شده در حال حاضر در حال اجراست.

مثال[ویرایش]

sadegh@sadegh-VirtualBox:~$ w

خروجی دستور فوق:

 14:11:35 up 7 min,  4 users,  load average: 0.01, 0.29, 0.22
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty2                      14:08    1:59   0.10s  0.09s -bash
sadegh   tty1                      13:41    3:51   0.12s  0.00s vi
sadegh   pts/0    192.168.1.35     14:07    7.00s  0.06s  0.00s w

همانطور که می‌بینید خروجی از دو قسمت تشکیل شده است.

کاربر user1 در حال اجرای برنامهٔ خاصی به جز bash نیست بنابراین در ستون آخر نام برنامهٔ bash نوشته شده است و میدانیم که bash یک مفسر است که دستورهایی که ما در ترمینال وارد میکنیم را تفسیر و خروجی مناسب را تولید می‌کند.

کاربر sadegh (دومین کاربر در خروجی) در حال کار با برنامهٔ ویرایشگر متن به نام vi وقتی که ما دستور w را اجرا کرده‌ایم بوده‌ است.

who[ویرایش]

توضیح[ویرایش]

فهرست افرادی که وارد سیستم شده‌اند و در حال استفاده از سیستم هستند را به صورت فهرست نشان می‌دهد. این فهرست شامل اطلاعات از قبیل نام کاربری و ترمینالی که کاربر از طریق آن به سیستم وارد شده است و زمانی که کاربر به سیستم وارد شده است.

مثال[ویرایش]

/home/user1$who

خروجی دستور فوق

user1    tty4         2016-08-01 13:23
user1    tty3         2016-08-01 13:23
sadegh   tty1         2016-08-01 13:22
sadegh   pts/1        2016-08-01 13:24 (192.168.1.35)

توضیح خروجی: همانطور که در خروجی دستور می‌بینیم ۴ ورود به سیستم انجام شده است(هنوز هیچکدام از ۴ ورودی از سیستم خارج نشده‌اند). این ۴ ورود به سیستم توسط دو کاربر user1 و sadegh انجام شده است. یعنی کاربر user1 دوبار وارد سیستم شده است و از آن خارج نشده، این کاربر یک بار از طریق tty4 یعنی ترمینال فیزیکی شمارهٔ ۴ و بار دیگر از طریق tty3 یعنی از طریق ترمینال فیزیکی شمارهٔ ۳ وارد سیستم شده‌ است. از طرف دیگر کاربر با نام کاربری sadegh نیز دوبار وارد سیستم شده‌ است و هنوز از هیچ کدام خارج نشده است. این کاربر یک بار با از طریق tty1 که ترمینال فیزیکی ۱ است و بار دیگر از طریق شبه ترمینال pts/1 وارد سیستم شده‌ است.

نکته: سه کاربر اول که از طریق ترمینال فیزیکی tty# وارد شده‌اند در حقیقت از راه نزدیک و با اتصال کیبورد به سرور یا رایانه‌ای که این سیستم عامل روی آن نصب است مستقیماً وارد سیستم شده‌ باشند. ولی کاربر آخر که با استفاده از شبه ترمینال وارد شده در حقیقت از راه دور و از طریق یک کلاینت ssh مانند putty وارد سیستم شده‌ است و به همین خاطر است که در ستون چهارم ip او مشخص شده است.

در خروجی ستون اول مربوط به نام کاربری کاربرانی است که وارد سیستم شده‌اند. ستون دوم مربوط به ترمینالی است که کاربر از آن به سیستم ورود کرده است و ستون ۳ زمانی است که کاربر وارد سیستم شده است.

sudo[ویرایش]

توضیح[ویرایش]

در لینوکس انجام بسیاری از کارها نیاز به مجوز(مثلا پاک کردن یک فایل یا ایجاد یک فایل یا ...) دارد. و هر کاربر می‌تواند مجوز‌های خاصی داشته باشد. کاربر ریشه کاربری است که مجوز انجام هر کاری را داراست. با استفاده از این دستور یک کاربر عادی می‌تواند مجوزهای کاربر ریشه را بدست آورد.

مثلا گاهی پیش می‌آید که میخواهیم فایلی را پاک کنیم ولی مجوز پاک کردن آن را نداریم چرا که آن فایل متعلق به کاربری که ما با آن به سیستم وارد شدیم نیست یا این کاربر عضو گروهی که مجوز پاک کردن آن فایل را دارند نیست. بنابراین ما برای پاک کردن آن فایل قبل از دستور مربوط به پاک کردن فایل مثلا

rm file.txt دستور sudo را استفاده میکنیم به اینصورت sudo rm file.txt پس از اجرای این دستور سیستم عامل از ما کلمهٔ عبور مربوط به کاربر ریشه را می‌خواهد و پس از وارد کردن کلمهٔ عبور دستور اجرا می‌شود و فایل پاک می‌شود.

فایل /etc/passwd[ویرایش]

این فایل شامل اطلاعاتی در مورد کاربران است

فایل /etc/group[ویرایش]

اطلاعاتی از قبیل اینکه هر کاربر به چه گروه‌هایی تعلق دارد در این فایل قرار می‌گیرد.