خطاهای پیش آمده در لینوکس و راه حل آنها

تجریبات بر طرف سازی خطاهای لینوکس

خطاهای پیش آمده در لینوکس و راه حل آنها

تجریبات بر طرف سازی خطاهای لینوکس

چگونه در bash یک لیست بسازیم و روی اعضای آن عملیات انجام دهیم

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


برای اینکار از مفهوم زیر ایده گرفتم که اصل آنرا در اینجا میاورم


حالت اول، در این وضعیت هر خط در لیست به عنوان یک عضو در نظر گرفته می شود

اصطلاحا به آن with whitesapce گفته میشود.


listOfNames="RA
RB
R C
RD"

# To allow for other whitespace in the string:
# 1. add double quotes around the list variable, or
# 2. see the IFS note (under 'Side Notes')

for databaseName in "$listOfNames"   #  <-- Note: Added "" quotes.
do
  echo "$databaseName"  # (i.e. do action / processing of $databaseName here...)
done

# Outputs
# RA
# RB
# R C
# RD


without whitespace در اینحالت مشاهده میکنید که خط سوم لیست به صورت دو عضو سوا در نظر گرفته شده است.


listOfNames="RA
RB
R C
RD"

for databaseName in $listOfNames  # Note: No quotes
do
  echo "$databaseName"  # (i.e. do action / processing of $databaseName here...)
done

# Outputs
# RA
# RB
# R
# C
# RD




vsftpd و selinux

یک مشکلی که گاهی میتونه پیش بیاد، مشکل فعال بودن selinux هستش 

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


من تصمیم به غیر فعال کردن اون دارم، در حال حاظر، اما مشکل موقعی به وجود اومد که این سرویس فعال بود و در تنظیمات اولیه هیچ گونه مشکلی با سرویس vsftpd نداشتم تا اینکه همکارها زنگ زدند که فایلها رو روی سرور ftp میبینن اما نمیتونن اونها رو بردارن


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


سپس فایل xferlog رو دیدم، مطلب خاصی در اون نبود.

یک سطر از اون فایل شکل زیر رو داره


Wed Dec 31 11:35:32 2014 1 requestingIP userid path b _ o a 13123424 ftp 0 * i


اما مشکل خودش رو در فایل messages نشون داد، جستجو به دنبال vsftpd نشون داد که


Dec 31 11:35:07 *********setroubleshoot: SELinux is preventing /usr/sbin/vsftpd from read access on the file . For complete SELinux messages. run sealert -l *************************


به هر صورت، راه حل اولیه من که مشکل رو حل کرد غیر فعال کردن selinux بود، این رو دز پست روش disabled کردن SELinux در فدورا توضیح داده ام.

اسکریپت لیست و اعمال دستورات در خصوص فولدرها و فایلها

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


for d in *; do
 echo $d
done


به صورت زیر تنها فولدرها نمایش داده می شوند


for d in */ ; do
    echo "$d"
done


نکته اساسی: می توان به جای دستور echo سایر دستورات را به کار برد



چگونه VNC Server را بر روی CentOS 7 نصب و راه اندازی نماییم.

ابتدا باید tiger-vncserver را نصب نماییم


توجه کنید که نصب بودن یک محیط گرافیکی اولیه نظیر Genome الزامی است


 yum install tigervnc-server


پس از نصب  سرویس vncserver را به لیست سرویس ها اضافه میکنیم.


 cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service


 vi /etc/systemd/system/vncserver@:1.service


فایل /etc/systemd/system/vncserver@:1.service/ را ادیت کرده و در بخش service به جای <USER> نام کاربر را وارد نمایید


[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


فرض شده کاربر majid در سیستم موجود بوده است


 [Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l majid-c "/usr/bin/vncserver %i"
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
PIDFile=/home/majid/.vnc/%H%i.pid



می بایست فایروال را تنظیم کنید، در اینجا firewalld پیش فرض CentOS-7 استفاده شده است.


firewall-cmd --permanent --zone=public --add-service vnc-server
firewall-cmd --reload


حال می بایست به شناسه majid رفته و در آنجا vncserver را اجرا نماییم


 su - majid
vncserver
exit


سپس دوباره به شناسه root برگشته و سرویس vncserver را فعال و اجرا می نماییم.


 systemctl daemon-reload


 systemctl enable vncserver@:1.service


 systemctl start vncserver@:1.service


سپس با استفاده از یک vncclient به سرور فوق متصل میشویم.