На этот вопрос уже есть ответ здесь:
Я пытаюсь настроить apache2 с cgi (python).
Для этого мне нужно изменить разрешения некоторых папок и файлов, но я получаю фатальные ошибки sudo каждый раз, когда пытаюсь изменить разрешение файла или папки.
Например:
1
j@ubuntu:/etc/apache2$ ls
apache2.conf envvars magic mods-enabled sites-available
conf.d httpd.conf mods-available ports.conf sites-enabled
j@ubuntu:/etc/apache2$ sudo chmod 777 httpd.conf
sudo: /usr/lib/sudo/sudoers.so должен быть доступен для записи только владельцу
sudo: fatal error, unable to load plugins
...................................................................................
2
j@ubuntu:/usr/lib/cgi-bin$ sudo /etc/init.d/apache2 restart
sudo: /usr/lib/sudo/sudoers.so должен быть доступен для записи только владельцу
sudo: fatal error, unable to load plugins
...................................................................................
3
j@ubuntu:/usr/lib$ sudo chmod -R 777 /usr/lib/cgi-bin
sudo: /usr/lib/sudo/sudoers.so должен быть доступен для записи только владельцу
sudo: fatal error, unable to load plugins
...................................................................................
Примечание:
j@ubuntu:/etc/apache2$ ls -l /usr/lib/sudo/sudoers.so
-rwxrwxrwx 1 root root 177452 Jan 31 2012 /usr/lib/sudo/sudoers.so
Судя по комментариям, все, что запускается с sudo
, потерпит неудачу из-за этого. Работает ли это, если вы используете pkexec
вместо этого? Например:
pkexec chmod go-w /usr/lib/sudo/sudoers.so
Это должно удалить разрешения на запись из «группы» и «другие» и оставить нетронутыми права «пользователя» (владельца).
Редактировать: Упс, написал sudo
в команде по ошибке. Исправлено.
На самом деле в Ubuntu есть два механизма для выполнения административных задач. sudo - один из них, и он и его графические интерфейсы (такие как gksu и gksudo) не будут работать, пока вы не исправите проблему с разрешениями.
Другой механизм - PolicyKit. В зависимости от того, что именно вы сделали с правами доступа к файлам, вполне вероятно, что вы все равно сможете восстановить с помощью PolicyKit для запуска команд от имени пользователя root.
Команда pkexec запускает любую (неграфическую) команду от имени пользователя root (при условии, что пользователь, вызывающий ее, является администратором в системе). pkexec также может запускать графические команды (например, nautilus) от имени пользователя root, но это довольно нетривиально, поскольку вам необходимо настроить для них файлы конфигурации, описывающие, как они должны выполняться и что им разрешено делать , Поэтому лучше всего использовать командную строку для решения этой проблемы ... по крайней мере, до такой степени, что sudo снова работает. (Затем вы можете запустить gksu nautilus, чтобы получить браузер корневых файлов, если вам удобнее использовать это для рекурсивного редактирования прав доступа к файлам.)
Я не знаю точно, что вы сделали с вашими разрешениями, так что это Мне трудно дать вам конкретную команду pkexec для решения проблемы. Но вы можете исправить конкретную проблему, на которую в настоящее время жалуется sudo. В нем говорится:
sudo: /usr/lib/sudo/sudoers.so должен быть доступен для записи только для владельца. Поэтому удалите права доступа для группы и другие записи (не изменяя разрешения для записи владельца) для этого файла:
pkexec chmod go-w /usr/lib/sudo/sudoers.so Затем вы можете увидеть, работает ли sudo (запустив какую-то безобидную команду, такую как sudo ls).
Если вам нужно выполнить другие операции с правами доступа к файлам из командной строки с помощью chmod, см. Man chmod.
(Кстати, вот еще одна, связанная с этим ситуация, в которой удобно знать о pkexec.)
Если у вас возникли проблемы с получением pkexec для этого, пожалуйста, не стесняйтесь комментировать здесь, и я буду попытаться оказать дальнейшую помощь. Но вы должны знать, что даже если этот метод не работает, вам не нужно переустанавливать Ubuntu.
Вместо этого вы можете решить проблему с живого CD / DVD-диска Ubuntu или с USB-системы, потому что будет работать живая система - на ней будет работать sudo - и вы можете смонтировать раздел Ubuntu и изменить разрешения, которые способ.
Или, как третий вариант (как предложил Форестписки), вы можете использовать режим восстановления.