Я просто считал другое время, которые отправляют: Где оскорбления sudo хранятся?
Но у меня просто есть красивый вопрос об этих оскорблениях:
Мы можем добавить новые путем добавления, что другой регистрирует (вместо modificating заголовок внутри plugins/sudoers
)?
Текущие файлы оскорблений sudo:
ins_2001.h
ins_classic.h
ins_csops.h
ins_goons.h
insults.h
Нет, Вы не можете просто 'добавить' оскорбления каталога и ожидать, что они будут работать. Единственный способ добавить новые оскорбления состоит в том, чтобы перекомпилировать sudo
так, чтобы он включал те оскорбления во время компиляции.
ссылка от Вашего вопроса (, Где sudo' s оскорбления сохранен? ), объясняет, каковы те файлы:
файл insults.h содержит инструкции по компилятору относительно который из вышеупомянутых оскорблений для включения в скомпилированное ядро. Действительно, Вы могли создать свой собственный файл оскорблений, добавить имя к insults.h и перекомпилировать...
, Но необходимо будет добавить оскорбления и затем перекомпилировать для включения их. Выполнение этого, однако, будет означать, что необходимо перекомпилировать sudo
, если существуют обновления системы защиты, и т.д. и вероятно, что это может вызвать проблемы безопасности в будущем, если Вы не перекомпилировали с включенными патчами безопасности.
Можно добавить новые оскорбления только путем замены существующих оскорблений равной или большей длины.
Из второго ответа в Вашей ссылке эти фразы:
ins_2001.h (2 001 оскорбление Космической одиссеи):
/* * HAL insults (paraphrased) from 2001. */ "Just what do you think you're doing Dave?", "It can only be attributed to human error.",
$ grepall "Just what do you think you're doing Dave?"
Binary file /usr/lib/sudo/sudoers.so matches
хорошо, мы теперь знаем имя файла. Это было легкой частью.
Сначала делает резервное копирование (потому что мы всегда не забываем делать то право?):
$ sudo cp -a /usr/lib/sudo/sudoers{.so,.so.bak}
$ ll /usr/lib/sudo/sudoers{.so,.so.bak}
-rw-r--r-- 1 root root 316768 Oct 11 06:01 /usr/lib/sudo/sudoers.so
-rw-r--r-- 1 root root 316768 Oct 11 06:01 /usr/lib/sudo/sudoers.so.bak
Затем сделать наш сценарий названным sudoinsults
:
#!/bin/bash
# NAME: sudoinsult
# PATH: $HOME/askubuntu/
# DESC: For: https://askubuntu.com/questions/1188779/adding-new-sudo-insults
# DATE: November 14, 2019.
# NOTE: Change sudo insults to personal favorites
# Build array of insults from disk
IFS= Создают файл данных
, Надо надеяться, никакая потребность объяснить, как создать текстовый файл (подсказка: gedit
)
$ cat sudoinsult.txt
Just what do you think you're doing Dave?
Just what do you think you're doing Rick?
It can only be attributed to human error.
It can only be attributed to the beer.
Запущенный скрипт и результаты проверки
$ sudo ./sudoinsult
Replacing: 'Just what do you think you're doing Dave?'
With: 'Just what do you think you're doing Rick?'
Replacing: 'It can only be attributed to human error.'
With: 'It can only be attributed to the beer.'
2 Insults replaced.
$ ll /usr/lib/sudo/sudoers{.so,.so.bak}
-rw-r--r-- 1 root root 316768 Nov 14 17:43 /usr/lib/sudo/sudoers.so
-rw-r--r-- 1 root root 316768 Oct 11 06:01 /usr/lib/sudo/sudoers.so.bak
$ grep "Just what do you think you're doing Rick?" /usr/lib/sudo/sudoers.so
Binary file /usr/lib/sudo/sudoers.so matches
$ grep "It can only be attributed to the beer." /usr/lib/sudo/sudoers.so
Binary file /usr/lib/sudo/sudoers.so matches
\n' Arr=( $(cat sudoinsult.txt) )
# Initialize variables
File="/usr/lib/sudo/sudoers.so"
upper=0
Spaces=" "
Spaces="$Spaces"" "
[[ ${#Arr[@]} -gt 0 ]] && upper=$(( ${#Arr[@]} - 1 ))
[[ $upper -gt 0 ]] && for (( i=0; i<upper; i=i+2 )) ; do
Search="${Arr[i]}" # Move array indices to named variables
Replace="${Arr[i+1]}" # for a simpler life.
printf "Replacing: '%s'\n With: '%s'\n" "$Search" "$Replace"
if [[ "${#Search}" -lt "${#Replace}" ]] ; then
echo "Replacement can't be longer than original"
continue
elif [[ "${#Search}" -lt 8 ]] ; then
echo "Original insult cannot be less than 8 characters"
continue
elif [[ "${#Search}" -gt "${#Spaces}" ]] ; then
echo "Original insult cannot be longer than ${#Spaces} characters"
continue
elif [[ "${#Replace}" -lt 1 ]] ; then
echo "Replacement insult cannot be less than 1 character"
continue
elif ! grep "$Search" "$File" >/dev/null ; then
echo "Search insult not found in $File"
continue
fi
# Pad replacement with spaces as needed.
ReplaceS="$Replace${Spaces:0:$((${#Search} - ${#Replace}))}"
[[ "${#ReplaceS}" -ne "${#Search}" ]] && \
{ echo Internal error ReplaceS different length than Search; exit; }
# Looks wrong: https://unix.stackexchange.com/a/354493/200094
#y="${y:0:40}${forty:0:$((40 - ${#y}))}"
#echo "'${y}'"
sed -i "s/$Search/$ReplaceS/" "$File"
(( InsultCount++ ))
done
if [[ $upper -gt 0 ]] ; then
echo "$InsultCount Insults replaced."
else
echo "Insult file (sudoinsult.txt) does not exist or only has one line." >2
fi
, Надо надеяться, никакая потребность объяснить, как создать текстовый файл (подсказка: gedit
)
$ cat sudoinsult.txt
Just what do you think you're doing Dave?
Just what do you think you're doing Rick?
It can only be attributed to human error.
It can only be attributed to the beer.
$ sudo ./sudoinsult
Replacing: 'Just what do you think you're doing Dave?'
With: 'Just what do you think you're doing Rick?'
Replacing: 'It can only be attributed to human error.'
With: 'It can only be attributed to the beer.'
2 Insults replaced.
$ ll /usr/lib/sudo/sudoers{.so,.so.bak}
-rw-r--r-- 1 root root 316768 Nov 14 17:43 /usr/lib/sudo/sudoers.so
-rw-r--r-- 1 root root 316768 Oct 11 06:01 /usr/lib/sudo/sudoers.so.bak
$ grep "Just what do you think you're doing Rick?" /usr/lib/sudo/sudoers.so
Binary file /usr/lib/sudo/sudoers.so matches
$ grep "It can only be attributed to the beer." /usr/lib/sudo/sudoers.so
Binary file /usr/lib/sudo/sudoers.so matches