এটি বাস্তবায়নের জন্য আপনার কাছে দুটি পরিপূরক উপায় রয়েছে:
ব্যবহারকারীদের gitদূরবর্তী অবস্থান থেকে ব্যবহারের অনুমতি প্রদান করা
gitolite3হাব-লাইভ সংগ্রহস্থল স্কিমা সরবরাহ করার জন্য এটি ব্যবহার করুন (এটি এখানে বিস্তারিতভাবে বর্ণনা করা হয়েছে ), আপনার ব্যবহারকারীদের একই রেপোর থেকে চাপ / টানতে এবং একই ধরণের একটি চেক-আউট সংস্করণ দেওয়ার জন্য আপনার একটি bareসংগ্রহস্থল (একটি হাব রেপো) থাকা দরকার bas (একটি লাইভ রেপো) উপযুক্ত পথে অবস্থিত /srv/www/html, উদাহরণস্বরূপ , বলুন ।
আমি হাব রেপো gitolite3হ্যান্ডেল করতে ব্যবহার করতে চাই , তবে এটি কোনও প্রয়োজন নয়, যদিও প্রয়োজনের তুলনায় আপনার পছন্দের LDAP এ জরিমানা-দানাযুক্ত অ্যাক্সেস কন্ট্রোল বাঁধাই বরং সুবিধাজনক । শাখার স্তরে সূক্ষ্ম দান নিয়ন্ত্রণ সরবরাহ করতে পারে।gitolite3
কলের gitolite3মাধ্যমে ব্যবহারকারীর ক্ষমতা সীমাবদ্ধ করা sudoএবং হুকগুলি পরিচালনা করাও একটি ভাল অনুশীলন sudo। এটি gitolite3হুক ব্যবহার করে একটি কার্যকারী উদাহরণ (এগুলি খাপ খাইয়ে নিতে নির্দ্বিধায় বা তাদের উন্নত করতে / ঠিক করার জন্য - আপনার প্রয়োজন অনুসারে):
এর প্রাসঙ্গিক সামগ্রী /etc/sudoersবা /etc/sudoers.d/gitolite3এর লাইন বরাবর কিছু হবে:
Cmnd_Alias GITOLITE_CMDS = /usr/bin/git, /bin/chown, /bin/find, /usr/bin/xargs, /bin/chmod, /sbin/restorecon, /usr/local/sbin/publisher-hub2live
Cmnd_Alias GITOLITE_APACHE_CMDS = /usr/sbin/apachectl graceful
Defaults:gitolite3 !requiretty
Defaults:gitolite3 lecture=never
gitolite3 ALL = (root)NOPASSWD: GITOLITE_CMDS
gitolite3 APACHE_HOSTS = (root)NOPASSWD: GITOLITE_APACHE_CMDS
হাব রেপো post-updateহুক:
#!/bin/sh
echo "****"
echo "**** Calling publisher-hub2live script [Hub's post-update hook]"
echo "****"
sudo /usr/local/sbin/publisher-hub2live "/srv/www/html" "root:apache" "2750" "640"
exit 0
publisher-hub2live লিপি:
#!/bin/sh
echo "****"
echo "**** Pulling changes into Live [publisher-hub2live]"
echo "****"
cd "$1" || exit
umask 0022
unset GIT_DIR
/usr/bin/git pull hub master
# custom actions here
# e.g call grunt tasks
/bin/chown -R "$2" "$1"
/bin/find "$1" -type d -exec chmod "$3" {} +
/bin/find "$1" -type f -exec chmod "$4" {} +
/bin/chmod u+x "$1"/.git/hooks/post-commit
/sbin/restorecon -R -v "$1"
exec /usr/bin/git update-server-info
exit 0
লগইন শেলটিতে অ-অনুমোদিত কমান্ডগুলি কার্যকর করার সীমাবদ্ধকরণ
আপনাকে যা প্রয়োগ করতে হবে তা হ'ল একটি পুনরুত্পাদনযোগ্য, নিরীক্ষণযোগ্য পদ্ধতি যা ব্যবহারকারীর কঠোরভাবে অনুমতি ব্যতীত অন্য ক্রিয়া সম্পাদন করার ক্ষমতা সীমাবদ্ধ করে দেয়।
এটা তোলে প্রয়োজন বোধ করা হয় না কিন্তু এটি যদি আপনি আপনার ব্যবহারকারীদের দ্বারা LDAP নিবন্ধিত করতে সহায়তা করার, এবং আপনি ইতিমধ্যে প্রক্রিয়া মোতায়েন আছে দ্বারা LDAP প্রমাণীকরণ করা, একটি পিএএম মডিউল অথবা freeIPA এবং ব্যবহারের মাধ্যমে এটা হতে sssd।
এই দৃশ্যটি বাস্তবায়নের জন্য, আমি বর্তমানে যা করছি তা নিম্নরূপ (সচেতন হন যে এই ধরণের বিধিনিষেধের জন্য বেশ কয়েকটি শর্ত পূরণ করা প্রয়োজন, অন্যথায় এই সীমাবদ্ধতাটি সহজেই পরিশ্রুত করা যেতে পারে):
- ব্যবহারকারীরা
wheelগোষ্ঠীভুক্ত নয়, কেবলমাত্র একমাত্র ব্যবহারের জন্য অনুমোদিত su(পিএএম এর মাধ্যমে প্রয়োগ করা হয়েছে)। সাধারণত, sysadmবিপর্যয় পুনরুদ্ধার বা এলডিএপি অপ্রাপ্যতার ক্ষেত্রে ক্রিয়া সম্পাদনকারী বিশ্বস্ত প্রশাসকদের মঞ্জুরি দেওয়ার জন্য একটি অ-এলডিএপি ব্যবহারকারী ( ) উপস্থিত থাকে।
ব্যবহারকারীরা rbashএকটি প্রাইভেটকে নির্দেশিত কেবল পঠনযোগ্য PATH দিয়ে সঠিকভাবে সুরক্ষিত দেওয়া হয় ~/bin, এই ~/bin/ডিরেক্টরিতে সমস্ত অনুমোদিত কমান্ডের লিঙ্ক রয়েছে, উদাহরণস্বরূপ:
$ ll ~/bin
total 0
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
lrwxrwxrwx. 1 root dawud 7 Sep 17 08:58 df -> /bin/df*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
lrwxrwxrwx. 1 root dawud 8 Sep 17 08:58 env -> /bin/env*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 git -> /usr/bin/git*
lrwxrwxrwx. 1 root dawud 9 Sep 17 08:58 grep -> /bin/grep*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
ব্যবহারকারীদের একটি সীমাবদ্ধ, শুধুমাত্র পাঠযোগ্য পরিবেশ দেওয়া হয় (যেমন কাপড় মনে LESSSECURE, TMOUT, HISTFILEভেরিয়েবল)। এটি হ'ল shellআদেশগুলি থেকে রক্ষা পাওয়া lessএবং নিরীক্ষণযোগ্যতা নিশ্চিত করা ensure
একমাত্র অনুমোদিত সম্পাদক হলেন rvimএকই কারণে। ব্যবহারকারীরা sudoeditকনফিগারেশনে চালিত rvimহওয়ার জন্য sudoকনফিগার করা অবস্থায় কেবল সম্পাদন করতে পারবেন :
Defaults editor=/usr/bin/rvim
যদি ম্যাক বিধিনিষেধগুলি স্থানে থাকে (আপনি যে নির্দিষ্ট জিএনইউ / লিনাক্স ডিস্ট্রিবিউশনটি ব্যবহার করছেন সেটি সেলইনাক্স সক্ষম করেছে), ব্যবহারকারীরা সেলইনাক্স ব্যবহারকারীকে ম্যাপ করা হয় staff_uএবং প্রয়োজনীয় হিসাবে অন্যান্য ব্যবহারকারী হিসাবে কমান্ড কার্যকর করার অধিকার প্রদান করে sudo। sudorulesব্যবহারকারীকে এই সীমাবদ্ধতাগুলি রোধ করতে বাধা দেওয়ার জন্য নির্দিষ্ট অনুমোদিতটি সাবধানতার সাথে পর্যালোচনা করা দরকার এবং আপনার বিদ্যমান এলডিএপি অবকাঠামোতে এটি স্থাপন করা যেতে পারে (এটি ফ্রিআইপিএ বৈশিষ্ট্যগুলির মধ্যে একটি)।
ব্যবহারকারীদের /home, /tmpএবং সম্ভবত /var/tmpপলিনস্ট্যান্টেশন এর মাধ্যমে /etc/security/namespace.conf:
/tmp /tmp/.inst/tmp.inst-$USER- tmpdir:create root
/var/tmp /tmp/.inst/var-tmp.inst-$USER- tmpdir:create root
$HOME $HOME/$USER.inst/ tmpdir:create root
ডিরেক্টরিগুলির পলিনস্ট্যানেশন কোনও নতুন বৈশিষ্ট্য নয়, এটি বেশ দীর্ঘকাল ধরে পাওয়া যায়। একটি রেফারেন্স হিসাবে, 2006 থেকে এই নিবন্ধটি দেখুন । প্রকৃতপক্ষে, অনেকগুলি মডিউল ইতিমধ্যে pam_namespaceডিফল্টরূপে ব্যবহার করে তবে ডিফল্ট কনফিগারেশনে /etc/security/namespace.confপলিইনস্টেস্টেশন সক্ষম হয় না। এছাড়াও, /etc/security/namespace.initকরা উচিত সব কঙ্কাল ফাইল কেবল-পঠনযোগ্য ব্যবহারকারীদের জন্য এবং এটির মালিক root।
এইভাবে আপনি চয়ন করতে পারেন যে ব্যবহারকারীরা নিজের পক্ষ থেকে কোনও কমান্ড কার্যকর করতে পারে (ব্যক্তিগত ~/binডিরেক্টরিতে একটি লিঙ্কের মাধ্যমে /etc/skel, উপরে বর্ণিত হিসাবে সরবরাহ করা হয়েছে), অন্য ব্যবহারকারীর পক্ষে (মাধ্যমে sudo) বা মোটেও কিছুই নয়।