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

بعد از نصب OpenBSD برای ارتباط بهتر با سیستم، نیازمند داشتن اطلاعاتی هستید که در ادامه به آن می پردازیم. در بخش اول به ایجاد کاربر جدید در این سیستم عامل می پردازیم و در مباحث آتی به بحث پیکربندی شبکه و بعد از آن کار با صفحه های man برای دریافت اطلاعات بیشتر از فرمان های موجود و در پایان با package و port در OpenBSD آشنا می شوید.

در این مقاله شما با بحث ایجاد کاربر جدید آشنا می شوید، OpenBSD برای ایجاد کاربر جدید دو فرمان دارد یکی adduser و دیگری user. همچنین شما می توانید به صورت دستی و با استفاده از فرمان vipw این کار را انجام دهید که به علت دشواری و غیراستاندارد بودن در این بحث پوشش داده نمی شود. راحت ترین راه برای ایجاد کردن کاربر جدید استفاده از فرمان adduser است. شما می توانید رفتار پیش فرض این فرمان را با ویرایش کردن فایل etc/adduser.conf/ تغییر دهید. این فرمان به صورت دایم فایل های etc/passwd, /etc/group/ و فایل مربوط به پایگاه داده shell را چک می کند. این فرمان با استفاده از متغییر $HOME در زیر شاخه home/ برای کاربر پوشه ای با نام کاربر ایجاد می کند و همچنین می تواند برای ارسال پیغام خوش آمد گویی به کاربران استفاده شود.

در مثال زیر کاربر testuser با استفاده از این فرمان به سیستم اضافه می شود که یک پوشه home در مسیر /home/testuser دارد، عضو گروه guest است و خط فرمان پیش فرض آن /bin/ksh است. این مثال در زیر ارایه شده:

# adduser
Use option “-silent” if you don’t want to see all warnings and questions.
Reading /etc/shells
Check /etc/master.passwd
Check /etc/group
Ok, let’s go.
Don’t worry about mistakes. There will be a chance later to correct any input.
Enter username []: testuser
Enter full name []: Test FAQ User
Enter shell csh ksh nologin sh [ksh]: ksh
Uid [1002]: Enter
Login group testuser [testuser]: guest
Login group is “guest”. Invite testuser into other groups: guest no
[no]: no
Login class authpf daemon default staff [default]: Enter
Enter password []: Type password, then Enter
Enter password again []: Type password, then Enter
Name: testuser
Password: ****
Fullname: Test FAQ User
Uid: 1002
Gid: 31 (guest)
Groups: guest
Login Class: default
HOME: /home/testuser
Shell: /bin/ksh
OK? (y/n) [y]: y
Added user “testuser”
Copy files from /etc/skel to /home/testuser
Add another user? (y/n) [y]: n
Goodbye!

حال برای پاک کردن کاربر ایجا شده باید از فرمان rmuser استفاده کنید. این فرمان هر آنچه که به کاربر موردنظر مربوط باشد را پاک می کند از شاخه home کاربر گرفته تا هر ورودی که در فایل crontab داشته است و یا email های کاربر. این فرمان همچنین اطلاعات وارد شده کاربر به فایل های /etc/passwd, /etc/group را هم به صورت خودکار پاک می کند. در مثال زیر کاربری که در مثال قبلی ایجاد شده است پاک می شود. بعد از اجرای فرمان rmuser شما می توانید تعین کنید که آیا شاخه home کاربر مورد نظر پاک شود یا برسرجای خود باقی بماند، البته برای اطمینان از اینکه کاربر به درستی پاک شود سیستم خط مربوط به کاربر که در فایل /etc/passwd قرار دارد را نمایش می دهد و از شما تاییدیه می گیرد. این مثال در زیر نمایش داده شده:

# rmuser
Enter login name for user to remove: testuser
Matching password entry:
testuser:$2a$07$ZWnBOsbqMJ.ducQBfsTKUe3PL97Ve1AHWJ0A4uLamniLNXLeYrEie:1002
:۳۱::۰:۰:Test FAQ User:/home/testuser:/bin/ksh
Is this the entry you wish to remove? y
Remove user’s home directory (/home/testuser)? y
Updating password file, updating databases, done.
Updating group file: done.
Removing user’s home directory (/home/testuser): done.

اضافه کردن کاربر جدید با استفاده از فرمان user:
این فرمان حالت پرسش و پاسخی که در فرمان adduser وجود دارد را ندارد و برای بخش هایی مثل shell scripting که نیاز به خط فرمان برای اضافه کردن کاربر جدید دارید بسیار مفید است. در زیر یک لیست کامل از این برنامه ها را مشاهده می کنید:

* group(8)
* groupadd(8)
* groupdel(8)
* groupinfo(8)
* groupmod(8)
* user(8)
* useradd(8)
* userdel(8)
* userinfo(8)
* usermod(8)

کار با فرمان user:

فرمان user فقط یک فرمان ساده ای است از سایر فرمان های که در شاخه */usr/sbin/user/ قرار دارند و مدیریت کردن کاربران را انجام می دهد، پس در نتیجه دو فرمان user addو useradd در عمل کار یکسانی انجام می دهند و هیچ تغییری در عملکرد با هم ندارند. فقط به این نکته توجه داشته باشید که فرمان User حالت پرسش و پاسخ که یک تعامل با محیط خط فرمان است را ندارد و راه ساده ای و در عین حال کاربردی برای ایجاد یک کاربر جدید در سیستم است. استفاده از این فرمان کمتر برای شما دلهره آور است. اگر شما پیش فرض این فرمان را بدانید که به صورت خودکار چه مقداری را  تعیین می کند. این تنظیمات در فایل (usermgmt.conf(5 قرار می گیرد و برای مشاهده کردن آن می توانید از فرمان زیر استفاده کنید:

$ user add -D
group users
base_dir /home
skel_dir /etc/skel
shell /bin/csh
inactive 0
expire Null (unset)
range 1000..60000

این پیش فرض ها در همه موارد ایجاد کاربر استفاده می شوند مگر شما در فرمان مقدار دلخواه خود را تعیین کنید که در آن صورت فرمان شما به این پیش فرض ها اولویت دارد. یکی از تقاط ضعف در استفاده از این فرمان این است که رمزعبور به صورت کد نشده نمایش داده می شود که برای امنیت بیشتر باید تمام مرزعبورها به صورت کد شده نمایش داده شود، برای این کار شما به برنامه (encrypt(1 نیاز دارید. در زیر یک مثال از این برنامه را مشاهده می کنید که با استفاده از الگوریتم معروف Blowfish یک رمزعبور کد شده ایجاد می کند، در بخش Enter string کلمه موردنظر خود را وارد کنید و بعد کلید {{کلید|ٍEnter} را فشار دهید تا نتیجه برای شما نمایش داده شود، این مثال در زیر آورده شده است:

$ encrypt -p -b 6
Enter string:
$۲a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq

حال که یک رمزعبور کد شده داریم می توانیم با استفاده از فرمان user کاربر جدید ایجاد کنیم. برای ایجاد کاربر جدید فرمان User را به صورت زیر اجرا کنید:

# user add -p ‘$2a$06$YOdOZM3.4m6MObBXjeZtBOWArqC2.uRJZXUkOghbieIvSWXVJRzlq’ -u 1002 \
-s /bin/ksh -c “Test FAQ User” -m -g guest testuser

فقط به این نکته توجه کنید که خط رمزعبور در بین single quotes قرار دارد. از –m زمانی استفاده کنید که قصد دارید شاخه home برای کاربر ایجاد کنید و فایل های موجود در شاخه /etc/skel را در این شاخه کپی کنید.

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

$ ls -la /home
total 14
drwxr-xr-x 5 root wheel 512 May 12 14:29 .
drwxr-xr-x 15 root wheel 512 Apr 25 20:52 ..
drwxr-xr-x 24 ericj wheel 2560 May 12 13:38 ericj
drwxr-xr-x 2 testuser guest 512 May 12 14:28 testuser
$ id testuser
uid=1002(testuser) gid=31(guest) groups=31(guest)
$ finger testuser
Login: testuser Name: Test FAQ User
Directory: /home/testuser Shell: /bin/ksh
Last login Sat Apr 22 16:05 (EDT) on ttyC2
No Mail.
No Plan.

مشاهده کردن اطلاعات کاربر:
یک فرمان دیگر هم از سری فرمان های user وجود دارد که در زیر روش استفاده از آن را هم مشاهده می کنید:

$ userinfo testuser
login testuser
passwd *
uid 1002
groups guest
change Wed Dec 31 19:00:00 1969
class
gecos Test FAQ User
dir /home/testuser
shell /bin/ksh
expire Wed Dec 31 19:00:00 1969

پاک کردن کاربر ایجاد شده:
در انتها برای پاک کردن کاربر ایجاد شده با استفاده از سری فرمان های user از فرمان userdel به صورت زیر استفاده کنید:

# userdel -r testuser

 اگر قصد دارید شاخه home کاربر به طور کامل پاک شود از بخش r- استفاده کنید ولی اگر قصد دارید فقط کاربر lock شود از سوییچ p- استفاده کنید تا اطلاعات مربوط به کاربر پاک نشود.