Ubuntu 26.04-ல் sudo-rs மாற்றங்கள் மற்றும் sudoers விதிகள்
Ubuntu 26.04-ல் sudo-rs இயல்பாக மாறுகிறது. உங்கள் sudoers கோப்பில் உள்ள wildcard வாதங்கள் ஏன் வேலை செய்யாது மற்றும் அதற்கு மாற்றாக எதை எழுத வேண்டும் என்பதை இந்த வழிகாட்டி விளக்குகிறது.
Ubuntu-வில் sudo-rs கொண்டுவரும் மாற்றங்கள்
Ubuntu 26.04 LTS பதிப்பில் sudo-rs இயல்பான sudo-வாக வழங்கப்படுகிறது. எனவே, புதிய server-ல் sudo கட்டளையை இயக்கும்போது, அது அசல் C நிரலுக்குப் பதிலாக Rust மொழியில் மறுவடிவமைப்பு செய்யப்பட்ட நிரலையே இயக்குகிறது. பெரும்பாலான sudoers கோப்புகள் வழக்கம்போலவே செயல்படும். ஆனால், கட்டளையின் வாதங்களுக்குள் (arguments) வைல்டு கார்டு (wildcard) பயன்படுத்தும் விதிகள் மட்டும் வேலை செய்யாது; ஏனெனில் sudo-rs வாத உரைகளில் glob patterns-ஐ ஒப்பிட்டுப் பார்ப்பதில்லை.
Ubuntu 25.10 பதிப்பில் இந்த மாற்றம் முதன்முதலில் அறிமுகப்படுத்தப்பட்டது, அது 26.04 LTS பதிப்பிலும் தொடர்கிறது. Ubuntu 24.04 LTS பதிப்பில் இந்த மாற்றம் இல்லை, ஏனெனில் நீங்கள் கைமுறையாக sudo-rs-ஐ நிறுவினால் ஒழிய, அது அசல் sudo-வையே பயன்படுத்தும். நீங்கள் Ubuntu 24.04-லிருந்து 26.04-க்கு மேம்படுத்தும் தருணத்திலோ அல்லது புதிய பதிப்பில் ஒரு புதிய server-ஐ உருவாக்கும்போதோ இந்த மாற்றம் முக்கியத்துவம் பெறுகிறது. நீங்கள் இடைக்கால (interim) பதிப்புகளைப் பயன்படுத்துகிறீர்கள் என்றால், LTS மற்றும் இடைக்கால Ubuntu பதிப்புகள் server-ல் எவ்வாறு வேறுபடுகின்றன என்ற கட்டுரை, எந்த இயந்திரத்தில் இத்தகைய மாற்றங்கள் முதலில் அமலுக்கு வரும் என்பதை விளக்குகிறது.
உங்கள் server-ல் உண்மையில் இயங்கும் sudo-வைச் சரிபார்த்தல்
வெளியீட்டு எண்ணை (release number) வைத்து இதை முடிவு செய்யாதீர்கள். கணினியிடமே கேட்டுத் தெரிந்துகொள்ளுங்கள்.
sudo --version
update-alternatives --config sudo
dpkg -l 'sudo*'இணையத்தில் உள்ள எந்தவொரு பதிப்பு அட்டவணையை விடவும், உங்கள் கணினியில் உள்ள sudo --version-ஐ நம்புங்கள். update-alternatives --config sudo என்பது பதிலின் மற்றொரு பாதியாகும்: இது /usr/bin/sudo-ன் அனைத்து நிறுவப்பட்ட வழங்குநர்களையும் பட்டியலிட்டு, தேர்ந்தெடுக்கப்பட்டதை அடையாளப்படுத்தும். ஒரு package நிறுவப்பட்டிருப்பது, அது தேர்ந்தெடுக்கப்பட்டிருப்பதற்குச் சமமல்ல; எனவே, package பட்டியலைப் பார்க்காமல், தேர்ந்தெடுக்கப்பட்டதைச் சரிபார்க்கவும்.
இந்த மாற்றத்தின் போது இரண்டு பதிப்புகளுமே தொகுக்கப்பட்டுள்ளன (packaged). Rust பதிப்பு sudo-rs ஆகும், இது ஆகஸ்ட் 2026 நிலவரப்படி 26.04-ல் 0.2.13 என்ற பதிப்பில் உள்ளது. Todd C. Miller-ஆல் பராமரிக்கப்படும் அசல் பதிப்பு sudo.ws எனத் தொகுக்கப்பட்டுள்ளது, மேலும் அதன் நிரல்கள் .ws பின்னொட்டைக் (suffix) கொண்டுள்ளன: sudo.ws மற்றும் visudo.ws.
Ubuntu ஏன் sudo-rs-க்கு மாறியது
sudo என்பது setuid root ஆகும். கணினியில் உள்ள எந்தவொரு பயனரும் இதைத் தொடங்க முடியும், மேலும் இது முழு அதிகாரங்களுடன் தொடங்குவதால், இதிலுள்ள ஏதேனும் ஒரு memory bug, local root exploit-ஆக மாற வாய்ப்புள்ளது. CVE-2021-3156 என்பது சரியாக இத்தகைய ஒரு குறைபாடே ஆகும்: இது எந்தவொரு உள்ளூர் பயனரும் அணுகக்கூடிய heap buffer overflow ஆகும், மேலும் இது சுமார் பத்து ஆண்டுகளாக வெளியிடப்பட்ட code-ல் கண்டறியப்படாமல் இருந்தது. Rust இத்தகைய பிழைகளை compile செய்யும்போதே தடுத்துவிடுகிறது, இதுவே இந்த rewrite-க்கான முழுமையான காரணமாகும்.
இரண்டாவது காரணம் அதன் வரம்பு (scope) ஆகும், இது உங்கள் configuration-ஐ நேரடியாகப் பாதிக்கிறது. அசல் sudo, மூன்று தசாப்தங்களாகப் பல்வேறு வசதிகளைத் தன்னகத்தே கொண்டுள்ளது, மேலும் ஒவ்வொரு வசதியும் root அதிகாரத்துடன் இயங்கும் கூடுதல் code-ஐ உள்ளடக்கியது. sudo-rs வேண்டுமென்றே ஒரு குறிப்பிட்ட subset-ஐ மட்டுமே செயல்படுத்துகிறது. அதன் ஆசிரியர்கள் எவை தேவையற்றவை அல்லது ஆபத்தானவை என்று கருதினார்களோ, அவை நீக்கப்பட்டுவிட்டன. எனவே, பல ஆண்டுகளாகச் செயல்பட்டு வந்த ஒரு sudoers விதி, இதில் இல்லாமல் போகலாம். உங்கள் wildcard விதி அத்தகையவற்றில் ஒன்று.
Memory safety என்பது ஒரு வகை பிழையை மட்டுமே நீக்குகிறது. இது ஒரு நிரலை முழுமையாகப் பிழையற்றதாக மாற்றிவிடாது. sudo-rs இயல்பான தேர்வாக (default) மாறியதிலிருந்து, அதற்கும் பாதுகாப்புத் திருத்தங்கள் (security fixes) வெளியிடப்பட்டுள்ளன. மற்ற மென்பொருட்களைப் போலவே இதையும் தொடர்ந்து patch செய்யவும்.
எந்த sudoers விதிகள் இன்னும் செயல்படுகின்றன
கோப்பு அதே கோப்புதான். sudo-rs ஆனது /etc/sudoers மற்றும் /etc/sudoers.d/-ல் உள்ள drop-in கோப்புகளை வாசிக்கிறது. ஒரு server நிர்வாகி எழுதும் சாதாரண விதிகள் ஆதரிக்கப்படுகின்றன:
deploy ALL=(ALL:ALL) ALL, மற்றும்%sudo ALL=(ALL:ALL) ALLபோன்ற குழு வடிவங்கள்NOPASSWD:மற்றும்PASSWD:குறிச்சொற்கள் (tags)User_Alias,Runas_Alias,Host_Aliasமற்றும்Cmnd_Alias- துல்லியமான argument பட்டியலைக் கொண்ட கட்டளை, உதாரணமாக
/usr/bin/systemctl restart app-api ""-ஐத் தொடர்ந்து வரும் கட்டளை, இது எந்த argument-களும் இல்லாதபோது மட்டுமே கட்டளையை அனுமதிக்கிறது- அதன் இறுதி argument-ஆக
*-ஐக் கொண்ட கட்டளை, இது அதற்குப் பின் வரும் எந்த argument-களையும் அனுமதிக்கிறது /-ல் முடியும் கோப்பகப் பாதை (directory path), இது அந்த கோப்பகத்தில் உள்ள எந்தக் கட்டளையையும் அனுமதிக்கிறது- ஒரு பட்டியலிலிருந்து கட்டளையைக் கழிக்க
! Defaults-ன் பயனுள்ள துணைக்குழு, இதில்secure_path,env_keep,env_check,timestamp_timeout,passwd_tries,editor,umask,targetpw,rootpwமற்றும்use_ptyஆகியவை அடங்கும்
இரண்டு defaults வித்தியாசமாகச் செயல்படுகின்றன, இது பயனர்களைக் குழப்பக்கூடும். env_reset-ஐ sudo-rs-ல் அணைக்க முடியாது: அது எப்போதும் இயங்கியே இருக்கும். use_pty முன்னிருப்பாக (default) இயக்கப்பட்டிருக்கும், எனவே கட்டளை அதன் சொந்த pseudo-terminal-ல் இயங்கும்.
உங்கள் wildcard sudoers விதி ஏன் பொருந்தாமல் போனது
கோப்பின் பெயரில் (file name) wildcard-களைப் பயன்படுத்த இன்னும் அனுமதிக்கப்படுகிறது. %ops ALL = /sbin/fsck* என்ற விதி sudo fsck மற்றும் sudo fsck_exfat ஆகியவற்றை இன்னும் அனுமதிக்கிறது, ஏனெனில் * என்பது கோப்பு முறைமையில் (filesystem) சரிபார்க்கப்படும் பாதையின் ஒரு பகுதியாகும்.
Argument பட்டியலில், sudo-rs இரண்டு சிறப்பு வடிவங்களை மட்டுமே ஏற்கும், அவற்றில் எதுவுமே pattern கிடையாது. "" என்பது எந்த argument-ம் இல்லை என்று பொருள். இறுதியில் உள்ள * என்பது அதற்குப் பின் வரும் எந்த argument-களையும் குறிக்கும். மற்ற அனைத்து argument-களும் literal text-ஆகவே ஒப்பிடப்படும். எனவே %ops ALL = /sbin/service ntp * சரியாகச் செயல்படும், ஏனெனில் ntp என்பது literal மற்றும் * என்பது இறுதியில் உள்ளது. இருப்பினும், இது போன்ற ஒரு விதி நீங்கள் எதிர்பார்த்த எதையும் வழங்காது:
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart app-*app-* என்பது ஒரு argument-ன் இடையில் உள்ள pattern ஆகும். sudo-rs இதை விரிவுபடுத்தாது (expand), எனவே இந்த விதி systemctl restart app-api-ஐ உள்ளடக்காது மற்றும் sudo அந்த command-ஐ நிராகரிக்கும். உங்கள் server-ல் உள்ள எந்தவொரு விதியைப் பற்றிய உண்மையை அறிய இரண்டு command-கள் உதவும்: root-ஆக இயக்கப்படும் sudo -l -U deploy, அந்த account உண்மையில் எதை இயக்க முடியும் என்பதைக் காட்டும், மேலும் sudo visudo -c அந்த கோப்பு சரியாக parse ஆகிறதா என்பதைத் தெரிவிக்கும். எதேச்சையாக மாற்றங்களைச் செய்வதற்கு முன் இவற்றை இயக்கவும்.
Wildcard விதி எப்போதும் ஒரு ஓட்டையாகவே இருந்தது
அசல் sudo-வில், நீங்கள் உள்ளிடும் arguments அனைத்தும் ஒன்றாக இணைக்கப்பட்டு, விதியின் argument string-உடன் glob மூலம் ஒப்பிடப்படும். ஒரு glob, whitespace-ஐயும் பொருத்தும். இதுவே பெரும்பாலானோர் கவனிக்கத் தவறும் பகுதி.
sudo-rs ஆவணங்கள் இதை மிகத் தெளிவாக விளக்குகின்றன. /bin/rm *.txt என்ற விதி sudo rm -rf /home .txt-ஐயும் அனுமதிக்கிறது. ஏனெனில், அதில் உள்ள * என்பது -rf /home -ஐ உள்ளடக்கிவிடுகிறது, மேலும் இணைக்கப்பட்ட string-ன் இறுதியில் .txt உள்ளது. இந்த விதி "text கோப்புகள் மட்டுமே" என்று பொருள்படுவதாகத் தோன்றினாலும், உண்மையில் இது "வரியின் இறுதியில் .txt இருந்தால், எந்த argument-ஐயும் அனுமதிக்கலாம்" என்று பொருள்படுகிறது.
இது systemctl உதாரணத்திற்கும் பொருந்தும். arguments அனைத்தும் ஒரே string-ஆக இணைக்கப்பட்டு ஒப்பிடப்படுவதால், இறுதியில் உள்ள pattern, அதற்குப் பின் நீங்கள் சேர்க்கும் எதையும் பொருத்திவிடும். எனவே, restart app-* என்பது restart app-api-ஐயும், அதனுடன் caller சேர்க்கும் கூடுதல் arguments-களையும் உள்ளடக்கிவிடும். ஒரு argument-க்குள் இருக்கும் pattern, அதைச் சுற்றியுள்ள arguments-களை வெளிப்படுத்திவிடும்; ஒரு கட்டளையின் அதிகாரம் அந்த arguments-களில்தான் உள்ளது. sudo-rs இந்த அமைப்பை பாதுகாப்பானதாக மாற்ற முயற்சிப்பதற்குப் பதிலாக, அதை நிராகரிக்கிறது. ஏனெனில், இதற்குப் பொதுவான மற்றும் பாதுகாப்பான வடிவம் எதுவும் இல்லை.
Wildcard-க்கு பதிலாக தெளிவான கட்டளைப் பட்டியலைப் பயன்படுத்துதல்
பெரும்பாலான wildcard விதிகள், நான்கு வரிகளைத் தட்டச்சு செய்ய விரும்பாத காரணத்தாலேயே உருவாக்கப்படுகின்றன. அந்த நான்கு வரிகளையும் தட்டச்சு செய்யுங்கள்.
Cmnd_Alias APP_RESTART = /usr/bin/systemctl restart app-api, /usr/bin/systemctl restart app-worker
Cmnd_Alias APP_STATUS = /usr/bin/systemctl status app-api, /usr/bin/systemctl status app-worker
deploy ALL=(root) NOPASSWD: APP_RESTART, APP_STATUSசரியான path-ஐக் குறிப்பிடுங்கள். binary /usr/bin/systemctl-ஆக இருக்கும் ஒரு system-ல் /bin/systemctl என்று பெயரிடப்பட்ட விதி ஒருபோதும் பொருந்தாது. இந்தத் தோல்வி, permissions சிக்கலைப் போலவே தோன்றும். command -v systemctl கட்டளையைப் பயன்படுத்தி இதை உறுதிப்படுத்தி, அது வெளியிடும் தகவலைப் பதிவிடுங்கள்.
விதியை /etc/sudoers-ல் சேர்ப்பதற்குப் பதிலாக, அதன் சொந்த drop-in கோப்பில் சேமிக்கவும். இதன் மூலம், package upgrade செய்யும்போது உங்கள் மாற்றங்கள் பாதிக்கப்படாது:
sudo visudo -f /etc/sudoers.d/90-deploy
sudo visudo -c
sudo -l -U deployகோப்பின் பெயரில் dot அல்லது இறுதியில் tilde இல்லாமல் பார்த்துக்கொள்ளுங்கள். sudoers.d-ல் உள்ள dot கொண்ட கோப்புகளை அசல் sudo புறக்கணித்துவிடும். எனவே, 90-deploy.conf என்பது ஒரு வழக்கமான silent no-op ஆகும். இந்த மரபைப் பின்பற்றுவதில் எந்தச் சிரமமும் இல்லை.
பட்டியல் நீளமாக இருக்கும்போது root-க்கு சொந்தமான wrapper-ஐப் பயன்படுத்தவும்
அனுமதிக்கப்பட்ட கட்டளைகளின் பட்டியல் மிக நீளமாக இருந்தால், அந்த முடிவெடுக்கும் பணியை sudoers கோப்பிலிருந்து நீக்கிவிட்டு, root-க்கு சொந்தமான ஒரு சிறிய நிரலுக்கு மாற்றவும்.
sudo tee /usr/local/sbin/app-restart >/dev/null <<'EOF'
#!/bin/sh
set -eu
case "${1:-}" in
app-api|app-worker) ;;
*) echo "app-restart: not allowed: ${1:-}" >&2; exit 1 ;;
esac
exec /usr/bin/systemctl restart "$1"
EOF
sudo chown root:root /usr/local/sbin/app-restart
sudo chmod 0755 /usr/local/sbin/app-restart
ls -l /usr/local/sbin/app-restartஇப்போது sudoers கோப்பில் ஒரே ஒரு கட்டளையை மட்டும் குறிப்பிட வேண்டும்:
deploy ALL=(root) NOPASSWD: /usr/local/sbin/app-restart *இறுதியில் உள்ள * இங்கே ஏற்றுக்கொள்ளத்தக்கது, ஏனெனில் sudo அல்ல, அந்த script-தான் எதை அனுமதிக்க வேண்டும் என்று தீர்மானிக்கிறது. இந்த பாதுகாப்பு, அந்த script root-க்கு சொந்தமாகவும், மற்றவர்கள் யாரும் மாற்ற முடியாதவாறும் (writable) இருக்கும் வரை மட்டுமே செல்லுபடியாகும். ஒருவேளை deploy அந்த கோப்பை மாற்ற முடிந்தால், deploy அதன் உள்ளடக்கத்தை மாற்றி எதை வேண்டுமானாலும் root உரிமையுடன் இயக்க முடியும்; இது நீங்கள் நீக்கிய wildcard விதியை விட ஆபத்தானது. ls -l கட்டளையைப் பயன்படுத்தி கோப்பின் mode-ஐச் சரிபார்க்கவும். அதன் வெளியீடு உங்களுக்குப் புரியவில்லை என்றால், drwxr-xr-x அனுமதி சரத்தைப் புரிந்துகொள்வது எப்படி என்பதைக் கற்றுக்கொள்ள ஐந்து நிமிடங்கள் போதும். இதே விதி அந்த directory-க்கும் பொருந்தும்: /usr/local/sbin directory-யும் அந்த account-ஆல் மாற்றக்கூடியதாக (writable) இருக்கக்கூடாது, ஏனெனில் ஒரு directory மாற்றக்கூடியதாக இருந்தால், அதிலுள்ள கோப்பை முழுமையாக வேறொன்றைக் கொண்டு மாற்ற முடியும்.
sudo விதிக்கு பதிலாக அந்தப் பணிக்கு எனத் தனி கணக்கை உருவாக்குதல்
ஒரு கட்டளைக்கு ஏன் root அதிகாரம் தேவைப்படுகிறது என்பதே பெரும்பாலும் முக்கியமான கேள்வியாகும். ஒரு service தனது சொந்த பயனர் கணக்கில் இயங்கும்போது, அந்தப் பயனரே அதை நிர்வகிக்க முடியும்; இதற்கு sudoers கோப்பில் எந்த மாற்றமும் தேவையில்லை. system units-ஐப் பொறுத்தவரை, systemd ஏற்கனவே அந்த முடிவை polkit-க்கு வழங்குகிறது. எனவே, ஒரு விதியின் மூலம் ஒரு குறிப்பிட்ட unit-ஐ ஒரு குறிப்பிட்ட operator நிர்வகிக்க அனுமதி அளிக்கலாம்:
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "app-api.service" &&
subject.user == "deploy") {
return polkit.Result.YES;
}
});இதை /etc/polkit-1/rules.d/50-app-api.rules எனச் சேமிக்கவும். இப்போது deploy எந்தவிதமான sudo அனுமதியும் இன்றி systemctl restart app-api கட்டளையை இயக்க முடியும். இதை அந்தப் பணி எந்தச் சூழலில் இயங்க வேண்டுமோ, அதே சூழலில் இருந்து சோதிக்கவும். உங்கள் SSH session-ல் வேலை செய்யும் ஒரு விதி, cron-ல் வேலை செய்யுமா என்பதை உறுதிப்படுத்துவது அவசியம். எப்படியிருப்பினும், ஒரு பணியைச் செய்யும் கணக்கு அந்தப் பணிக்கு மட்டுமே உரியதாக இருக்க வேண்டும். இதுவே VPS-ல் குறைந்தபட்ச அதிகாரங்களைக் கொண்ட பயனர் கணக்குகள் என்பதன் பின்னணியில் உள்ள அடிப்படை தர்க்கமாகும்.
sudo-rs-ல் விடுபட்ட பிற அம்சங்கள்
sudo -E செயல்படுத்தப்படவில்லை. உங்களுக்குத் தேவையான மாறிகளை Defaults env_keep += "HTTP_PROXY HTTPS_PROXY NO_PROXY" மூலம் குறிப்பிடவும். மேலும், env_reset எப்போதும் செயல்பாட்டில் இருக்கும் என்பதை நினைவில் கொள்க; எனவே, சேமிக்கப்படாத அனைத்தும் நீக்கப்படும்.
LDAP-ல் மையப்படுத்தப்பட்ட sudoers சேமிப்பகம் நீக்கப்பட்டுள்ளது. sudoers.ldap மற்றும் cvtsudoers செயல்படுத்தப்படவில்லை, மேலும் sudo-ldap தொகுப்பு 26.04 பதிப்பில் நீக்கப்பட்டுவிட்டது. PAM அல்லது SSSD வழியாக LDAP அங்கீகாரம் தொடர்ந்து செயல்படும். கோப்பக அடிப்படையிலான கொள்கை (policy-in-a-directory) அம்சம் மட்டுமே இதில் இல்லை.
அனுமதிக்கப்பட்ட கட்டளையிலிருந்து shell escapes-ஐத் தடுக்க முயன்ற INTERCEPT செயல்படுத்தப்படவில்லை. இது உறுதியான பயனர்களைத் தடுப்பதில் எப்போதும் தோல்வியையே தந்தது. ஒரு விதி, பயனரை root-ஆக ஒரு editor அல்லது interpreter-ஐ இயக்க அனுமதித்தால், அவர்களுக்கு root அதிகாரம் கிடைத்துவிடும்; எந்தவொரு sudo விருப்பமும் இதை மாற்றாது.
Session recording செயல்படுத்தப்படவில்லை, எனவே I/O log மற்றும் sudoreplay வசதி இல்லை. பதிவுகள் (logs) syslog-க்கு மட்டுமே செல்லும். அவற்றை வேறு இடத்திற்கு மாற்ற logfile விருப்பம் இல்லை, எனவே உங்கள் கணினியில் syslog எங்கு அனுப்பப்படுகிறதோ, அங்கேயே sudo செய்திகளும் பதிவாகும்.
மீண்டும் sudo.ws-க்கு மாற வேண்டுமா?
நீங்கள் மாறலாம், மேலும் 26.04 சுழற்சியின் போது இதற்காகவே அசல் பதிப்பு தொகுக்கப்பட்டு (packaged) வழங்கப்படுகிறது.
sudo apt install sudo.ws
update-alternatives --config sudo
sudo update-alternatives --set sudo /usr/bin/sudo.wsஇந்த பக்கத்திலிருந்து நகலெடுப்பதற்குப் பதிலாக, --config வெளியீட்டிலிருந்து சரியான பாதைகளை (paths) நகலெடுக்கவும், ஏனெனில் உங்கள் கணினி ஏற்கும் பட்டியல் அதுதான். பிறகு மீண்டும் sudo-rs-க்கு மாறுவது என்பது, அதே பட்டியலிலிருந்து sudo-rs binary பாதைக்கு alternative-ஐ அமைப்பதாகும்.
sudo-வை பாதிக்கும் எதையும் செய்வதற்கு முன்பு, இரண்டாவது SSH session-ஐத் திறந்து, லாக்-இன் செய்து, சும்மா வைத்திருக்கவும். parse செய்ய முடியாத sudoers கோப்பு அல்லது நிறுவப்படாத binary-ஐக் குறிக்கும் alternative, remote box-ல் root-ஆக மாற வழியில்லாமல் செய்துவிடும். இந்த பழக்கம் புதிய VPS-ல் முதல் பத்து நிமிடங்கள் செய்யும் மற்ற அனைத்து வேலைகளுடனும் இருக்க வேண்டும்.
மீண்டும் மாறுவதை ஒரு தீர்வாகக் கருதாமல், ஒரு காலக்கெடுவாகக் கருதுங்கள். இது விதிகளைச் சரியாக மாற்றி எழுத உங்களுக்கு ஒரு வாரம் அவகாசம் அளிக்கிறது. இந்த மாற்றத்தைச் செய்வது அவசியமானது, ஏனெனில் நீங்கள் நீக்கும் ஒவ்வொரு wildcard விதியும், அதன் ஆசிரியர் நினைத்ததை விட அதிக அனுமதிகளை வழங்கிக்கொண்டிருந்தது.
FAQ
Ubuntu 26.04-ல் எனது sudoers wildcard விதி ஏன் வேலை செய்யவில்லை?
Ubuntu 26.04 LTS பதிப்பில் sudo-rs இயல்பான sudo-வாக இருப்பதால், கட்டளைகளின் arguments-க்குள் இருக்கும் wildcard patterns-ஐ sudo-rs அங்கீகரிப்பதில்லை. இது கட்டளையின் கோப்புப் பெயரில் wildcard-ஐ அனுமதிக்கிறது, "" என்பது எந்த arguments-ம் இல்லை என்பதையும், * என்பது இறுதி argument என்பதையும் குறிக்கும். /usr/bin/systemctl restart app-* போன்ற ஒரு விதி, argument-ன் இடையில் ஒரு pattern-ஐக் கொண்டிருப்பதால், அது எதையும் அனுமதிக்காது மற்றும் அக் கட்டளை நிராகரிக்கப்படும். அந்த கணக்கிற்கு உண்மையில் என்னென்ன அனுமதிகள் உள்ளன என்பதைப் பார்க்க root-ஆக sudo -l -U deploy கட்டளையை இயக்கவும். பின்னர், அந்த விதியை சரியான கட்டளைகளாக மாற்றவும் அல்லது root-க்குச் சொந்தமான wrapper script-ஐப் பயன்படுத்தவும்.
Ubuntu 26.04-ல் அசல் sudo-விற்கு எப்படி திரும்புவது?
அசல் sudo, sudo.ws என்ற பெயரில் தொகுக்கப்பட்டுள்ளது. அதை sudo apt install sudo.ws மூலம் நிறுவவும், பின்னர் sudo update-alternatives --set sudo /usr/bin/sudo.ws மூலம் அதற்கான alternative-ஐ அமைக்கவும். உங்கள் கணினியில் உள்ள சரியான பாதைகளைப் பார்க்க முதலில் update-alternatives --config sudo கட்டளையை இயக்கவும். மாற்றங்களைச் செய்யும்போது, பாதுகாப்பிற்காக இரண்டாவது SSH session-ஐத் திறந்து வைத்திருக்கவும். நீங்கள் எந்த sudo-வை தேர்வு செய்தாலும், 26.04-ல் நீக்கப்பட்ட sudo-ldap மீண்டும் கிடைக்காது.
sudo-rs அதே /etc/sudoers கோப்பை வாசிக்குமா?
ஆம். sudo-rs, /etc/sudoers கோப்பையும் /etc/sudoers.d/-ன் கீழ் உள்ள drop-in கோப்புகளையும் வாசிக்கும். பயனர்கள், குழுக்கள், aliases, run-as விவரக்குறிப்புகள் மற்றும் NOPASSWD tag ஆகியவற்றிற்கு அதே syntax-ஐப் பயன்படுத்தும். இது sudoers மொழியின் ஒரு பகுதியை மட்டுமே செயல்படுத்துவதால், சில அம்சங்கள் மாறுபடுவதை விட, சில அம்சங்கள் இல்லாமலேயே இருக்கும். sudo visudo மூலம் திருத்தங்களைச் செய்து, உங்கள் session-ஐ முடிக்கும் முன் sudo visudo -c மூலம் சரிபார்க்கவும்.
sudo-rs-ல் sudo -E-க்கு மாற்றாக என்ன உள்ளது?
sudo -E இதில் செயல்படுத்தப்படவில்லை. அசல் sudo-விலேயே இது தவிர்க்கப்பட வேண்டிய ஒன்றாக இருந்தது, ஏனெனில் root process-க்கு பயனர் கட்டுப்படுத்தும் environment-ஐ வழங்குவது, அந்த process-ன் செயல்பாட்டை மாற்றும் ஒரு அறியப்பட்ட வழியாகும். அதற்குப் பதிலாக, உங்களுக்குத் தேவையான variables-ஐ மட்டும் sudoers-ல் Defaults env_keep += "HTTP_PROXY HTTPS_PROXY NO_PROXY" போன்ற வரியைப் பயன்படுத்தி குறிப்பிடவும். env_reset வசதி sudo-rs-ல் எப்போதும் செயல்பாட்டில் இருக்கும், அதை முடக்க முடியாது; எனவே நீங்கள் குறிப்பிடாத அனைத்து variables-ம் நீக்கப்படும்.