Основная причина (почему это плохая идея) заключается в том, что ни один пользователь (root, admin или другой) никогда не должен иметь доступ к паролю другого пользователя.
Просто потому, что пароль является средством аутентификации. Если я знаю пароль другого пользователя, я знаю его учетные данные (имя пользователя + пароль), поэтому я могу войти в систему под этим пользователем , выдавая себя за него (или ее, или ее).
Любое действие, которое я выполняю, когда вход в систему как этот пользователь, другой пользователь будет нести ответственность за. И это не так, как аутентификация должна работать.
Действия могут быть катастрофическими, например, удаление целой пачки важных файлов, стирание жестких дисков, стирание резервных копий, закрытие планов ядерной энергетики и т. Д.
Или просто незаконно. Представьте себе банковское учреждение, где у меня (администратора) есть доступ ко всем паролям. Используя пароль кассира, я могу заказать перевод миллиона долларов с банковского счета президента на банковский счет мойщика окон. Затем используйте пароль кассира для подтверждения транзакции. Затем утвердите чек со счета мойщика окон на мой собственный счет в оффшорном банке.
Тогда я уезжаю на долгие каникулы на Багамы ...
С этой точки зрения хеширование паролей и использование отдельных теневых файлов можно рассматривать как средство обеспечения соблюдения этого правила (ни один пользователь не должен иметь возможность выдавать себя за другое).
И, как прокомментировал @ Miral * , есть исключениеsu
которое, хотя и разрешает олицетворение (и виды приведенного выше аргумента), также ведет журнал его использования (поэтому оно меняет правила на «только администраторы могут выдавать себя за других, но журнал хранится ").
* Пример банка был, вероятно, не лучшим. В любой среде, где безопасность имеет решающее значение, обычно требуется больше средств аутентификации и авторизации, чем один пароль.