ວິທີການ ດຳ ເນີນງານ Shell Scripts ກັບ Sudo Command ໃນ Linux


sudo ແມ່ນເຄື່ອງມືເສັ້ນ ຄຳ ສັ່ງທີ່ມີປະສິດທິພາບສູງເຊິ່ງຊ່ວຍໃຫ້ "ຜູ້ໃຊ້ທີ່ໄດ້ຮັບອະນຸຍາດ" ສາມາດ ດຳ ເນີນການ ຄຳ ສັ່ງຄືກັບຜູ້ໃຊ້ອື່ນ (ຜູ້ໃຊ້ແບບພິເສດໂດຍຄ່າເລີ່ມຕົ້ນ), ຕາມທີ່ ກຳ ນົດໂດຍນະໂຍບາຍຄວາມປອດໄພ. ໂດຍສ່ວນໃຫຍ່ຖ້າບໍ່ແມ່ນລະບົບ Linux ທັງ ໝົດ, ນະໂຍບາຍຄວາມປອດໄພຈະຖືກຂັບເຄື່ອນໂດຍແຟ້ມ/etc/sudoers.

ສະນັ້ນ, ເພື່ອ ດຳ ເນີນການຂຽນສະຄິບ shell ຫຼືໂປແກມເປັນຮາກ, ທ່ານ ຈຳ ເປັນຕ້ອງໃຊ້ ຄຳ ສັ່ງ sudo. ເຖິງຢ່າງໃດກໍ່ຕາມ, sudo ພຽງແຕ່ຮັບຮູ້ແລະ ດຳ ເນີນການ ຄຳ ສັ່ງທີ່ມີຢູ່ໃນໄດເລກະທໍລີທີ່ລະບຸໄວ້ໃນໂປແກມທີ່ປອດໄພໃນ/etc/sudoers, ເວັ້ນເສຍແຕ່ວ່າ ຄຳ ສັ່ງຢູ່ໃນ secure_path, ທ່ານຈະສາມາດຕ້ານກັບຂໍ້ຜິດພາດເຊັ່ນ: ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້.

ສິ່ງນີ້ຈະເກີດຂື້ນເຖິງແມ່ນວ່າສະຄິບຈະມີຢູ່ໃນໄດເລກະທໍລີໃນຕົວປ່ຽນແປງສິ່ງແວດລ້ອມ PATH, ເພາະວ່າເມື່ອຜູ້ໃຊ້ໃຊ້ sudo, PATH ຖືກປ່ຽນແທນດ້ວຍ secure_path.

$ echo  $PATH
$ ls  -l
$ sudo proconport.sh 80

ໃນສະຖານະການຂ້າງເທິງນີ້, ໄດເລກະທໍລີ/ເຮືອນ/aaronkilik/ຖັງແມ່ນຢູ່ໃນຕົວປ່ຽນແປງສະພາບແວດລ້ອມຂອງ PATH ແລະພວກເຮົາ ກຳ ລັງພະຍາຍາມ ດຳ ເນີນການ script /home/aaronkilik/bin/proconport.sh (ພົບຂະບວນການຟັງຢູ່ໃນທ່າເຮືອ) ໂດຍມີສິດທິພິເສດຮາກ.

ຫຼັງຈາກນັ້ນພວກເຮົາໄດ້ພົບຂໍ້ຜິດພາດ“ sudo: proconport.sh: ບໍ່ພົບ ຄຳ ສັ່ງ”, ເພາະວ່າ/home/aaronkilik/bin ບໍ່ໄດ້ຢູ່ໃນ sudo secure_path ດັ່ງທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປ.

ເພື່ອແກ້ໄຂບັນຫານີ້, ພວກເຮົາ ຈຳ ເປັນຕ້ອງເພີ່ມໄດເລກະທໍລີທີ່ມີສະຄິບຂອງພວກເຮົາໃນ sudo secure_path ໂດຍການໃຊ້ ຄຳ ສັ່ງ visudo ໂດຍການແກ້ໄຂເອກະສານ/etc/sudoers ດັ່ງຕໍ່ໄປນີ້.

$ sudo visudo

ເອົາໃຈໃສ່: ວິທີການນີ້ມີຜົນກະທົບດ້ານຄວາມປອດໄພທີ່ຮ້າຍແຮງໂດຍສະເພາະເຄື່ອງແມ່ຂ່າຍທີ່ໃຊ້ໃນອິນເຕີເນັດ. ວິທີນີ້, ພວກເຮົາມີຄວາມສ່ຽງໃນການເປີດເຜີຍລະບົບຂອງພວກເຮົາໄປສູ່ການໂຈມຕີຕ່າງໆ, ເພາະວ່າຜູ້ໂຈມຕີທີ່ຈັດການເພື່ອໃຫ້ສາມາດເຂົ້າເຖິງໄດເລກະທໍລີທີ່ບໍ່ປອດໄພ (ໂດຍບໍ່ໄດ້ຮັບສິດທິພິເສດຂອງ superuser) ທີ່ຖືກເພີ່ມເຂົ້າໃນ secure_path, ສາມາດເອີ້ນໃຊ້ script/program ທີ່ເປັນອັນຕະລາຍໂດຍໃຊ້ ຄຳ ສັ່ງ sudo.

ສຳ ລັບເຫດຜົນດ້ານຄວາມປອດໄພ, ໃຫ້ກວດເບິ່ງບົດຄວາມຕໍ່ໄປນີ້ຈາກເວບໄຊທ໌ sudo ອະທິບາຍເຖິງຊ່ອງໂຫວ່ທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພຂອງເວັບໄຊທ໌: https://www.sudo.ws/sudo/alerts/secure_path.html

ດີທີ່ສຸດ, ພວກເຮົາສາມາດສະ ໜອງ ເສັ້ນທາງໃຫ້ກັບຕົວ ໜັງ ສືໃນຂະນະທີ່ ກຳ ລັງແລ່ນມັນດ້ວຍ sudo:

$ sudo ./proconport.sh 80

ນັ້ນແມ່ນມັນ! ທ່ານອາດຈະຕິດຕາມລາຍຊື່ຂອງບົດຄວາມກ່ຽວກັບ ຄຳ ສັ່ງ sudo:

<

  • ວິທີການ ດຳ ເນີນງານ ຄຳ ສັ່ງ 'sudo' ໂດຍບໍ່ຕ້ອງໃສ່ລະຫັດຜ່ານໃນ Linux
  • ວິທີການຮັກສາລະຫັດເວລາຂອງລະຫັດຜ່ານທີ່ຍາວກວ່າໃນ Linux
  • ວິທີແກ້ໄຂ“ ຊື່ຜູ້ໃຊ້ບໍ່ຢູ່ໃນເອກະສານ sudoers. ເຫດການນີ້ຈະຖືກລາຍງານ” ໃນ Ubuntu
  • ໃຫ້ Sudo ດູຖູກທ່ານເມື່ອທ່ານໃສ່ລະຫັດຜ່ານທີ່ບໍ່ຖືກຕ້ອງ
  • ຖ້າທ່ານມີ ຄຳ ຖາມຫຼືຄວາມຄິດໃດ ໜຶ່ງ ທີ່ກ່ຽວຂ້ອງກັບບົດຂຽນນີ້, ແບ່ງປັນກັບພວກເຮົາຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.