এটি বাস্তবায়নের জন্য আপনার কাছে দুটি পরিপূরক উপায় রয়েছে:
ব্যবহারকারীদের 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
) বা মোটেও কিছুই নয়।