اضافه کردن کاربر اوبونتو مدیریت کاربر. دسترسی SSH توسط کاربران مسدود شده

مدیریت کاربر بخش مهمی از حفظ یک سیستم ایمن است. مدیریت ناکارآمد کاربران و امتیازات اغلب بسیاری از سیستم ها را به خطر می اندازد. بنابراین، مهم است که بدانید چگونه می توانید از طریق تکنیک های ساده و موثر مدیریت حساب کاربری از سرور خود محافظت کنید.

توسعه دهندگان اوبونتو تصمیم جدی گرفتند که حساب کاربری ریشه اداری را به طور پیش فرض در تمام نصب های اوبونتو غیرفعال کنند. این بدان معنا نیست که اکانت ریشه حذف شده است یا ممکن است به آن دسترسی نداشته باشید. صرفاً رمز عبوری به آن داده شده است که با هیچ مقدار رمزگذاری شده ای مطابقت ندارد، بنابراین ممکن است مستقیماً به خودی خود وارد نشود.

در عوض، کاربران تشویق می شوند تا از ابزاری به نام sudo برای انجام وظایف اداری سیستم استفاده کنند. Sudo به کاربر مجاز اجازه می دهد تا به طور موقت امتیازات خود را با استفاده از رمز عبور خود به جای دانستن رمز عبور متعلق به حساب ریشه افزایش دهد. این متدولوژی ساده و در عین حال مؤثر، پاسخگویی را برای تمام اقدامات کاربر فراهم می‌کند و به مدیر کنترل دقیقی را بر روی اعمالی که کاربر می‌تواند با امتیازات گفته شده انجام دهد، می‌دهد.

    اگر به دلایلی می خواهید اکانت root را فعال کنید، به سادگی به آن رمز عبور بدهید:

    تنظیمات با رمزهای عبور root پشتیبانی نمی شوند.

    sudo passwd

    Sudo از شما رمز عبور را درخواست می کند و سپس از شما می خواهد که یک رمز عبور جدید برای root را مطابق شکل زیر ارائه کنید:

    رمز عبور برای نام کاربری: (رمز عبور خود را وارد کنید) رمز عبور جدید یونیکس را وارد کنید: (یک رمز عبور جدید برای root وارد کنید)رمز عبور جدید یونیکس را دوباره تایپ کنید: (تکرار رمز عبور جدید برای روت) passwd: رمز عبور با موفقیت به روز شد

    برای غیرفعال کردن رمز عبور حساب ریشه، از دستور passwd زیر استفاده کنید:

    ریشه sudo passwd -l

    با این حال، برای غیرفعال کردن خود حساب ریشه، از دستور زیر استفاده کنید:

    usermod --expiredate 1

    شما باید با خواندن صفحه مرد در Sudo بیشتر بخوانید:

    مرد سودو

به طور پیش فرض، کاربر اولیه ایجاد شده توسط نصب کننده اوبونتو عضوی از گروه "sudo" است که به عنوان یک کاربر مجاز sudo به فایل /etc/sudoers اضافه می شود. اگر می خواهید به هر حساب دیگری از طریق sudo دسترسی کامل به ریشه بدهید، به سادگی آنها را به گروه sudo اضافه کنید.

افزودن و حذف کاربران

فرآیند مدیریت کاربران و گروه‌های محلی ساده است و تفاوت بسیار کمی با سایر سیستم‌عامل‌های گنو/لینوکس دارد. اوبونتو و سایر توزیع‌های مبتنی بر دبیان استفاده از بسته «adduser» را برای مدیریت حساب تشویق می‌کنند.

    برای افزودن یک حساب کاربری، از نحو زیر استفاده کنید و دستورات را دنبال کنید تا به حساب رمز عبور و ویژگی های قابل شناسایی مانند نام کامل، شماره تلفن و غیره بدهید.

    نام کاربری sudo adduser

    برای حذف یک حساب کاربری و گروه اصلی آن، از دستور زیر استفاده کنید:

    نام کاربری sudo deluser

    حذف یک حساب، پوشه اصلی مربوطه را حذف نمی کند. این به شما بستگی دارد که آیا می خواهید پوشه را به صورت دستی حذف کنید یا آن را مطابق با سیاست های حفظ دلخواه خود نگه دارید.

    به یاد داشته باشید، اگر اقدامات احتیاطی لازم را انجام نداده باشید، هر کاربری که بعداً با همان UID/GID مالک قبلی اضافه شود، اکنون به این پوشه دسترسی خواهد داشت.

    ممکن است بخواهید این مقادیر UID/GID را به چیزی مناسب تر، مانند اکانت ریشه، تغییر دهید و شاید حتی محل پوشه را برای جلوگیری از درگیری های بعدی تغییر دهید:

    sudo chown -R root:root /home/username/ sudo mkdir /home/archived_users/ sudo mv /home/username /home/archived_users/

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

    sudo passwd -l نام کاربری sudo passwd -u نام کاربری

    برای افزودن یا حذف یک گروه شخصی، به ترتیب از دستور زیر استفاده کنید:

    نام گروه sudo addgroup نام گروه sudo delgroup

    برای افزودن کاربر به یک گروه، از دستور زیر استفاده کنید:

    نام کاربری sudo adduser نام گروه

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

هنگامی که یک کاربر جدید ایجاد می شود، ابزار adduser یک دایرکتوری خانگی کاملاً جدید به نام /home/username ایجاد می کند. نمایه پیش‌فرض بر اساس محتویات موجود در فهرست /etc/skel که شامل تمام اصول اولیه پروفایل است، مدل‌سازی می‌شود.

اگر سرور شما خانه چند کاربر است، باید به مجوزهای دایرکتوری خانه کاربر توجه زیادی داشته باشید تا از محرمانه بودن اطمینان حاصل کنید. به طور پیش فرض، دایرکتوری های خانگی کاربر در اوبونتو با مجوزهای خواندن/اجرای جهانی ایجاد می شوند. این بدان معنی است که همه کاربران می توانند محتویات فهرست های اصلی کاربران دیگر را مرور کرده و به آنها دسترسی داشته باشند. این ممکن است برای محیط شما مناسب نباشد.

    برای تأیید مجوزهای دایرکتوری اصلی کاربر فعلی خود، از نحو زیر استفاده کنید:

    ls -ld /home/username

    خروجی زیر نشان می دهد که دایرکتوری /home/username دارای مجوزهای قابل خواندن در جهان است:

    drwxr-xr-x 2 نام کاربری نام کاربری 4096 2007-10-02 20:03 نام کاربری

    با استفاده از دستور زیر می توانید مجوزهای خواندنی جهان را حذف کنید:

    sudo chmod 0750 /home/username

    برخی از افراد تمایل دارند از گزینه بازگشتی (-R) بی رویه استفاده کنند که تمام پوشه ها و فایل های فرزند را تغییر می دهد، اما این ضروری نیست و ممکن است نتایج نامطلوب دیگری به همراه داشته باشد. دایرکتوری والد به تنهایی برای جلوگیری از دسترسی غیرمجاز به هر چیزی که زیر والد است کافی است.

    یک رویکرد بسیار کارآمدتر برای این موضوع، اصلاح مجوزهای پیش‌فرض جهانی adduser هنگام ایجاد پوشه‌های خانگی کاربر است. به سادگی فایل /etc/adduser.conf را ویرایش کنید و متغیر DIR_MODE را به چیزی مناسب تغییر دهید، به طوری که همه فهرست های خانه جدید مجوزهای صحیح را دریافت کنند.

    پس از تصحیح مجوزهای دایرکتوری با استفاده از هر یک از تکنیک های ذکر شده قبلی، نتایج را با استفاده از نحو زیر تأیید کنید:

    ls -ld /home/username

    نتایج زیر نشان می دهد که مجوزهای قابل خواندن در جهان حذف شده اند:

    drwxr-x--- 2 نام کاربری نام کاربری 4096 2007-10-02 20:03 نام کاربری

سیاست رمز عبور

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

حداقل طول رمز عبور

به‌طور پیش‌فرض، اوبونتو به حداقل طول رمز عبور 6 کاراکتری و همچنین برخی بررسی‌های اولیه آنتروپی نیاز دارد. این مقادیر در فایل /etc/pam.d/common-password کنترل می‌شوند که در زیر مشخص شده است.

رمز عبور pam_unix.so مبهم sha512

اگر می خواهید حداقل طول را روی 8 کاراکتر تنظیم کنید، متغیر مناسب را به min=8 تغییر دهید. اصلاح در زیر مشخص شده است.

رمز عبور pam_unix.so مبهم sha512 minlen=8

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

انقضای رمز عبور

هنگام ایجاد حساب‌های کاربری، باید حداقل و حداکثر سن گذرواژه را در نظر بگیرید که کاربران را مجبور می‌کند پسوردهای خود را پس از منقضی شدن تغییر دهند.

    برای مشاهده آسان وضعیت فعلی یک حساب کاربری، از نحو زیر استفاده کنید:

    sudo chage -l نام کاربری

    خروجی زیر حقایق جالبی را در مورد حساب کاربری نشان می دهد، یعنی اینکه هیچ سیاستی اعمال نشده است:

    آخرین تغییر رمز عبور: 20 ژانویه 2015 گذرواژه منقضی می شود: هرگز رمز عبور غیرفعال: هرگز حساب منقضی نمی شود: هرگز حداقل تعداد روز بین تغییر رمز عبور: 0 حداکثر روز بین تغییر رمز عبور: 99999 تعداد روزهای هشدار قبل از انقضای رمز عبور: 7

    برای تنظیم هر یک از این مقادیر، به سادگی از نحو زیر استفاده کنید و دستورات تعاملی را دنبال کنید:

    sudo نام کاربری را تغییر دهید

    در زیر همچنین نمونه ای از نحوه تغییر دستی تاریخ انقضا (-E) به 01/31/2015، حداقل سن رمز عبور (-m) از 5 روز، حداکثر سن رمز عبور (-M) 90 روز، عدم فعالیت وجود دارد. دوره (-I) 5 روز پس از انقضای رمز عبور، و یک دوره زمانی هشدار (-W) 14 روز قبل از انقضای رمز عبور:/home/username/.ssh/authorized_keys .

    دایرکتوری .ssh/ را در پوشه اصلی کاربر حذف یا تغییر نام دهید تا از قابلیت های بیشتر احراز هویت SSH جلوگیری کنید.

    حتماً اتصالات SSH ایجاد شده توسط کاربر غیرفعال را بررسی کنید، زیرا ممکن است آنها اتصالات ورودی یا خروجی موجود داشته باشند. هر که پیدا شد را بکش

    چه کسی | نام کاربری grep (برای دریافت ترمینال pts/#) sudo pkill -f pts/#

    دسترسی SSH را فقط به حساب های کاربری که باید آن را داشته باشند محدود کنید. به عنوان مثال، می توانید گروهی به نام "sshlogin" ایجاد کنید و نام گروه را به عنوان مقدار مرتبط با متغیر AllowGroups که در فایل /etc/ssh/sshd_config قرار دارد اضافه کنید.

    AllowGroups sshlogin

    سپس کاربران SSH مجاز خود را به گروه "sshlogin" اضافه کنید و سرویس SSH را مجددا راه اندازی کنید.

    sudo adduser نام کاربری sshlogin sudo systemctl sshd.service را مجددا راه اندازی کنید

    احراز هویت پایگاه داده کاربر خارجی

    اکثر شبکه های سازمانی به احراز هویت متمرکز و کنترل های دسترسی برای همه منابع سیستم نیاز دارند. اگر سرور خود را برای احراز هویت کاربران در برابر پایگاه‌های داده خارجی پیکربندی کرده‌اید، مطمئن شوید که حساب‌های کاربری خارجی و محلی را غیرفعال کنید. به این ترتیب مطمئن می شوید که احراز هویت مجدد محلی امکان پذیر نیست.

در این آموزش به نحوه حذف یک کاربر لینوکس به همراه داده ها و دایرکتوری خانگی او خواهیم پرداخت.

اگر شما یک مدیر سیستم در یک شرکت بزرگ هستید، به احتمال زیاد حذف کاربران لینوکس یک کار نسبتاً رایج برای شماست. پس از غیر ضروری شدن حساب کاربری یا خروج کاربر از سازمان، حساب کاربری وی باید حذف شود تا حفره های امنیتی باقی نماند.

هنگام حذف کاربران لینوکس، همچنین مهم است که فهرست اصلی آنها را حذف کنید تا فضای ذخیره سازی برای کاربران جدید و فایل های آنها آزاد شود. ابتدا نحوه حذف یک کاربر لینوکس با استفاده از ترمینال را بررسی خواهیم کرد، سپس در مورد نحوه انجام این کار در رابط گرافیکی یکی از محبوب ترین توزیع ها - اوبونتو صحبت خواهیم کرد.

برای انجام تمرین در یک محیط واقعی، بیایید دو کاربر lostt و lostt1 را به همراه فهرست‌های اصلی آنها ایجاد کرده و سپس آنها را حذف کنیم:

از دست دادن اضافه کننده
$ passwd گم شد

adduser lostt1
$passwd lostt1

در اینجا دستور adduser برای ایجاد یک حساب کاربری و passwd برای ایجاد رمز عبور استفاده می شود.

بیایید نحوه حذف یک کاربر لینوکس در ترمینال را بررسی کنیم. برای این کار از دستور - deluser در سیستم های دبیان و مشتق و در RedHat - userdel استفاده کنید. بیایید نگاهی دقیق تر به این دو ابزار کمکی بیندازیم.

شرح هذیان

دستور deluser بسیار ساده است:

کاربر پارامترهای $deluser

تنظیمات فرمان deluser در فایل /etc/deluser.conf قرار دارد و مشخص می کند که چه کاری باید با پوشه و فایل های اصلی کاربر انجام شود.

با اجرای دستور می توانید این تنظیمات را مشاهده و تغییر دهید:

vi /etc/deluser.conf

بیایید نگاهی دقیق تر به این تنظیمات بیندازیم:

  • REMOVE_HOME- فهرست اصلی کاربر را حذف کنید
  • REMOVE_ALL_FILES- حذف تمامی فایل های کاربر
  • پشتیبان گیری- پشتیبان گیری از فایل های کاربر
  • BACKUP_TO- پوشه پشتیبان
  • ONLY_IF_EMPTY- یک گروه کاربری را در صورت خالی بودن حذف کنید.

این تنظیمات رفتار پیش‌فرض ابزار را هنگام حذف کاربر تعیین می‌کنند، البته می‌توان با استفاده از پارامترهای دستور، آنها را نادیده گرفت.

پارامترهای زیر پشتیبانی می شوند، آنها مشابه تنظیمات هستند، اما گزینه های بیشتری وجود دارد:

  • --سیستم- حذف فقط در صورتی که کاربر سیستم باشد
  • --پشتیبان گیری- از فایل های کاربر یک نسخه پشتیبان تهیه کنید
  • -- پشتیبان گیری به- پوشه برای پشتیبان گیری
  • --حذف-خانه- پوشه خانه را حذف کنید
  • --حذف-همه-فایل ها- حذف تمام فایل های کاربر در سیستم فایل

توضیحات userdel

ابزار userdel کمی متفاوت کار می کند، هیچ فایل تنظیماتی در اینجا وجود ندارد، اما گزینه هایی وجود دارد که با آن می توانید به ابزار بگویید چه کاری انجام دهد. نحو مشابه است:

$ userdel پارامترهای کاربر

  • -f، -- نیرو- حذف اجباری، حتی اگر کاربر هنوز وارد سیستم شده باشد
  • -r، -- حذف- دایرکتوری خانگی کاربر و فایل های او را در سیستم حذف کنید.
  • -Z- تمام اشیاء SELinux را برای این کاربر حذف کنید.

برای حذف کاربر از سرور بهتر است از روش پیشرفته ای استفاده کنید که در ادامه به بررسی آن می پردازیم. هنگامی که کاربران از سرور استفاده می کنند، برنامه ها و خدمات مختلفی را راه اندازی می کنند. یک کاربر تنها در صورتی می تواند به درستی حذف شود که وارد سرور نشده باشد و تمام برنامه هایی که از طرف او اجرا می شوند متوقف شوند، زیرا برنامه ها می توانند از فایل های مختلف متعلق به کاربر استفاده کنند و این باعث می شود که آنها حذف نشوند. بر این اساس، فایل های کاربر به طور کامل حذف نمی شوند و برای مسدود شدن سیستم باقی می مانند.

مسدود کردن حساب کاربری

می توانید از ابزار passwd برای قفل کردن حساب کاربری استفاده کنید. این کار دسترسی کاربر به سیستم را ممنوع می کند و از شروع فرآیندهای جدید جلوگیری می کند:

دستور passwd را با گزینه --lock اجرا کنید:

passwd -- از دست دادن قفل

passwd: اطلاعات انقضای رمز عبور تغییر کرده است.

تمام فرآیندهای کاربر در حال اجرا را از بین ببرید

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

بیایید فرآیندها را با استفاده از pgrep پیدا کنیم:

با ارسال pid هر کدام از آنها به دستور ps، می توانید با جزئیات بیشتر ببینید که این فرآیندها چیستند:

ps -f --pid $(pgrep -u lostt)

UID PID PPID C STIME TTY STAT TIME CMD
باخت 14684 14676 0 22:15 امتیاز/2 س 0:00 -باش
lostt 14735 14684 0 22:15 pts/2 S+ 0:00 vi text

حالا که مطمئن شدید هیچ چیز مهمی در آنجا وجود ندارد، می توانید با استفاده از دستور killall همه فرآیندها را بکشید:

Killall -9 -u lostt

گزینه -9 به برنامه می گوید که یک سیگنال پایانی SIGKILL به این فرآیندها ارسال کند و -u نام کاربری را مشخص می کند.

در سیستم های مبتنی بر Red Hat، برای استفاده از killall باید بسته psmisc را نصب کنید:

sudo yum psmisc را نصب کنید

پشتیبان گیری از اطلاعات کاربر

این به هیچ وجه ضروری نیست، اما برای یک پروژه جدی، ایجاد یک نسخه پشتیبان از فایل های کاربر ایده بدی نخواهد بود، به خصوص اگر ممکن است فایل های مهمی در آنجا وجود داشته باشد. برای انجام این کار، می توانید به عنوان مثال از ابزار tar استفاده کنید:

tar jcvf /user-backups/losst-backup.tar.bz2 /home/losst

حذف یک حساب کاربری

اکنون که همه چیز آماده است، اجازه دهید شروع به حذف کاربر لینوکس کنیم. در هر صورت، ما به صراحت نشان خواهیم داد که باید فایل‌ها و فهرست اصلی کاربر را حذف کنیم. برای دبیان:

deluser --remove-home lostt

userdel -- حذف lostt

اگر می‌خواهید تمام فایل‌های متعلق به یک کاربر در سیستم را حذف کنید، از گزینه --remove-all-files استفاده کنید، فقط مراقب آن باشید، زیرا فایل‌های مهم را می‌توان رونویسی کرد:

deluser --remove-all-files lostt

اکنون کاربر به همراه فایل ها و فهرست اصلی خود به طور کامل از سیستم شما حذف شده است.

حذف کاربر در اوبونتو

باز کن پارامترهای سیستم:

آیتم قابل دسترسی حساب ها:

همانطور که می بینید، همه عملکردها در حال حاضر در دسترس نیستند و خاکستری هستند. برای فعال کردن آنها روی دکمه کلیک کنید باز کردن قفلو رمز کاربری را وارد کنید.

حالا برای حذف یک کاربر در لینوکس کافیست با ماوس روی آن کلیک کنید و سپس روی نماد منهای کلیک کنید.

در پنجره ای که باز می شود، می توانید انتخاب کنید که با فایل های کاربر چه کاری انجام دهید:

طبیعتا فقط پوشه home حذف می شود، ما در مورد همه فایل ها صحبت نمی کنیم. و برای حذف صحیح، کاربر نباید در سیستم کار کند.

نتیجه گیری

حذف یک کاربر در لینوکس، صرف نظر از جایی که باید انجام شود، روی سرور یا رایانه خانگی، چندان دشوار نیست. البته، رابط گرافیکی راحت تر است، اما ترمینال، مانند همیشه، گزینه های بیشتری را ارائه می دهد. اگر نظر دیگری در این مورد دارید، لطفاً نظر بدهید!

سیستم عامل لینوکس دارای ویژگی های امنیتی بسیار خوبی است، اما یکی از مهم ترین آنها سیستم مجوز فایل است. لینوکس، به عنوان پیرو ایدئولوژی هسته لینوکس، بر خلاف ویندوز، در ابتدا به عنوان یک سیستم چند کاربره طراحی شده بود، بنابراین حقوق دسترسی به فایل در لینوکس به خوبی در نظر گرفته شده است.

و این بسیار مهم است، زیرا دسترسی محلی به فایل ها برای همه برنامه ها و همه کاربران به ویروس ها اجازه می دهد تا به راحتی سیستم را از بین ببرند. اما کاربران جدید ممکن است مجوزهای فایل جدید در لینوکس را بسیار گیج کننده بدانند که با آنچه ما در ویندوز به دیدن آن عادت کرده ایم بسیار متفاوت است. در این مقاله سعی خواهیم کرد نحوه عملکرد مجوزهای فایل در لینوکس و همچنین نحوه تغییر و تنظیم آنها را درک کنیم.

در ابتدا، هر فایل دارای سه پارامتر دسترسی بود. آن ها اینجا هستند:

  • خواندن- به شما امکان دریافت محتویات فایل را می دهد، اما اجازه نوشتن را نمی دهد. برای یک دایرکتوری، به شما امکان می دهد لیستی از فایل ها و فهرست های موجود در آن را دریافت کنید.
  • رکورد- به شما امکان می دهد داده های جدید را در یک فایل بنویسید یا داده های موجود را تغییر دهید و همچنین به شما امکان می دهد فایل ها و دایرکتوری ها را ایجاد و تغییر دهید.
  • کارایی- اگر برنامه ای دارای پرچم اجرا نباشد، نمی توانید آن را اجرا کنید. این ویژگی برای همه برنامه ها و اسکریپت ها تنظیم شده است که با کمک آن سیستم می تواند بفهمد که این فایل باید به عنوان یک برنامه اجرا شود.

اما همه این حقوق اگر به یکباره برای همه کاربران اعمال شود بی معنی خواهد بود. بنابراین، هر فایل دارای سه دسته کاربری است که می توانید ترکیبات مختلفی از حقوق دسترسی را برای آنها تنظیم کنید:

  • مالک- مجموعه ای از حقوق برای صاحب فایل، کاربری که آن را ایجاد کرده یا اکنون توسط مالک آن تنظیم شده است. به طور معمول مالک تمام حقوق، خواندن، نوشتن و اجرا را دارد.
  • گروه- هر گروه کاربری که در سیستم وجود دارد و با یک فایل مرتبط است. اما این فقط می تواند یک گروه باشد و معمولاً گروه مالک است، اگرچه می توان گروه دیگری را به فایل اختصاص داد.
  • باقی مانده- همه کاربران به جز مالک و کاربران موجود در گروه فایل.

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

اما با گذشت زمان، چنین سیستمی ناکافی شد و چندین پرچم دیگر اضافه شد که به شما امکان می‌دهد فایل‌ها را غیرقابل تغییر کنید یا آن‌ها را به‌عنوان ابرکاربر اجرا کنید، در زیر به آنها نگاه می‌کنیم:

مجوزهای ویژه فایل در لینوکس

برای اینکه به کاربران عادی اجازه داده شود برنامه ها را از طرف ابرکاربر بدون اطلاع از رمز عبور او اجرا کنند، چیزی مانند بیت های SUID و SGID اختراع شد. بیایید با جزئیات بیشتری به این قدرت ها نگاه کنیم.

  • SUID- اگر این بیت تنظیم شده باشد، پس از اجرای برنامه، شناسه کاربری که از او راه اندازی شده است با شناسه مالک فایل جایگزین می شود. در واقع، این به کاربران عادی اجازه می دهد تا برنامه ها را به عنوان superuser اجرا کنند.
  • SGID- این پرچم به روشی مشابه کار می کند، تنها تفاوت این است که کاربر به جای گروه هایی که واقعاً به آنها تعلق دارد، عضو گروهی است که فایل با آن مرتبط است. اگر پرچم SGID روی یک دایرکتوری تنظیم شده باشد، تمام فایل های ایجاد شده در آن با گروه دایرکتوری مرتبط خواهند شد، نه با گروه کاربر. این رفتار برای سازماندهی پوشه های مشترک استفاده می شود.
  • بیت چسبنده- از این بیت برای ایجاد پوشه های مشترک نیز استفاده می شود. در صورت نصب، کاربران فقط می توانند فایل ها را بسازند، بخوانند و اجرا کنند، اما نمی توانند فایل های متعلق به سایر کاربران را حذف کنند.

حال بیایید نحوه مشاهده و تغییر مجوزهای فایل در لینوکس را بررسی کنیم.

نحوه مشاهده مجوزهای فایل در لینوکس

البته، شما می توانید مجوزهای فایل را در لینوکس با استفاده از یک مدیر فایل مشاهده کنید. همه آنها از این عملکرد پشتیبانی می کنند، اما این اطلاعات ناقص را در اختیار شما قرار می دهد. برای جزئیات بیشتر در مورد همه پرچم ها، از جمله پرچم های خاص، باید از دستور ls با پارامتر -l استفاده کنید. تمام فایل های دایرکتوری لیست می شوند و تمام ویژگی ها و بیت ها در آنجا نشان داده می شوند.

برای اطلاع از حقوق یک فایل لینوکس، دستور زیر را در پوشه ای که فایل در آن قرار دارد اجرا کنید:

داش ها مسئول مجوزهای فایل در لینوکس هستند. اولی نوع فایل است که در مقاله ای جداگانه به آن پرداخته شده است. سپس گروه هایی از حقوق وجود دارد، ابتدا برای مالک، برای گروه و برای هر کس دیگری. فقط نه خط تیره برای مجوز و یک خط تیره برای نوع وجود دارد.

بیایید نگاهی دقیق‌تر به معنای مقادیر مشروط پرچم‌های حقوق بیندازیم:

  • --- - به هیچ وجه حقوقی وجود ندارد.
  • --ایکس- فقط اجرای فایل به عنوان یک برنامه مجاز است، اما تغییر یا خواندن آن ممنوع است.
  • -w-- فقط نوشتن و تغییر فایل مجاز است.
  • -wx- اصلاح و اجرا مجاز است، اما در مورد دایرکتوری، نمی توانید محتویات آن را مشاهده کنید.
  • r--- حقوق فقط خواندنی؛
  • r-x- فقط خواندن و اجرا، بدون اجازه نوشتن.
  • rw-- حقوق خواندن و نوشتن، اما بدون اجرا.
  • rwx- کلیه حقوق؛
  • -- ها- بیت SUID یا SGID تنظیم شده است، اولی در فیلد برای مالک، دومی برای گروه نمایش داده می شود.
  • --t- sticky-bit نصب شده است، به این معنی که کاربران نمی توانند این فایل را حذف کنند.

در مثال ما، فایل test1 دارای مجوزهای برنامه معمولی است، مالک می تواند همه کارها را انجام دهد، گروه فقط می تواند بخواند و اجرا کند و بقیه فقط می توانند اجرا کنند. برای test2، پرچم‌های SUID و SGID علاوه بر این تنظیم می‌شوند. و برای پوشه test3 Sticky-bit نصب شده است. فایل test4 در دسترس همه است. اکنون می دانید که چگونه حقوق یک فایل لینوکس را مشاهده کنید.

نحوه تغییر مجوزهای فایل در لینوکس

برای تغییر مجوزهای فایل در لینوکس می توانید از ابزار chmod استفاده کنید. این به شما امکان می دهد همه پرچم ها، از جمله پرچم های خاص را تغییر دهید. بیایید به نحو آن نگاه کنیم:

فایل پرچم عمل دسته بندی $ chmod options

گزینه‌ها اکنون به ما علاقه‌ای نخواهند داشت، جز شاید تنها یکی. با گزینه -R می توانید برنامه را مجبور کنید تا تغییرات را به صورت بازگشتی در همه فایل ها و دایرکتوری ها اعمال کند.

  • تو- صاحب فایل؛
  • g- گروه فایل؛
  • o- سایر کاربران

این عمل می تواند یکی از دو مورد باشد، یا پرچم "+" را اضافه کنید یا پرچم "-" را حذف کنید. در مورد خود حقوق دسترسی، آنها شبیه به خروجی ابزار ls هستند: r - read، w - write، x - execute، s - suid/sgid، بسته به دسته‌ای که آن را تنظیم می‌کنید، t - چسبناک می‌شود. -بیت به عنوان مثال، همه کاربران به فایل test5 دسترسی کامل دارند:

chmod ugo+rwx test5

یا همه حقوق را از گروه و سایر کاربران سلب خواهیم کرد:

chmod go-rwx test5

بیایید به گروه این حق را بدهیم که بخواند و اجرا کند:

chmod g+rx test5

برای سایر کاربران فقط بخوانید:

برای فایل test6، SUID را تنظیم کنید:

و برای test7 - SGID:

ببینیم چی شد:

همانطور که می بینید، تغییر مجوز فایل در لینوکس بسیار ساده است. علاوه بر این، می توانید حقوق اولیه را با استفاده از مدیر فایل تغییر دهید.

نتیجه گیری

این همه است، اکنون شما نه تنها می دانید که مجوزهای فایل در لینوکس چیست، بلکه می دانید چگونه آنها را مشاهده کنید، و حتی چگونه آنها را تغییر دهید. این موضوع بسیار مهمی است که مبتدیان برای استفاده کاملتر از سیستم خود باید آن را درک کنند. اگر سوالی دارید، در نظرات بپرسید!

برای نتیجه گیری، می خواهم یک ویدیوی خوب در مورد حقوق دسترسی در لینوکس ارائه کنم:

گزینه -c - یک نظر به کاربر اضافه کنید
گزینه -g sudo - یک کاربر به گروه sudo اضافه کنید.
گزینه -s پوسته کاربر را روی /bin/bash تنظیم می کند

گزینه -d برای تعیین پوشه اصلی کاربر استفاده می شود
گزینه -m نشان می دهد که پوشه باید فورا ایجاد شود:

Sudo useradd -c "نظر برای کاربر" -g sudo -d /home/NameUser -m -s /bin/bash NameUser

یک رمز عبور برای کاربر NameUser تنظیم کنید:

Sudo passwd NameUser

با استفاده از دستور adduser یک کاربر اضافه کنید

sudo useradd -c "نظر برای کاربر" -g sudo -d /home/NameUser -m -s /bin/bash NameUser

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

تغییر رمز عبور کاربر

sudo passwd NameUser

یک کاربر به گروه sudo اضافه کنید

usermod -a -G sudo NameUser

یک کاربر/گروه کاربر را مستقیماً به Sudores اضافه کنید:

بیایید فایل را ویرایش کنیم /etc/sudores.tmpویرایشگر visudo

سودو ویسودو

اجازه دهید به کاربر نامگذاری شده حقوق ریشه بدهیم نام کاربری

نام کاربری ALL=(ALL:ALL) ALL

بیایید به گروهی از کاربران حقوق ریشه بدهیم اسم گروهبا افزودن یک خط به فایل sudoers -

نام_گروه ALL=(ALL:ALL) ALL

کاربر و گروه هایش

ما به گروه های موجود در میزبان نگاه می کنیم

گربه /etc/group

بررسی وجود یک گروه گروه نمونه در میزبانی که در آن examplegroup گروهی است که شما به آن علاقه دارید

Grep examplegroup /etc/group

ما بررسی می کنیم / متوجه می شویم که کاربر به کدام گروه ها تعلق دارد (و همچنین uid او، gid)

شناسه NameUser

یک نام کاربری موجود NameUser را به یک گروه نمونه گروه موجود اضافه کنید

Usermod -g نمونه گروه NameUser

حذف یک کاربر اوبونتو

ما از دستور استفاده می کنیم، پوشه کاربر حذف نمی شود

Sudo userdel NameUser

در صورت لزوم پوشه را حذف کنید

Sudo rm -r /home/NameUser/

ما بررسی می کنیم که آیا کاربر حذف شده است یا خیر

Sudo grep -R NameUser /etc/passwd --color

لیست تمام کاربران محلی

sudo cat /etc/passwd sudo cat /etc/shadow

برای نمایش اطلاعات دقیق تر در مورد کاربر، بسته را نصب کنید انگشت

Sudo apt-get install finger

برای مشاهده اطلاعات کاربر NameUser، دستور را اجرا کنید

Finger NameUser

برای خروجی اطلاعات مربوط به همه کاربران به یک فایل infoaboutalluser.txtبیایید یک اسکریپت بسازیم انگشت.ش

#!/bin/bash n=`cat /etc/passwd | cut -d: -f1` برای i در $n; اکو انجام دهید "=============================================== ============================================ "انگشت $i انجام شد

بیایید اسکریپت را اجرا کنیم انگشت.شو محتویات آن را در یک فایل ذخیره کنید infoaboutalluser.txt

./finger.sh infoaboutalluser.txt

لیست تمام کاربران ممتاز:

egrep ":0:0:" /etc/passwd

یا ممتاز نیست

Egrep -v ":0:0:" /etc/passwd

لیست تمام کاربرانی که نام آنها با حروف abcd شروع می شود:

Cat /etc/passwd | grep "^.*"

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

بیایید با یک انحراف کوچک شروع کنیم. سیستم حقوق اداری لینوکس به سیستم عامل یونیکس باز می گردد و بنابراین اشتراکات زیادی با سایر سیستم های مشابه یونیکس دارد: BSD، Solaris، MacOS. در عین حال، توزیع‌های مختلف ویژگی‌های پیاده‌سازی خاص خود را از جنبه‌های خاص دارند، بنابراین ما مثال‌های خاصی را در مورد خانواده اوبونتو ارائه خواهیم داد، اما آگاهی از قوانین کلی به شما امکان می‌دهد به راحتی محیط هر سیستم‌عامل مشابه یونیکس را درک کنید.

کاربر دارای حقوق مدیریت کامل در لینوکس است. ریشه، که حقوق آنها قابل محدود نیست، بنابراین کار روزمره از طرف این کاربر بسیار نامطلوب است: اقدامات بی دقت کاربر می تواند منجر به آسیب به سیستم شود و به خطر انداختن این حساب باعث دسترسی نامحدود مهاجم به سیستم می شود.

بنابراین، یک طرح متفاوت در لینوکس اتخاذ شده است: همه کاربران، از جمله مدیران، تحت یک حساب کاربری محدود کار می کنند، و برای انجام اقدامات اداری از یکی از مکانیسم های افزایش حقوق استفاده می کنند. برای انجام این کار، می توانید حقوق را با استفاده از ابزار افزایش دهید سودویا بدون پایان دادن به جلسه جاری با استفاده از دستور، به عنوان یک ابرکاربر (روت) وارد شوید سو. بسیاری از مردم به اشتباه این دو مکانیسم را اشتباه می گیرند، بنابراین اجازه دهید آنها را با جزئیات بیشتری بررسی کنیم.

تیم سوبه شما این امکان را می دهد که بدون پایان دادن به جلسه فعلی به عنوان کاربر دیگری (نه لزوماً روت) وارد شوید. پس دستور:

سو پتروف

به شما این امکان را می دهد که به عنوان کاربر petrov وارد شوید، محیط کاربری (پوشه خانه) نیز به این کاربر تغییر خواهد کرد.

تیم سوبه شما امکان می دهد بدون تعیین نام کاربری وارد حساب کاربری خود شوید ریشه"الف. با این حال، این روش یک اشکال قابل توجه دارد - برای ورود از طرف یک کاربر دیگر، باید رمز عبور او را بدانید. اگر چندین سرپرست دارید، هر یک از آنها رمز عبور ابر کاربر را می دانند و شما نمی توانید حقوق آنها را محدود کند.

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

اگر بخواهیم حقوق در اوبونتو را از این طریق افزایش دهیم چه اتفاقی می افتد؟ ما نمی توانیم کاری انجام دهیم زیرا رمز عبور کاربر را نمی دانیم ریشه، در عین حال، هیچ کس مانع ورود ما به عنوان یک کاربر متفاوت نمی شود.

"صبر کن!" - کاربر دیگری می گوید: "آیا به اولین کاربر ایجاد شده، که در حین نصب مشخص می کنیم، حقوق داده نمی شود؟" از طرف یک کاربر دیگر، ما دچار شکست خواهیم شد.

در اینجا ما به مکانیسم دوم برای افزایش حقوق نزدیک می شویم - ابزار سودو. با این حال، قبل از حرکت به مطالعه آن، شایان ذکر است: حقوق superuser (ریشه) در اوبونتو متعلق به حساب ریشه است که به طور پیش فرض غیرفعال است. بنابراین، با استفاده از دستور، مجوزها را افزایش دهید سوممکن به نظر نمی رسد

مکانیسم اصلی برای افزایش حقوق در اوبونتو، ابزار است سودو. این ابزار به شما این امکان را می دهد که برای فرمان در حال اجرا، حقوق را به سطح سوپرکاربر ارتقا دهید، اما نیازی نیست که کاربر رمز عبور خود را وارد کند. پس از آن ابزار بررسی می کند که آیا این کاربر حق اجرای این دستور را بر روی این میزبان با حقوق superuser دارد یا خیر و در صورت موفقیت آمیز بودن بررسی ها، آن را اجرا می کند.

مهم است!تفاوت اصلی سواز جانب سودوچه چیزی را خدمت می کند سوبه شما اجازه می دهد تا کاربر فعلی را به روت تغییر دهید، که نیاز به یک حساب کاربری فعال در سیستم و دانش رمز عبور آن دارد. سودوبه شما این امکان را می دهد که بدون تعیین رمز عبور ابرکاربر، حقوق مربوط به فرمان اجرا شده را افزایش دهید.

یکی دیگر از شرایط مهم این است که هنگام استفاده از خط لوله یا تغییر مسیر با حقوق ابرکاربر، تنها قسمت اول دستور اجرا می شود، به عنوان مثال در طراحی:

Sudo command1 | تیم 2

با حقوق ریشه فقط اجرا خواهد شد تیم 1. و تیم

Sudo cat sources.list > /etc/apt/sources.list

خطای حقوق دسترسی را می دهد زیرا ورودی وارد شده است /etc/apt/sources.listبا حقوق کاربر عادی رخ خواهد داد.

برای انجام ترکیب های پیچیده از دستورات، می توانید با دستور به حالت superuser بروید

که شبیه بالا بردن حقوق با دستور است سو، با این حال، این تغییری در محیط کاربر ایجاد نمی کند و دایرکتوری کاربر فعلی به عنوان فهرست اصلی استفاده می شود که راحت و ایمن است. هر مدیر فقط به فهرست اصلی خود دسترسی خواهد داشت.

اکنون زمان آن است که بفهمیم چه کسی حق استفاده از فرصت ها را دارد سودوو تا چه حد. فایل مسئول تنظیمات این ابزار است /etc/sudoers، با وجود این واقعیت که این یک فایل پیکربندی معمولی است، برای ویرایش آن استفاده از دستور بسیار توصیه می شود:

سودو ویسودو

این دستور فایل را قفل می کند و نحو را بررسی می کند، در غیر این صورت به دلیل اشتباه تایپی در خطر از دست دادن دسترسی مدیریت به رایانه شخصی خود هستید.

سینتکس این فایل بسیار ساده است. به عنوان مثال، در انتهای فایل یک ورودی وجود دارد:

%admin ALL=(ALL) ALL

این بدان معناست که کاربران گروه مدیرمی تواند هر دستوری را بر روی هر میزبانی، از طرف هر کاربری اجرا کند. همانطور که می توانیم به راحتی با استفاده از دستور تأیید کنیم گروه هادر مورد ما کاربر آندریمتعلق به گروه است مدیر، و کاربر پتروفخیر

اما تمام مزایای این ابزار در توانایی پیکربندی انعطاف پذیر پارامترها برای به دست آوردن حقوق در هر مورد خاص نهفته است. مثلا:

پتروف ubuntu-lts=(andrey) ALL

این خط به کاربر اجازه می دهد پتروفهر دستوری را روی هاست اجرا کنید ubuntu-ltsاز طرف کاربر آندری. هنگام تعیین دستورات، باید مسیر کامل آنها را مشخص کنید که می توانید آن را با استفاده از دستور پیدا کنید که

به عنوان مثال، ما می خواهیم به کاربران اجازه دهیم پتروفو سیدوروفکامپیوتر را خاموش و راه اندازی مجدد کنید، و همچنین وظایف را حذف کنید. با این حال، این دستورات نباید نیاز به وارد کردن رمز عبور داشته باشند.

یکی دیگر از ویژگی های خوب سودو ایجاد نام مستعار است، بنابراین در مورد ما به آن اضافه می کنیم /etc/sudoersخطوط زیر:

User_Alias ​​USERGROUP1 = petrov، sidorov
Cmnd_Alias ​​CMDGROUP1 = /bin/kill، /sbin/reboot، /sbin/shutdown

با این کار دو نام مستعار ایجاد کردیم USERGROUP1، که در آن کاربران مورد نیاز خود را گنجانده ایم و CMDGROUP1با مجموعه‌ای از دستورات ضروری، می‌توانیم متعاقباً فقط نام‌های مستعار را بدون تأثیر بر تمام قوانینی که می‌توان از آنها استفاده کرد، ویرایش کرد. سپس یک قانون اضافه می کنیم:

USERGROUP1 ALL = (ALL) NOPASSWD:СMDGROUP1

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

علاوه بر دو مورد فوق، نام مستعار نیز برای نام میزبان و کاربرانی که از طرف آنها مجاز به اجرای دستورات هستند در دسترس است، به عنوان مثال:

Host_Alias ​​WWW = webserver1، webserver2
Runas_Alias ​​WWW = www-data، www-developer

USERGROUP1 WWW = (WWW) ALL

مجموعه سوابق داده شده به کاربران اجازه ورود می دهد USERGROUP1هر دستوری را از طرف کاربران اجرا کنید www-dataو www-توسعه دهندهدر وب سرورهای این شرکت

در نهایت، بیایید ببینیم اگر هنوز به یک حساب ریشه نیاز است، چه کاری باید انجام دهیم. ساده است، برای فعال کردن آن، فقط یک رمز عبور تنظیم کنید:

ریشه سودو passwd

با دستور زیر می توانید حساب superuser را دوباره مسدود کنید:

ریشه Sudo passwd -l

به یاد داشته باشید که تمام کارهای اداری در اوبونتو را می توان با استفاده از ابزار sudo انجام داد، بنابراین تا زمانی که کاملاً ضروری نیست، حساب کاربری ریشه را فعال نکنید!

همانطور که می بینید، اوبونتو دارای قابلیت های مدیریت حقوق مدیریتی غنی است که به شما امکان می دهد به طور انعطاف پذیر حقوق را بین چندین مدیر توزیع کنید و همچنین امکان افزایش حقوق را برای برخی از کاربران فراهم کنید و این کار را به طور کارآمد و ایمن انجام دهید.