টি এল; ডিআর: একটি সিস্টেম যেখানে SELinux- র ব্যবহার করা হচ্ছে, ফাইল সিস্টেম দ্বারা ব্যবহৃত (যেমন: ডেমন) অনুলিপি করা বা নিয়ে সরানো cp -aZ
এবং mv -Z
পরিবর্তে cp -a
এবং mv
। যদি এটি না করা হয়, তবে সিস্টেমটিকে ডিফল্ট SELinux প্রসঙ্গে পুনরুদ্ধার করতে বলার জন্য কেবল একটি restorecon -v -r
বা restorecon -v -F -r
গন্তব্যস্থলে ব্যবহার করা উচিত । restorecon
কী কনফিগারেশন ফাইলগুলিতে কাজ করে এমন স্ক্রিপ্টের শেষে ব্যবহার করা সর্বদা একটি ভাল ধারণা ।
আরএইচইএল এবং সুতরাং এর বেশিরভাগ ডেরাইভেটিভস ডিফল্টরূপে সেলইনাক্স ব্যবহার করে ।
সুতরাং আপনার সমস্যা সমাধানের জন্য, যদি আপনার সিস্টেমটি আরএইচইল ভিত্তিক এবং mariadb-server
প্যাকেজটি ব্যবহার করে থাকে তবে ফাইলটি সঠিক জায়গায় উপস্থিত থাকলে কেবল চূড়ান্ত পদক্ষেপে করুন :
# restorecon -v -F /etc/my.cnf.d/server.cnf
Relabeled /etc/my.cnf.d/server.cnf from unconfined_u:object_r:user_home_t:s0 to system_u:object_r:mysqld_etc_t:s0
(দ্রষ্টব্য যে এটি ছাড়া কনফিগার হওয়াতে -F
পরিবর্তন হবে না common সাধারণ সিস্টেমগুলির জন্য এটি কোনও ব্যাপার নয় the পার্থক্য সম্পর্কে আমার জ্ঞান এবং কেন এটি গুরুত্বপূর্ণ নয়) এটি এতদূর যায় না)।unconfined_u
system_u
অন্য জায়গায় ফাইলের উপর সঠিক প্রসঙ্গ স্থাপন করা আরও কাজ হবে । chcon
এটি করতে পারে (হয় -u
-t
ইত্যাদি দিয়ে তা উল্লেখ করে , আরও সহজেই অন্য ফাইল থেকে প্রসঙ্গটি অনুলিপি করে --reference
):
# ls -lZ /home/test/server.cnf.bad
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:s0 744 Apr 30 2017 /home/test/server.cnf.bad
# chcon -v -u system_u -t mysqld_etc_t /home/test/server.cnf.bad
changing security context of '/home/test/server.cnf.bad'
# ls -lZ /home/test/server.cnf.bad
-rw-r--r--. 1 root root system_u:object_r:mysqld_etc_t:s0 744 Apr 30 2017 /home/test/server.cnf.bad
আপনার যদি SELinux সমস্যা সন্দেহ হয় তবে আপনার প্রক্রিয়া বা ফাইল সম্পর্কিত /var/log/audit/audit.log
শব্দটি দিয়ে প্রবেশের জন্য পরীক্ষা denied
করুন। আপনি সর্বদা অস্থায়ীভাবে SELinux কে ক্রিয়াকলাপের অনুমতি দিতে বলুন এবং তারপরে যথাক্রমে setenforce Permissive
এবং setenforce Enforcing
আচরণের তুলনা করার জন্য এগুলি পুনরুদ্ধার করতে পারেন। Permissive
বিশেষত উত্পাদন জন্য এটি ছেড়ে না ।
বিভিন্ন ব্যাখ্যা নিম্নলিখিত ...
উদাহরণ এবং কনফিগারেশন ফাইলগুলিতে কাজ করার সময় কী করা উচিত
বিভিন্ন cp
বিকল্পের সাথে এবং mv
সেলইনাক্স সক্ষম সিস্টেমে বাহাওয়ের উদাহরণ :
$ id
uid=1034(test) gid=1034(test) groups=1034(test)
$ pwd
/home/test
test@glasswalker:~$ ls -lZ foo
-rw-r--r--. 1 test test unconfined_u:object_r:user_home_t:s0 0 Aug 11 11:25 foo
$ cp foo /tmp/foo1
$ cp --preserve=context foo /tmp/foo2
$ cp -a foo /tmp/foo3
$ cp -aZ foo /tmp/foo4
$ mv foo /tmp/foo5
$ ls -lZ /tmp/foo?
-rw-r--r--. 1 test test unconfined_u:object_r:user_tmpfs_t:s0 0 Aug 11 11:25 /tmp/foo1
-rw-r--r--. 1 test test unconfined_u:object_r:user_home_t:s0 0 Aug 11 11:25 /tmp/foo2
-rw-r--r--. 1 test test unconfined_u:object_r:user_home_t:s0 0 Aug 11 11:25 /tmp/foo3
-rw-r--r--. 1 test test unconfined_u:object_r:user_tmpfs_t:s0 0 Aug 11 11:25 /tmp/foo4
-rw-r--r--. 1 test test unconfined_u:object_r:user_home_t:s0 0 Aug 11 11:25 /tmp/foo5
$ touch bar
$ ls -lZ bar
-rw-r--r--. 1 test test unconfined_u:object_r:user_home_t:s0 0 Aug 11 11:49 bar
$ mv -Z bar /tmp
$ ls -lZ /tmp/bar
-rw-r--r--. 1 test test unconfined_u:object_r:user_tmpfs_t:s0 0 Aug 11 11:49 /tmp/bar
সুতরাং যখন সুরক্ষা প্রসঙ্গটি গুরুত্বপূর্ণ এবং এখনও অন্য বৈশিষ্ট্যগুলি সংরক্ষণ করে তখন ব্যবহার cp -aZ
বা mv -Z
সূক্ষ্মভাবে কাজ করে । একটি স্ক্রিপ্ট মুভিং সিস্টেম ফাইলগুলি সর্বদা যে -Z
কোনও cp
বা mv
কমান্ডের জন্য বিকল্পটি ব্যবহার করা উচিত , অন্যথায় restorecon
অপ্রত্যাশিত সমস্যাগুলি এড়াতে কেবল তার চূড়ান্ত পদক্ষেপে ব্যবহার করা উচিত।
কেন এই পার্থক্য?
mv
কমান্ড সঙ্গতিপূর্ণ আচরণ রাখে। যদি এটি একই ফাইল সিস্টেমে ঘটে থাকে তবে অবশ্যই কোনও সুরক্ষার প্রসঙ্গ সহ কোনও ফাইলের সাথে সংযুক্ত কোনও কিছু পরিবর্তিত হবে না কারণ এটি কেবলমাত্র একটি "নামকরণ"। সুতরাং দুটি ফাইল সিস্টেমে যেখানে এটি আসলে একটি অনুলিপি মুছে ফেলা হয় সেখানে এটি ফাইলের সাথে যা কিছু সংযুক্ত থাকে সেগুলি অপরিবর্তিত রাখার জন্য অনুলিপি করে এবং এটি ধারাবাহিকতার জন্য এটির সুরক্ষা প্রসঙ্গে সহ জানে।
cp
ডিফল্টরূপে কমান্ড মাত্র সৃষ্টি একটি নতুন ফাইল, তাই এই ফাইল, যথারীতি বাবা-মার SELinux কনটেক্সট উত্তরাধিকারী যদি না অবশ্যই অন্যথায় বলেন সঙ্গে --preserve=context
যা অন্তর্ভুক্ত করা হয় -a
। অপশনটি দিয়ে --preserve=context
সংক্রামিত হতে পারে তাই পুরো বাজেটি অনুলিপি করার সময় সেরা বেটটি যদি সেলইনাক্সের কোনও ব্যাপার না হয় তার পরিবর্তে ব্যবহার করা উচিত।-a
-Z
-aZ
-a
ডিফল্টরূপে কোনও ফাইল তৈরি করার সময়, যা সাধারণ ঘটনা, এই নতুন ফাইলটি ডিরেক্টরিটি SELinux প্রসঙ্গটি উত্তরাধিকার সূত্রে প্রাপ্ত হয়, এ কারণেই সবকিছু ঠিকঠাকভাবে কাজ করে (অফ-টপিক: বিরল ক্ষেত্রে ফাইলের প্রসঙ্গটি কেবলমাত্র তার কারণ হিসাবে ডিরেক্টরিটির প্রসঙ্গ থেকে পৃথক হওয়া উচিত) এর নামে নিয়ম করুন, কার্নেল পাত্তা দিবে না, ডেমনের মতো প্রোগ্রাম restorecond
এটি পরিচালনা করতে হবে)।
সেলইনাক্স কী
সেলইনাক্স হ'ল একটি বাধ্যতামূলক অ্যাক্সেস কন্ট্রোল মেকানিজম (ওরফে ম্যাক ) অন্যান্য সমস্ত প্রক্রিয়া ছাড়াও ব্যবহৃত হয় (ইউনিক্স অনুমতিগুলি ওরফে ডিএসি , অ্যাক্সেস নিয়ন্ত্রণের তালিকা ওরফে এসিএল ইত্যাদি)। যখন কোনও প্রক্রিয়া কোনও প্রক্রিয়া সুরক্ষার প্রসঙ্গে চলে, তখন এই ফাইলের প্রসঙ্গে কাজ করার চেষ্টা করা প্রক্রিয়ায় জিজ্ঞাসিত ক্রিয়াকলাপটি (ওপেন, পড়ুন, লিখুন, এমএম্যাপ, ...) করতে পারবেন কিনা তা পরীক্ষা করার জন্য একটি "বিধি ম্যাট্রিক্স" রয়েছে।
ওপি-র ক্ষেত্রে উদাহরণ: যদি mysqld
এর প্রক্রিয়া প্রসঙ্গে কেবল কয়েকটি ফাইলের প্রসঙ্গের প্রকারের অ্যাক্সেসের অনুমতি দেওয়া হয় mysqld_etc_t
তবে এতে নাও user_home_t
শুরু mysqld
করা ব্যর্থ হবে কারণ এটি ভুল কনফিগারেশন সহ এটির কনফিগারেশন ফাইলটি পড়তে পারে না user_home_t
।
সাধারণ সিস্টেমে, ইন্টারেক্টিভ / লগ-ইন করা ব্যবহারকারীর পক্ষে এটি কোনও ব্যাপার নয়, কারণ এটির স্বাভাবিক প্রক্রিয়া প্রসঙ্গটি নির্ধারিত নয়, যার অর্থ কোনও সেলইনক্স বিধি প্রযোজ্য হবে না। প্রতিটি ডেমন শুরু systemd
বা অন্যান্য অনুরূপ প্রক্রিয়া হবে একটি প্রক্রিয়া কনটেক্সট, যা দিয়ে চেক করা যাবে গ্রহণ ps
এর -Z
বিকল্প। SELinux চলমান একটি দেবিয়ান সিস্টেমের উদাহরণ:
# ps -Z -p $$
LABEL PID TTY TIME CMD
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 22498 pts/7 00:00:00 bash
# ps -Z -p $(pidof /sbin/getty)
LABEL PID TTY STAT TIME COMMAND
system_u:system_r:getty_t:s0 6158 tty1 Ss+ 0:00 /sbin/getty 38400 tty1
system_u:system_r:getty_t:s0 6159 tty2 Ss+ 0:00 /sbin/getty 38400 tty2
system_u:system_r:getty_t:s0 6160 tty3 Ss+ 0:00 /sbin/getty 38400 tty3
system_u:system_r:getty_t:s0 6161 tty4 Ss+ 0:00 /sbin/getty 38400 tty4
system_u:system_r:getty_t:s0 6162 tty5 Ss+ 0:00 /sbin/getty 38400 tty5
system_u:system_r:getty_t:s0 6163 tty6 Ss+ 0:00 /sbin/getty 38400 tty6