Вопрос или проблема
У меня есть 2 линукса: 32-битный (eagle – 12.1) и 64-битный (braswell – 42.2). В 64-битной версии у меня есть etc/sudoers.d/user, так же как и в 32-битной версии, но в 32-битной версии в файле etc/sudoers, когда я добавляю строку includedir etc/sudoers.d в редакторе visudo, я получаю синтаксическую ошибку, что означает, что я могу считать это не поддерживаемым? (вопрос в моей голове).
Синтаксическая ошибка:
root@linux59:~> sudo visudo sudo: >>> /etc/sudoers: синтаксическая ошибка около строки 76 <<< sudo: ошибка парсинга в /etc/sudoers около строки 76 sudo: не найдены валидные источники sudoers, выход sudo: невозможно инициализировать плагин политики эта ошибка в 32-битной версии
Ошибка при выполнении serviname start в cmd:
sudo: >>> /etc/sudoers: синтаксическая ошибка около строки 76 <<< sudo: ошибка парсинга в /etc/sudoers около строки 76 sudo: не найдены валидные источники sudoers, выход sudo: невозможно инициализировать плагин политики sudo: >>> /etc/sudoers: синтаксическая ошибка около строки 76 <<< sudo: ошибка парсинга в /etc/sudoers около строки 76 sudo: не найдены валидные источники sudoers, выход
32 бит etc/sudoers
# файл sudoers.
#
# Этот файл ДОЛЖЕН редактироваться с помощью команды 'visudo' от имени root.
#
# См. страницу man sudoers для получения деталей о том, как писать файл sudoers.
#
# Спецификация алиасов хоста
# Спецификация алиасов пользователей
# Спецификация алиасов команд
# Спецификация значений по умолчанию
# Предотвращение влияния переменных окружения на программы
# неожиданным или вредным образом (CVE-2005-2959, CVE-2005-4158, CVE-2006-0151)
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"
# Закомментируйте предыдущую строку и раскомментируйте следующую, если вам нужно
# использовать специальные методы ввода. Это может позволить пользователям скомпрометировать учетную запись root,
# если им разрешено запускать команды без аутентификации.
#Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
# В конфигурации по умолчанию (не настроенной) sudo запрашивает пароль root.
# Это позволяет использовать обычную учетную запись пользователя для администрирования
# свежес установленной системы. При настройке sudo удалите две
# следующие строки:
#Defaults targetpw # запросить пароль целевого пользователя, т.е. root
#ALL ALL=(ALL) ALL # ВНИМАНИЕ! Используйте это только вместе с 'Defaults targetpw'!
Defaults visiblepw # нужно, чтобы 2root снова работал. Пароль не выводится на экран, однако.
# Спецификация алиасов Runas
# Спецификация привилегий пользователей
root ALL=(ALL) SETENV: ALL
m ALL=(ALL) SETENV:ALL
deviceadm ALL = (ALL) SETENV: ALL
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/setAdapter
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/setGateway
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/setPCName
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/test-usbstick
%nta ALL=SETENV: NOPASSWD: /opt/mt/netconfig/netconfig.pl
%nta ALL=SETENV: NOPASSWD: /bin/date
%nta ALL=SETENV: NOPASSWD: /etc/init.d/nmb
%nta ALL=SETENV: NOPASSWD: /bin/systemctl
%nta ALL=SETENV: NOPASSWD: /usr/bin/systemctl
%nta ALL=SETENV: NOPASSWD: /opt/RemoteService/run_remotegui.sh
%nta ALL=SETENV: NOPASSWD: /sbin/halt
%nta ALL=SETENV: NOPASSWD: /sbin/hwclock
%nta ALL=SETENV: NOPASSWD: /sbin/poweroff
%nta ALL=SETENV: NOPASSWD: /sbin/rcnetwork
%nta ALL=SETENV: NOPASSWD: /sbin/reboot
%nta ALL=SETENV: NOPASSWD: /usr/sbin/smartctl
device ALL=(deviceadm) NOPASSWD: /opt/mt/noop/startup/run_update
device ALL=(deviceadm) NOPASSWD: /Speicherkarte/Unicorn/update.sh
m ALL=SETENV: NOPASSWD: /usr/bin/systemctl
m ALL=SETENV: NOPASSWD: /home/m/service/Services
## Раскомментируйте, чтобы разрешить участникам группы wheel выполнять любую команду
# %wheel ALL=(ALL) ALL
# Раскомментируйте, чтобы разрешить людям в группе wheel запускать все команды
# и устанавливать переменные окружения.
# %wheel ALL=(ALL) SETENV: ALL
# То же самое без пароля
# %wheel ALL=(ALL) NOPASSWD: SETENV: ALL
includedir /etc/sudoers.d
и в 64-битной версии
## файл sudoers.
##
## Этот файл ДОЛЖЕН редактироваться с помощью команды 'visudo' от имени root.
## Если не использовать 'visudo', это может привести к синтаксическим ошибкам или ошибкам прав доступа
## которые не позволят sudo работать.
##
## См. страницу man sudoers для получения деталей о том, как писать файл sudoers.
##
##
## Спецификация алиасов хоста
##
## IP-адреса, сетевые номера или группы сетей.
# Host_Alias WEBSERVERS = www1, www2, www3
##
## Спецификация алиасов пользователей
##
## Группы пользователей. Это могут быть имена пользователей, uid, группы Unix,
## или группы сетей.
# User_Alias ADMINS = millert, dowdy, mikef
##
## Спецификация алиасов команд
##
## Группы команд. Часто используются для объединения связанных команд.
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
# /usr/bin/pkill, /usr/bin/top
##
## Спецификация значений по умолчанию
##
## Предотвращение влияния переменных окружения на программы
## неожиданным или вредным образом (CVE-2005-2959, CVE-2005-4158, CVE-2006-0151)
Defaults always_set_home
## Путь, который будет использоваться для каждой команды, запущенной из sudo
#Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin"
#Defaults env_reset
## Измените env_reset на !env_reset в предыдущей строке, чтобы сохранить все переменные окружения
## Следующий список больше не будет необходим после этого изменения
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"
## Закомментируйте предыдущую строку и раскомментируйте следующую, если вам нужно
## использовать специальные методы ввода. Это может позволить пользователям скомпрометировать учетную запись root,
## если им разрешено запускать команды без аутентификации.
#Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
## Не оскорбляйте пользователей, когда они вводят неверный пароль.
Defaults !insults
##
## Раскомментируйте, чтобы включить логирование вывода команды, кроме
## sudoreplay и перезагрузки. Используйте sudoreplay для воспроизведения записанных сеансов.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!/sbin/reboot !log_output
## В конфигурации по умолчанию (не настроенной) sudo запрашивает пароль root.
## Это позволяет использовать обычную учетную запись пользователя для администрирования
## свежес установленной системы. При настройке sudo удалите две
## следующие строки:
Defaults targetpw # запросить пароль целевого пользователя, т.е. root
ALL ALL=(ALL) ALL # ВНИМАНИЕ! Используйте это только вместе с 'Defaults targetpw'!
##
## Спецификация алиасов Runas
##
##
## Спецификация привилегий пользователей
##
root ALL=(ALL) SETENV: ALL
device ALL=(ALL) SETENV:ALL
deviceadm ALL=(ALL) SETENV: ALL
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/setAdapter
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/setGateway
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/setPCName
%nta ALL=SETENV: NOPASSWD: /Speicherkarte/Unicorn/test-usbstick
%nta ALL=SETENV: NOPASSWD: /opt/mt/netconfig/netconfig.pl
%nta ALL=SETENV: NOPASSWD: /bin/date
%nta ALL=SETENV: NOPASSWD: /etc/init.d/nmb
%nta ALL=SETENV: NOPASSWD: /bin/systemctl
%nta ALL=SETENV: NOPASSWD: /usr/bin/systemctl
%nta ALL=SETENV: NOPASSWD: /opt/RemoteService/run_remotegui.sh
%nta ALL=SETENV: NOPASSWD: /sbin/halt
%nta ALL=SETENV: NOPASSWD: /sbin/hwclock
%nta ALL=SETENV: NOPASSWD: /sbin/poweroff
%nta ALL=SETENV: NOPASSWD: /sbin/rcnetwork
%nta ALL=SETENV: NOPASSWD: /sbin/reboot
%nta ALL=SETENV: NOPASSWD: /usr/sbin/smartctl
device ALL=(deviceadm) NOPASSWD: /opt/mt/noop/startup/run_update
device ALL=(deviceadm) NOPASSWD: /Speicherkarte/Unicorn/update.sh
device ALL=SETENV: NOPASSWD: /usr/bin/systemctl
device ALL=SETENV: NOPASSWD: /home/m/service/Services
## Раскомментируйте, чтобы разрешить участникам группы wheel выполнять любую команду
# %wheel ALL=(ALL) ALL
## То же самое без пароля
# %wheel ALL=(ALL) NOPASSWD: ALL
## Читайте файлы drop-in из /etc/sudoers.d
## (здесь '#' не указывает на комментарий)
#includedir /etc/sudoers.d
%nta ALL=SETENV: NOPASSWD: /usr/bin/ping
Как сделать так, чтобы это работало, возможно ли использовать etc/sudoers в 32-битной версии
Ответ или решение
Проблема с конфигурацией sudo на вашей 32-битной версии Eagle Linux (12.1), которая связана с файлом /etc/sudoers
, может быть вызвана рядом причин. В этом ответе мы подробно разберем, как решить ошибку, с которой вы столкнулись, а также рассмотрим возможность использования директории /etc/sudoers.d
.
Причины ошибки
-
Синтаксические ошибки в файле sudoers: Судя по предоставленному вами тексту, в 32-битной версии вашей системы возникла ошибка синтаксиса. Она указывает на то, что в линии 76 существует недопустимый синтаксис. Это может произойти из-за неправильного форматирования, пробелов или отсутствия необходимых знаков.
-
Включение файла sudoers.d: Строка
includedir /etc/sudoers.d
должна добавляться в конец файла, но важно убедиться, что это делается корректно. Отсутствие или неправильная запись этой строки может привести к ошибкам парсинга.
Решение проблемы
-
Исправление синтаксиса sudoers:
- Запустите команду
sudo visudo
, чтобы редактировать файл /etc/sudoers со специальными проверками на ошибки. - Проверьте строку 76 и вокруг нее. Убедитесь, что все команды корректно указаны, и не забыты необходимые пробелы.
- Запустите команду
-
Правильное использование sudoers.d:
- Если у вас есть файл конфигурации в
/etc/sudoers.d/
, убедитесь, что он имеет правильные права доступа. Они должны быть такими:chmod 440 /etc/sudoers.d/*
- Убедитесь также, что файлы в этой директории не содержат синтаксических ошибок. Вы можете проверить файл, запустив:
sudo visudo -c
- Важно, чтобы все файлы в
/etc/sudoers.d/
имели технические условия, например, содержали строки формата:user ALL=(ALL) NOPASSWD: /path/to/command
- Если у вас есть файл конфигурации в
-
Проверка совместимости:
- Убедитесь, что система поддерживает
includedir
, так как старые или несоответствующие версии могут не поддерживать эту функциональность. Это можно проверить, открыв man-страницу для sudoers, выполнив:man sudoers
- Если версия действительно не поддерживает
includedir
, возможно, стоит обновить систему или воспользоваться альтернативными методами, например, путем добавления всех правил непосредственно в файл/etc/sudoers
.
- Убедитесь, что система поддерживает
Заключение
Если после внесенных изменений ошибка все еще сохраняется, необходимо проверить другие конфигурации и сопутствующие файлы. Не забывайте всегда использовать команду visudo
для редактирования sudoers, чтобы предотвратить ошибки, которые могут сделать систему неработоспособной. Путем тщательной проверки и исправления ошибок, вы должны быть в состоянии успешно использовать /etc/sudoers.d
и исправить возникшую проблему.