مدیریت ساده کاربران




مدیریت کاربران در لینوکس، هر چند که بسیار ساده است، اما جزئیات دقیقی دارد. مدیریت کاربران آنقدر ساده است که باعث تنفر از وجود کاربر جدید نخواهد شد. بهتر است یک قانون کلی برای کاربران داشته باشیم؛ به هرچیزی که نیاز دارند دسترسی بدهیم، نه بیشتر و نه کمتر. مدیریت کاربران در لینوکس، هر چند که بسیار ساده است، اما جزئیات دقیقی دارد. مدیریت کاربران آنقدر ساده است که باعث تنفر از وجود کاربر جدید نخواهد شد. بهتر است یک قانون کلی برای کاربران داشته باشیم؛ به هرچیزی که نیاز دارند دسترسی بدهیم، نه بیشتر و نه کمتر. هر مدیر سیستمی، به شما می گوید کاربران را از طریق گروه ها مدیریت می کند و راست هم می گوید. اما باید هر کاربری را در ابتدا ایجاد کرد، سپس او را در گروه خاص قرار داد و دسترسی هایش را تعیین کرد. این عملیات ساده است که در این مطلب به آن خواهیم پرداخت. دستورات گروه در ابتدا به چگونگی کارکرد گروه ها خواهیم پرداخت. تنظیمات گروه ها در فایل / etc / group یافت می شوند. یک فایل لینوکس استاندارد / etc / group شامل اطلاعات زیر خواهد بود که به فرم نام گروه: x: شناسه گروه: کاربر قرار می گیرد. متغیر x در تعریف گروه، فایلی است که در واقع محل قرارگیری رمز عبور گروه در آن جای می گیرد. برای این که بفهمیم در چه گروهی قرار داریم، کافی است دستور زیر را اجرا کنیم: khess rdpusers در بسیاری از سیستم های لینوکسی، وقتی مدیر، شناسه​ای برای یک فرد ایجاد می کند، سیستم به طور خودکار گروهی با همان نام برای شناسه کاربر می سازد. مدیر سیستم می تواند هنگام ایجاد حساب، گروهی را تعیین کند که از پیش ساخته شده است. به دو مثال زیر دقت کنید: # useradd fred # grep fred / etc / passwd fred:x:۵۰۴:۵۰۶:: / home / fred: / bin / bash # grep fred / etc / group fred:x:۵۰۶: # useradd ـ g ۱۰۰ ـ c "Bob Alobdob" bob # grep bob / etc / passwd bob:x:۵۰۵:۱۰۰:Bob Alobdob: / home / bob: / bin / bash # grep bob / etc / group # چرا وقتی دستور grep bob / etc / group را تایپ کردیم، سیستم پاسخی به ما نداد؟ دلیل این کار این است که گروه کاربران گروه اصلی شناسه bob است. اگر گروه users یک گروه فرعی بود، شناسه bob در خروجی چاپ می شد. برای مثال، کافی است شناسه ای با rdpusers به عنوان گروه فرعی بسازیم. # useradd ـ G ۵۰۴ ـ c "Jon Shmon" john # grep john / etc / passwd john:x:۵۰۶:۵۰۷:Jon Shmon: / home / john: / bin / bash # grep john / etc / group rdpusers:x:۵۰۴:khess,john john:x:۵۰۷: توجه داشته باشید که گروه را قبل از تعیین کاربرانش باید بسازیم. دستور groupadd گروه جدیدی را با شناسه گروه (GID) یکتا می سازد. # groupadd ـ g ۱۰۴۰ accounting # grep ۱۰۴۰ / etc / group accounting:x:۱۰۴۰: اگر در دستور ذکر شده، شناسه گروه را وارد نکنیم، خود سیستم به طور خودکار یک شناسه یکتا به آن گروه می دهد. دستور groupmod برای تغییر نام گروه استفاده می شود. توجه داشته باشید که بعد از انجام این دستور، مدیر سیستم باید فایل های تنظیمات کاربران این گروه را اصلاح کند. # groupmod ـ n accounting beancounters # grep ۱۰۴۰ / etc / group beancounters:x:۱۰۴۰: نکته: دستور chgrp (دسترسی گروه) را نباید با دستور groupmod (تغییر نام گروه) اشتباه گرفت. با دستور groupdel نیز می توان یک گروه را به طور کلی پاک کرد. # groupdel beancounters اگر ترجیح می دهید به صورت مستقیم فایل های پیکربندی تنظیمات گروه را ویرایش کنید (هر چند نیازی به انجام این کار نیست)، دستور vigr فایل / etc / group را با قراردادن یک قفل روی فایل ویرایش می کند. به این ترتیب تنها یک مدیر در لحظه می تواند فایل را ویرایش کند و تداخل تنظیمات به وجود نمی آید. بهتر است کلا از دستورات مخصوص group برای مدیریت گروه ها استفاده شود. دستورات کاربر این دستورات به این علت در این بخش قرار گرفته است که عملکرد آنها بیشتر در حوزه کاربرها واضح خواهد بود. حتی اگر یک کاربر بداند که این دستورها کجاست ( / usr / sbin) باز هم نمی تواند بدون دسترسی root به آنها دست یابد. برای مثال اگر یک کاربر بخواهد شناسه جدیدی را با استفاده از دستور useradd و vipw ایجاد کند، با پیغام زیر روبه رو می شود: $ / usr / sbin / useradd steve useradd: Only root may add a user or group to the system. $ / usr / sbin / vipw vipw: Couldn۰۳۹;t lock file: Permission denied vipw: / etc / passwd is unchanged می توان یک کاربر را با دستور useradd ایجاد کرد، شناسه آن را از طریق usermod عوض کرد و با کمک دستور userdel شناسه کاربر را از سیستم حذف کرد. همچنین ویرایش فایل / etc / passwd را مستقیما از طریق دستور vipw انجام داد. دستور useradd و شیوه اجرای آن را در مثال های قبلی دیده اید. دستور usermod می تواند اطلاعات یک کاربر از جمله نام واقعی، محل دایرکتوری Home، تاریخ اتمام اعتبار این شناسه، کارکردهای آن، افزودن یا تغییر گروه، نام ورودی به سیستم، قفل یا باز کردن شناسه و تغییر پوسته کاربر را انجام دهد. # grep khess / etc / passwd khess:x:۵۰۰:۵۰۰:Kenneth Hess: / home / khess: / bin / bash # usermod ـ c "Ken Hess" khess # grep khess / etc / passwd khess:x:۵۰۰:۵۰۰:Ken Hess: / home / khess:/ bin / bash دستور usermod را باید با احتیاط اجرا کرد چرا که تایپ ناصحیح یک دستور می تواند باعث بی استفاده شدن آن حساب شود. مثلا اگر فرض کنیم Bob Alobdob که در مثال گروه آن را ایجاد کردیم، بخواهد شناسه ورودی و دایرکتوری home خود را به robert تغییر دهد. # usermod ـ d " / home / robert" ـ m ـ l robert bob # grep robert / etc / passwd robert:x:۵۰۵:۱۰۰:Bob Alobdob: / home/ robert: / bin / bash دقت کنید که چطور عبارت / home / robert بدقت و درون گیومه وارد شده است. اگر این اتفاق نیفتد، شناسه رابرت دیگر دایرکتوری Home ندارد و در نتیجه سیستم برایش بی استفاده خواهد شد. همان طور که در دستور مشخص است، دایرکتوری فعلی / home / bob به / home / robert تغییر می کند. شناسه لاگین bob نیز به robert تغییر می کند و گزینه ـ m محتوای دایرکتوری bob را به robert منتقل می کند. نکته: شناسه ورودی کاربری را که هم اکنون در حال کار با سیستم است نمی توان تغییر داد. دستور userdel احتمالا واضح است، اما بعد از اجرای این دستور متوجه می شوید که دایرکتوری home کاربر دست نخورده باقی مانده است. چرا باید این اتفاق بیفتد؟ دلیل پاک نشدن این اطلاعات مکانیزم جلوگیری از اشتباهی است که در سیستم پیاده شده است. مثلا اگر شناسه کاربر از طریق یک حرف یا عدد با شناسه دیگری متفاوت باشد، ممکن است اشتباه اطلاعات فرد دیگری به اشتباه پاک شود و باید پیش از رویداد بحران، جلوی آن را گرفت. بنابراین حذف اطلاعات به صورت دستی خواهد بود تا یک بار دیگر نیز این موضوع چک شود. محمدرضا قربانی