sudo: должен быть корень setuid

Неизменяемый означает, что, как только конструктор для объекта завершит выполнение, этот экземпляр не может быть изменен.

Это полезно, поскольку означает, что вы можете передавать ссылки на объект, не беспокоясь о том, что кто-то другой изменит его содержимое. Особенно при работе с параллелизмом не возникает проблем с блокировкой объектов, которые никогда не меняются

, например

class Foo
{
     private final String myvar;

     public Foo(final String initialValue)
     {
         this.myvar = initialValue;
     }

     public String getValue()
     {
         return this.myvar;
     }
}

Foo не нужно беспокоиться о том, что вызывающий абонент getValue() может изменить текст в строке.

Если вы представляете класс, подобный Foo, но с StringBuilder, а не String в качестве члена, вы можете видеть, что вызывающая сторона к getValue() сможет изменить атрибут StringBuilder Foo экземпляра.

Также остерегайтесь различных видов неизменности, которые вы можете найти: Эрик Липперт написал статью в блоге об этом. По сути, у вас могут быть объекты, чей интерфейс является неизменным, но за кулисами фактически изменяемое частное состояние (и, следовательно, его нельзя безопасно разделить между потоками).

0
задан 06.05.2020, 07:47

3 ответа

Команда, которую вы запускаете: sudo chmod 777 -R /* или sudo chmod 777 -R /, изменяет разрешение файла ALL в вашей системе на 777: чтение, запись и выполнение для всех. Это серьезный риск для безопасности. Вы открыли свою систему для всех. НИКОГДА не запускайте эту команду. Каждый, кто дает вам эту команду, хочет, чтобы ваша система была небезопасной. Это арахис, чтобы получить root-доступ в такой системе.

Я рекомендую переустановить всю систему. Вы можете попытаться установить исходные права доступа, но никогда не можете быть уверены. Я вижу только один вариант: переустановка.

2
ответ дан 06.05.2020, 07:48

sudo проверяет, что его разрешения равны 4755 (rwsr-xr-x). После предоставления разрешений на запись для всех файлов, которые у вас есть, вся концепция стать суперпользователем для выполнения привилегированной работы потерпела поражение, так как каждый, кто входит в вашу систему, может делать все и все, что может суперпользователь.

После

sudo chmod 777 -R /*

только полное переформатирование и переустановка снова делает коробку безопасной. Я действительно не знаю списка системных файлов со стандартными разрешениями по умолчанию.

Даже если вы обнаружите это, вам также потребуется список контрольных сумм системных файлов и сама программа проверки контрольных сумм, чтобы убедиться, что ваш метод обеспечения подлинности файлов не был скомпрометирован.

Вероятно, проще переформатировать диск и переустановить Linux.

Надеюсь, это поможет.

0
ответ дан 06.05.2020, 07:48

Ваша команда this является самым плохим подходом, который я когда-либо делал.

sudo chmod 777 -R /*

На самом деле вы дали всем красное разрешение на запись и выполнение. никогда не делайте такой работы, я думаю, вы должны учиться, изучать и понимать Linux, решить вашу проблему в

chmod 4755 /usr/bin/sudo

, затем запустить

chown root:root /usr/bin/sudo

, и после этого вы найдете другой файл с таким же проблема, поэтому лучше проверить все права доступа к файлам из хорошо работающей системы и применить их к вашей файловой системе.

0
ответ дан 06.05.2020, 07:49

Теги

Похожие вопросы