добавьте эту строку к разделу [Global] smb.conf
guest account = dave
Есть по крайней мере 3 способа, которыми это может быть опасно:
Если / etc / sudoers
не оканчивается на символ новой строки (который разрешают sudo
и visudo
), например, если он заканчивается незавершенной строкой #includedir /etc/sudoers.d
, ваша команда сделает это:
#includedir /etc/sudoers.dDefaults оскорбляет
, который сломает его и сделает sudo
непригодным для использования.
echo
может не записать полную строку, например, если файловая система заполнена. Например, он может просто записать Значения по умолчанию в
. Что снова сломает ваш файл sudoers
. / etc / sudoers
одновременно, данные, которые они пишут, могут быть чередующимися. visudo
позволяет избежать этих проблем, поскольку вместо этого позволяет редактировать временный файл ( /etc/sudoers.tmp
), определяет, был ли файл изменен (к сожалению, нет, если файл был успешно изменен, поскольку, похоже, не проверяет статус выхода редактора), проверяет синтаксис и выполняет переименование
(атомарная операция) для перемещения нового файла на место. Таким образом, он либо успешно обновит файл (при условии, что ваш редактор также оставит файл без изменений, если он не сможет записать новый), либо завершится неудачей, если это не удастся, или синтаксис неверен.
visudo
также защищает от одновременного редактирования файлов sudoers
несколькими людьми.
Теперь надежно использовать visudo
в автоматическом режиме также сложно. С этим есть несколько проблем:
visudo
с переменной среды VISUAL
(имеет приоритет над EDITOR
), но только если опция env_editor
не была отключена. visudo
по крайней мере, при некоторых условиях, редактирует все / etc / sudoers
и все файлы, которые он включает (запускает $ VISUAL
для все они). Поэтому вы должны убедиться, что ваш $ VISUAL
изменяет только / etc / sudoers
. Разобраться со всем этим немного сложно. Вот как это можно сделать:
NEW_TEXT='Defaults insults' \
CODE='
if [ "$2" = /etc/sudoers.tmp ]; then
printf >&2 "Editing %s\n" "$2"
umask 077
{
cat /etc/sudoers.tmp && printf "\n%s\n" "$NEW_TEXT"
} > /etc/sudoers.tmp.tmp &&
mv -f /etc/sudoers.tmp.tmp /etc/sudoers.tmp
else
printf >&2 "Skipping %s\n" "$2"
fi' \
VISUAL='sh -fc IFS=:;$1 sh eval:eval:"$CODE"' visudo < /dev/null
Не будет работать, если env_editor
не установлен.
В системе GNU лучшей альтернативой было бы использовать sed -i
, который оставит sudoers.tmp
без изменений, если не удается записать новую версию:
Добавить оскорблений
:
SED_CODE='
/^[[:blank:]]*Defaults.*insults/,${
/^[[:blank:]]*Default/s/!*\(insults\)/\1/g
$q
}
$a\Defaults insults' \
CODE='
if [ "$2" = /etc/sudoers.tmp ]; then
printf >&2 "Editing %s\n" "$2"
sed -i -- "$SED_CODE" "$2"
else
printf >&2 "Skipping %s\n" "$2"
fi' \
VISUAL='sh -fc IFS=:;$1 sh eval:eval:"$CODE"' visudo < /dev/null
Удалить оскорбления:
SED_CODE='
/^[[:blank:]]*Defaults.*insults/,${
/^[[:blank:]]*Defaults/s/!*\(insults\)/!\1/g
$q
}
$a\Defaults !insults' \
CODE='
if [ "$2" = /etc/sudoers.tmp ]; then
printf >&2 "Editing %s\n" "$2"
sed -i -- "$SED_CODE" "$2"
else
printf >&2 "Skipping %s\n" "$2"
fi' \
VISUAL='sh -fc IFS=:;$1 sh eval:eval:"$CODE"' visudo < /dev/null
Я немного покинул и кажется Включение
Поддержка доступна в Sudo
, возвращаясь в долгий путь (~ 2001 от того, что я могу Скажите), так что его следует поддерживать в RHEL 5. Ищите включенную директиву в ваших сударах:
sudo grep '#includedir' /etc/sudoers
Если вы получите результат, то в идеале вам следует добавлять и удалять файлы в этом каталоге, и это обычно / etc / sudoers.d
. Этот путь может быть трудно определить в скрипте оболочки.
Во всяком случае, предполагая sudoers.d
, вы должны максимально добавлять файлы с разрешениями 0600
в этом каталоге. Что-то вроде:
umask 0177
echo 'Defaults insults' > /tmp/insults &&
sudo sh -c 'cp /tmp/insults /etc/sudoers.d; visudo -cf /etc/sudoers.d/insults
|| RM /etc/sudoers.d/insults'
Then Удаление настройки так же просто, как:
sudo rm /etc/sudoers.d/insults
Вы можете использовать Tee -a
в качестве редактора
:
$ sudo VISUAL='tee -a' visudo <<<"Defaults insults"
Defaults insults
$ sudo tail /etc/sudoers
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Defaults insults
Я не знаю, если EL5 Sudo
включает в себя поддержку
, но если он делает, то создать новые файлы в нем Visudo -F
, пожалуйста.