ວິທີການປ່ຽນ (su) ເຂົ້າບັນຊີຜູ້ໃຊ້ອື່ນໂດຍບໍ່ຕ້ອງໃຊ້ລະຫັດຜ່ານ
ໃນຄູ່ມືນີ້, ພວກເຮົາຈະສະແດງວິທີການປ່ຽນໄປໃຊ້ບັນຊີຜູ້ໃຊ້ອື່ນຫຼືບັນຊີຜູ້ໃຊ້ສະເພາະໂດຍບໍ່ຕ້ອງໃຊ້ລະຫັດຜ່ານ. ຕົວຢ່າງ: ພວກເຮົາມີບັນຊີຜູ້ໃຊ້ທີ່ເອີ້ນວ່າ postgres (ບັນຊີລະບົບລະບົບ PostgreSQL superuser ໃນຕອນຕົ້ນ), ພວກເຮົາຕ້ອງການໃຫ້ຜູ້ໃຊ້ທຸກຄົນ (ໂດຍປົກກະຕິຖານຂໍ້ມູນ PostgreSQL ແລະຜູ້ເບິ່ງແຍງລະບົບຂອງພວກເຮົາ) ໃນກຸ່ມທີ່ເອີ້ນວ່າ postgres ປ່ຽນໄປໃຊ້ບັນຊີ postgres ໂດຍໃຊ້ su command ໂດຍບໍ່ຕ້ອງໃສ່ຕົວເລກ ລະຫັດຜ່ານ.
ໂດຍຄ່າເລີ່ມຕົ້ນ, ພຽງແຕ່ຜູ້ໃຊ້ຮາກສາມາດປ່ຽນໄປໃຊ້ບັນຊີຜູ້ໃຊ້ອື່ນໂດຍບໍ່ຕ້ອງໃສ່ລະຫັດຜ່ານ. ຜູ້ໃຊ້ອື່ນຈະຖືກກະຕຸ້ນໃຫ້ໃສ່ລະຫັດຜ່ານຂອງບັນຊີຜູ້ໃຊ້ທີ່ພວກເຂົາ ກຳ ລັງປ່ຽນໄປ (ຫຼືຖ້າພວກເຂົາ ກຳ ລັງໃຊ້ ຄຳ ສັ່ງ sudo, ພວກເຂົາຈະຖືກກະຕຸ້ນໃຫ້ໃສ່ລະຫັດຜ່ານຂອງພວກເຂົາ), ຖ້າພວກເຂົາບໍ່ລະຫັດຜ່ານທີ່ຖືກຕ້ອງ, ພວກເຂົາຈະໄດ້ຮັບ ຂໍ້ຜິດພາດ "ການຢັ້ງຢືນລົ້ມເຫລວ" ທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້.
ທ່ານສາມາດໃຊ້ວິທີໃດ ໜຶ່ງ ໃນສອງທາງແກ້ໄຂຂ້າງລຸ່ມນີ້ເພື່ອແກ້ໄຂບັນຫາຂ້າງເທິງ.
1. ໃຊ້ໂມດູນການກວດສອບ PAM
PAM (ໂມດູນການກວດສອບ Pluggable) ແມ່ນຫຼັກໃນການກວດສອບຄວາມຖືກຕ້ອງຂອງຜູ້ໃຊ້ໃນລະບົບປະຕິບັດການ Linux ທີ່ທັນສະ ໄໝ. ເພື່ອໃຫ້ຜູ້ໃຊ້ໃນກຸ່ມສະເພາະປ່ຽນໄປໃຊ້ບັນຊີຜູ້ໃຊ້ອື່ນໂດຍບໍ່ມີລະຫັດຜ່ານ, ພວກເຮົາສາມາດດັດແປງການຕັ້ງຄ່າ PAM ແບບບໍ່ຖືກຕ້ອງ ສຳ ລັບ su command ໃນ file /etc/pam.d/su.
# vim /etc/pam.d/su OR $ sudo vim /etc/pam.d/su
ຕື່ມການຕັ້ງຄ່າຕໍ່ໄປນີ້ຫຼັງຈາກ "auth pam_rootok.so ພຽງພໍ" ດັ່ງທີ່ສະແດງຢູ່ໃນ ໜ້າ ຈໍຕໍ່ໄປນີ້.
auth [success=ignore default=1] pam_succeed_if.so user = postgres auth sufficient pam_succeed_if.so use_uid user ingroup postgres
ໃນການຕັ້ງຄ່າຂ້າງເທິງ, ການກວດສອບເສັ້ນ ທຳ ອິດຖ້າຜູ້ໃຊ້ເປົ້າ ໝາຍ ຖືກ postgres, ຖ້າມັນແມ່ນ, ບໍລິການກວດສອບຜູ້ໃຊ້ປະຈຸບັນ, ຖ້າບໍ່ດັ່ງນັ້ນ, ຄ່າເລີ່ມຕົ້ນ = 1 ເສັ້ນຖືກຂ້າມແລະຂັ້ນຕອນການກວດສອບປົກກະຕິຈະຖືກປະຕິບັດ.
auth [success=ignore default=1] pam_succeed_if.so user = postgres
ສາຍທີ່ຕິດຕາມກວດກາຖ້າຜູ້ໃຊ້ປະຈຸບັນຢູ່ໃນກຸ່ມ postgres, ຖ້າແມ່ນແລ້ວ, ຂັ້ນຕອນການກວດສອບໄດ້ຖືກພິຈາລະນາວ່າປະສົບຜົນ ສຳ ເລັດແລະກັບມາຢ່າງພຽງພໍຕາມຜົນ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຂັ້ນຕອນການກວດສອບປົກກະຕິຈະຖືກປະຕິບັດ.
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
ບັນທຶກເອກະສານແລະປິດມັນ.
ຕໍ່ໄປ, ຕື່ມຜູ້ໃຊ້ (ຕົວຢ່າງ aaronk) ທີ່ທ່ານຕ້ອງການຟ້ອງກັບບັນຊີ postgres ໂດຍບໍ່ຕ້ອງມີລະຫັດລັບໃນ postgres ກຸ່ມໂດຍໃຊ້ ຄຳ ສັ່ງ usermod.
$sudo usermod -aG postgres aaronk
ດຽວນີ້ພະຍາຍາມທີ່ຈະຟ້ອງກັບບັນຊີ postgres ຄືກັບຜູ້ໃຊ້ aaronk, ທ່ານບໍ່ຄວນຖືກກະຕຸ້ນໃຫ້ມີລະຫັດລັບດັ່ງທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້:
$ su - postgres
2. ການໃຊ້ Sudoers File
ທ່ານຍັງສາມາດຟ້ອງຜູ້ໃຊ້ຄົນອື່ນໄດ້ໂດຍບໍ່ຕ້ອງການລະຫັດຜ່ານໂດຍການປ່ຽນແປງບາງຢ່າງໃນເອກະສານ sudoers. ໃນກໍລະນີນີ້, ຜູ້ໃຊ້ (ຕົວຢ່າງ aaronk) ຜູ້ທີ່ຈະປ່ຽນໄປໃຊ້ບັນຊີຜູ້ໃຊ້ອື່ນ (ຕົວຢ່າງ postgres) ຄວນຢູ່ໃນແຟ້ມ sudoers ຫຼືໃນກຸ່ມ sudo ເພື່ອສາມາດເອີ້ນ ຄຳ ສັ່ງ sudo.
$ sudo visudo
ຈາກນັ້ນຕື່ມການຕັ້ງຄ່າຕໍ່ໄປນີ້ຢູ່ຂ້າງລຸ່ມເສັ້ນ“% sudo ALL = (ALL: ALL) ALL” ດັ່ງທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້.
aaronk ALL=NOPASSWD: /bin/su – postgres
ບັນທຶກແລະປິດແຟ້ມ.
ດຽວນີ້ພະຍາຍາມຟ້ອງກັບບັນຊີ postgres ໃນຖານະຜູ້ໃຊ້ aaronk, ຫອຍບໍ່ຄວນກະຕຸ້ນເຈົ້າໃຫ້ໃສ່ລະຫັດຜ່ານ:
$ sudo su - postgres
ດຽວນີ້ ໝົດ ແລ້ວ! ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ ໜ້າ ເຂົ້າໃນປື້ມຄູ່ມື PAM (man pam.conf) ແລະ ຄຳ ສັ່ງຂອງ sudo ເຊັ່ນດຽວກັນ (man sudo).
$ man pam.conf $ man sudo