ວິທີການປ່ຽນ (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