10 ການຕັ້ງຄ່າ Sudoers ທີ່ເປັນປະໂຫຍດ ສຳ ລັບການຕັ້ງຄ່າ sudo ໃນ Linux


ໃນລະບົບປະຕິບັດການ Linux ແລະລະບົບປະຕິບັດການຄ້າຍຄື Unix ອື່ນໆ, ມີພຽງແຕ່ຜູ້ ນຳ ໃຊ້ຮາກສາມາດ ດຳ ເນີນການ ຄຳ ສັ່ງທັງ ໝົດ ແລະ ດຳ ເນີນການທີ່ ສຳ ຄັນບາງຢ່າງໃນລະບົບເຊັ່ນ: ຕິດຕັ້ງແລະອັບເດດ, ລຶບແພກເກດ, ສ້າງຜູ້ໃຊ້ແລະກຸ່ມ, ແກ້ໄຂເອກະສານການຕັ້ງຄ່າລະບົບທີ່ ສຳ ຄັນແລະອື່ນໆ.

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

ອີກທາງເລືອກ ໜຶ່ງ, ຜູ້ເບິ່ງແຍງລະບົບສາມາດແບ່ງປັນລະຫັດຜ່ານຂອງຜູ້ໃຊ້ຮາກ (ເຊິ່ງບໍ່ແມ່ນວິທີການທີ່ແນະ ນຳ) ເພື່ອໃຫ້ຜູ້ໃຊ້ລະບົບປົກກະຕິສາມາດເຂົ້າເຖິງບັນຊີຜູ້ໃຊ້ຮາກຜ່ານລະບົບ su command.

sudo ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ທີ່ອະນຸຍາດໃຫ້ປະຕິບັດ ຄຳ ສັ່ງເປັນຮາກ (ຫລືຜູ້ໃຊ້ອື່ນ), ຕາມທີ່ລະບຸໄວ້ໃນນະໂຍບາຍຄວາມປອດໄພ:

<

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

    $ sudo cat /etc/sudoers
    
    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults	env_reset
    Defaults	mail_badpass
    Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    Defaults	logfile="/var/log/sudo.log"
    Defaults	lecture="always"
    Defaults	badpass_message="Password is wrong, please try again"
    Defaults	passwd_tries=5
    Defaults	insults
    Defaults	log_input,log_output
    
    Defaults                parameter,   parameter_list     #affect all users on any host
    [email _List      parameter,   parameter_list     #affects all users on a specific host
    Defaults:User_List      parameter,   parameter_list     #affects a specific user
    Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
    Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user
    

    ສຳ ລັບຂອບເຂດຂອງ ຄຳ ແນະ ນຳ ນີ້, ພວກເຮົາຈະລົງສູນປະເພດ ທຳ ອິດໃນແບບຟອມລຸ່ມນີ້. ພາລາມິເຕີອາດຈະແມ່ນທຸງ, ຄ່າເຊື່ອມ, ສາຍ, ຫລືລາຍຊື່.

    ທ່ານຄວນສັງເກດວ່າທຸງແມ່ນບູຊາລ້ວນແຕ່ສາມາດປິດໄດ້ໂດຍໃຊ້ຕົວປະຕິບັດການ ! , ແລະລາຍຊື່ມີຜູ້ປະກອບການມອບ ໝາຍ ເພີ່ມອີກສອງຄົນ, + = (ເພີ່ມເຂົ້າໃນບັນຊີ) ແລະ - = (ເອົາອອກຈາກລາຍຊື່).

    Defaults     parameter
    OR
    Defaults     parameter=value
    OR
    Defaults     parameter -=value   
    Defaults     parameter +=value  
    OR
    Defaults     !parameter       
    

    1. ຕັ້ງ PATH ທີ່ປອດໄພ

    ນີ້ແມ່ນເສັ້ນທາງທີ່ໃຊ້ ສຳ ລັບທຸກໆ ຄຳ ສັ່ງທີ່ແລ່ນກັບ sudo, ມັນມີສອງຄວາມ ສຳ ຄັນຄື:

    < ໃຊ້ໃນເວລາທີ່ຜູ້ເບິ່ງແຍງລະບົບບໍ່ເຊື່ອໃຈຜູ້ໃຊ້ sudo ໃຫ້ມີຕົວປ່ຽນແປງ PATH environment ທີ່ປອດໄພ

  • ເພື່ອແຍກ "ເສັ້ນທາງຮາກ" ແລະ "ເສັ້ນທາງຜູ້ໃຊ້", ພຽງແຕ່ຜູ້ໃຊ້ທີ່ ກຳ ນົດໂດຍການຍົກເວັ້ນກຸ່ມບໍ່ໄດ້ຮັບຜົນກະທົບຈາກການຕັ້ງຄ່ານີ້.
  • ເພື່ອ ກຳ ນົດມັນ, ເພີ່ມເສັ້ນ:

    Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
    

    2. ເປີດໃຊ້ sudo ໃນກອງປະຊຸມເຂົ້າສູ່ລະບົບຜູ້ໃຊ້ TTY

    ເພື່ອເຮັດໃຫ້ sudo ຖືກເອີ້ນຈາກ tty ທີ່ແທ້ຈິງແຕ່ບໍ່ແມ່ນຜ່ານວິທີການຕ່າງໆເຊັ່ນ cron ຫຼື cgi-bin scripts, ເພີ່ມເສັ້ນ:

    Defaults  requiretty   
    

    3. ໃຊ້ Command Sudo ໂດຍໃຊ້ pty

    ສອງສາມຄັ້ງ, ຜູ້ໂຈມຕີສາມາດເອີ້ນໃຊ້ໂປແກຼມທີ່ເປັນອັນຕະລາຍ (ເຊັ່ນ: ໄວຣັສຫລືມັນແວ) ໂດຍໃຊ້ sudo ເຊິ່ງມັນຈະຊ້ ຳ ຊ້ອນຂະບວນການພື້ນຫລັງທີ່ຍັງຄົງຢູ່ໃນອຸປະກອນປາຍທາງຂອງຜູ້ໃຊ້ເຖິງແມ່ນວ່າໂປຣແກຣມຫຼັກ ສຳ ເລັດແລ້ວ.

    ເພື່ອຫລີກລ້ຽງສະຖານະການດັ່ງກ່າວ, ທ່ານສາມາດຕັ້ງຄ່າ sudo ເພື່ອ ດຳ ເນີນການ ຄຳ ສັ່ງອື່ນໄດ້ຈາກ psuedo-pty ໂດຍໃຊ້ຕົວ ກຳ ນົດ use_pty , ບໍ່ວ່າຈະເປັນການເຂົ້າສູ່ລະບົບ I/O ຖືກເປີດໃຊ້ຫຼືບໍ່ດັ່ງຕໍ່ໄປນີ້:

    Defaults  use_pty
    

    4. ສ້າງເອກະສານບັນທຶກ Sudo

    ໂດຍຄ່າເລີ່ມຕົ້ນ, ຂໍ້ມູນບັນທຶກ sudo ຜ່ານ syslog (3). ເຖິງຢ່າງໃດກໍ່ຕາມ, ເພື່ອ ກຳ ນົດເອກະສານບັນທຶກການ ກຳ ນົດເອງ, ໃຫ້ໃຊ້ພາລາມິເຕີ logfile ເຊັ່ນນັ້ນ:

    Defaults  logfile="/var/log/sudo.log"
    

    ເພື່ອເຊັນຊື່ hostname ແລະປີສີ່ຕົວເລກໃນແຟ້ມ log custom, ໃຊ້ log_host ແລະ log_year ຕາມ ລຳ ດັບດັ່ງຕໍ່ໄປນີ້:

    Defaults  log_host, log_year, logfile="/var/log/sudo.log"
    

    ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງຂອງ file sudo log custom:

    5. ເຂົ້າສູ່ລະບົບ Input/Output Command Sudo Logo

    ຕົວກໍານົດການ log_input ແລະ log_output ຊ່ວຍໃຫ້ sudo ສາມາດດໍາເນີນການຄໍາສັ່ງໃນ pseudo-tty ແລະເຂົ້າສູ່ລະບົບການປ້ອນຂໍ້ມູນຂອງຜູ້ໃຊ້ແລະຜົນໄດ້ຮັບທັງ ໝົດ ທີ່ຖືກສົ່ງໄປຫາ ໜ້າ ຈໍ.

    ໄດເລກະທໍລີບັນທຶກ I/O ໃນຕອນຕົ້ນແມ່ນ/var/log/sudo-io, ແລະຖ້າມີຕົວເລກ ລຳ ດັບຂອງ session, ມັນຖືກເກັບຢູ່ໃນໄດເລກະທໍລີນີ້. ທ່ານສາມາດ ກຳ ນົດໄດເລກະທໍລີທີ່ ກຳ ຫນົດເອງຜ່ານພາລາມິເຕີຂອງ iolog_dir.

    Defaults   log_input, log_output
    

    ມີບາງ ລຳ ດັບ ໜີ ທີ່ໄດ້ຮັບການສະ ໜັບ ສະ ໜູນ ເຊັ່ນ: % {seq} ທີ່ຂະຫຍາຍໄປສູ່ ຈຳ ນວນ ລຳ ດັບເພິ່ມຂື້ນທີ່ເປັນຕົວຕັ້ງຕົວເລກ, ເຊັ່ນວ່າ 000001, ເຊິ່ງທຸກໆສອງຕົວເລກຖືກ ນຳ ໃຊ້ເພື່ອປະກອບເປັນໄດເລກະທໍລີ ໃໝ່, ເຊັ່ນ: 00/00/01 ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:

    $ cd /var/log/sudo-io/
    $ ls
    $ cd  00/00/01
    $ ls
    $ cat log
    

    ທ່ານສາມາດເບິ່ງເອກະສານທີ່ເຫລືອຢູ່ໃນໄດເລກະທໍລີນັ້ນໂດຍໃຊ້ ຄຳ ສັ່ງແມວ.

    6. ບັນຍາຍຜູ້ໃຊ້ Sudo

    ເພື່ອສອນຜູ້ໃຊ້ sudo ກ່ຽວກັບການ ນຳ ໃຊ້ລະຫັດຜ່ານໃນລະບົບ, ໃຊ້ຕົວ ກຳ ນົດການບັນຍາຍດັ່ງລຸ່ມນີ້.

    ມັນມີ 3 ຄຸນຄ່າທີ່ເປັນໄປໄດ້:

    <

  • ສະເຫມີ - ສອນຜູ້ໃຊ້ສະ ເໝີ.
  • ຄັ້ງ ໜຶ່ງ - ພຽງແຕ່ບັນຍາຍຜູ້ໃຊ້ເປັນຄັ້ງ ທຳ ອິດທີ່ພວກເຂົາປະຕິບັດ ຄຳ ສັ່ງ sudo (ນີ້ໃຊ້ໃນເວລາທີ່ບໍ່ມີການ ກຳ ນົດຄ່າໃດໆ)
  • ບໍ່ເຄີຍ - ບໍ່ເຄີຍສັ່ງສອນຜູ້ໃຊ້ເລີຍ.
  •  
    Defaults  lecture="always"
    

    ນອກຈາກນັ້ນ, ທ່ານສາມາດ ກຳ ນົດແຟ້ມການບັນຍາຍທີ່ ກຳ ນົດເອງດ້ວຍພາລາມິເຕີ lecture_file, ພິມຂໍ້ຄວາມທີ່ ເໝາະ ສົມໃນແຟ້ມ:

    Defaults  lecture_file="/path/to/file"
    

    7. ສະແດງຂໍ້ຄວາມທີ່ ກຳ ຫນົດເອງເມື່ອທ່ານໃສ່ລະຫັດຜ່ານ sudo ທີ່ບໍ່ຖືກຕ້ອງ

    ເມື່ອຜູ້ໃຊ້ປ້ອນລະຫັດຜ່ານທີ່ບໍ່ຖືກຕ້ອງ, ຂໍ້ຄວາມສະເພາະໃດ ໜຶ່ງ ຈະຖືກສະແດງຢູ່ໃນເສັ້ນ ຄຳ ສັ່ງ. ຂໍ້ຄວາມເລີ່ມຕົ້ນແມ່ນ "ຂໍອະໄພ, ລອງ ໃໝ່ ອີກຄັ້ງ", ທ່ານສາມາດດັດແກ້ຂໍ້ຄວາມໂດຍໃຊ້ພາລາມິເຕີ badpass_message ດັ່ງຕໍ່ໄປນີ້:

    Defaults  badpass_message="Password is wrong, please try again"
    

    8. ເພີ່ມຂໍ້ ຈຳ ກັດຂອງລະຫັດຜ່ານ sudo

    passwd_tries ພາລາມິເຕີຖືກໃຊ້ເພື່ອລະບຸ ຈຳ ນວນຄັ້ງທີ່ຜູ້ໃຊ້ສາມາດພະຍາຍາມໃສ່ລະຫັດຜ່ານ.

    ຄ່າເລີ່ມຕົ້ນແມ່ນ 3:

    Defaults   passwd_tries=5 
    

    ເພື່ອ ກຳ ນົດເວລາ ໝົດ ລະຫັດຜ່ານ (ຄ່າເລີ່ມຕົ້ນແມ່ນ 5 ນາທີ) ໂດຍໃຊ້ຕົວ ກຳ ນົດການ passwd_timeout, ເພີ່ມເສັ້ນຂ້າງລຸ່ມນີ້:

    Defaults   passwd_timeout=2
    

    9. ໃຫ້ Sudo ດູຖູກທ່ານເມື່ອທ່ານໃສ່ລະຫັດຜ່ານທີ່ບໍ່ຖືກຕ້ອງ

    ໃນກໍລະນີທີ່ຜູ້ໃຊ້ພິມລະຫັດຜ່ານທີ່ບໍ່ຖືກຕ້ອງ, sudo ຈະສະແດງ ຄຳ ຫຍາບຄາຍຢູ່ເທິງປາຍທີ່ມີພາລາມິເຕີໃສ່ຮ້າຍ. ນີ້ຈະປິດພາລາມິເຕີຂອງ badpass_message ໂດຍອັດຕະໂນມັດ.

    Defaults  insults 
    

    ອ່ານຕໍ່: ໃຫ້ Sudo ດູຖູກທ່ານເມື່ອທ່ານໃສ່ລະຫັດຜ່ານທີ່ບໍ່ຖືກຕ້ອງ

    10. ຮຽນຮູ້ເພີ່ມເຕີມການຕັ້ງຄ່າ Sudo

    ນອກຈາກນັ້ນ, ທ່ານຍັງສາມາດຮຽນຮູ້ການຕັ້ງຄ່າ ຄຳ ສັ່ງ sudo ຫຼາຍຂຶ້ນໂດຍການອ່ານ: ຄວາມແຕກຕ່າງລະຫວ່າງ su ແລະ sudo ແລະວິທີການຕັ້ງຄ່າ sudo ໃນ Linux.

    ນັ້ນແມ່ນມັນ! ທ່ານສາມາດແບ່ງປັນການຕັ້ງຄ່າ ຄຳ ສັ່ງຫຼື ຄຳ ແນະ ນຳ sudo ທີ່ມີປະໂຫຍດອື່ນໆກັບຜູ້ໃຊ້ Linux ຢູ່ທີ່ນັ້ນໂດຍຜ່ານສ່ວນ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.