LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

он еще хуже - тебе постоянно надо светить пароль рута. В случае любой автоматизации - это полный трэш в плане безопасности

Чтобы получить рут-права, нужно предоставить что-то, что их даёт, и с этим ничего не поделать в любом случае. Вместо пароля может быть ключ в некоторых случаях (но это для логина через sshd, ни su ни sudo такое не поддерживают).

через suid bit? у тебя странные понятия о «правильности»

Ты наверно чего-то не понимаешь.

три раза прочитал и ничего не понял. какая строка? какая сущность? ты указываешь конкретную команду по конкретному пути

Есть действие, оно прописано в коде программы passwd. Рядом, там же, прописан алгоритм предоставления прав к этому действию, тоже в коде. Рядом, там же, на бинарнике, указано что этот бинарник может пользоваться рут-доступом для предоставления юзерам некоего интерфейса к защищённым действиям.

А твоя строчка в sudoers - это выдача прав к символьной строке. Да, эта строка, скорее всего, будет соовтетствовать всё той же программе, и предположение «без аргументов безопасно» скорее всего тоже соответствует действительности. Но, тем не менее, тут появляется лишняя привязка и к расположению этого бинарника в фс, и к его синтаксису. Зачем?

Причем в отличии от suid-бита ты видишь все повышения привелегий в одном месте и гибко ими управляешь

Вот идеология «повышения привилегий», которую насаждает sudo, и есть вредительство. На это надо смотреть не как на повышение привилегий, а как на интерфейс «сервиса смены паролей». И нет, совершенно незачем это выносить в какой-то сторонний конфиг. Сервис смены паролей сам знает, какому юзеру что можно.

Вот как ты реализуешь, например, выключение компьютера после скачивания файла через свой su? Или будешь под root’ом качать?

Никак не реализую, я его не выключаю. Но могу предложить несколько вариантов, в зависимости от идеологии. Для начала надо определиться, выключение компа - это доступная юзеру функция, или нет.

Если доступная, то делается соответствующий интерфейс (можно suid-root враппером), который при запуске инициирует выключение. Там же можно предусмотреть разные опции, которые враппер будет парсить и в зависимости от них менять своё поведение. Можно также создать группу «shutdown», поставить врапперу права 4750 и эту группу, тогда можно будет динамически выдавать юзерам права к этому интерфейсу. Важно: это НЕ выдача прав к команде shutdown (у которой есть куча опций-аргументов и мы не хотим ни выяснять, насколько они все безопасны, и как изменятся в будущем, ни тем более придумывать какие-то фильтры на них), это выдача интерфейса к его запускалке.

Второй вариант: юзеру выключение компа недоступно. Если так, то, значит, выключение компа - это инициатива администратора (возможно, по просьбе юзера, или ещё как-то, но не суть), и выключать комп должен root. Тут очевидный вариант: делаем от рута su в юзера, который качает что ему нужно, а затем рут делает выключение.

Кстати, второй вариант уместен и как замена плохому «make && sudo make install» - не юзер, который компилировал, что-то себе повышает, а рут, для сборки, сначала организует ограниченную песочницу (в которой ограниченный юзер может и make install сделать), а затем забирает из неё результаты и куда-то их уже кладёт.

Исправление firkax, :

он еще хуже - тебе постоянно надо светить пароль рута. В случае любой автоматизации - это полный трэш в плане безопасности

Чтобы получить рут-права, нужно предоставить что-то, что их даёт, и с этим ничего не поделать в любом случае. Вместо пароля может быть ключ в некоторых случаях (но это для логина через sshd, ни su ни sudo такое не поддерживают).

через suid bit? у тебя странные понятия о «правильности»

Ты наверно чего-то не понимаешь.

три раза прочитал и ничего не понял. какая строка? какая сущность? ты указываешь конкретную команду по конкретному пути

Есть действие, оно прописано в коде программы passwd. Рядом, там же, прописан алгоритм предоставления прав к этому действию, тоже в коде. Рядом, там же, на бинарнике, указано что этот бинарник может пользоваться рут-доступом для предоставления юзерам некоего интерфейса к защищённым действиям.

А твоя строчка в sudoers - это выдача прав к символьной строке. Да, эта строка, скорее всего, будет соовтетствовать всё той же программе, и предположение «без аргументов безопасно» скорее всего тоже соответствует действительности. Но, тем не менее, тут появляется лишняя привязка и к расположению этого бинарника в фс, и к его синтаксису. Зачем?

Причем в отличии от suid-бита ты видишь все повышения привелегий в одном месте и гибко ими управляешь

Вот идеология «повышения привилегий», которую насаждает sudo, и есть вредительство. На это надо смотреть не как на повышение привилегий, а как на интерфейс «сервиса смены паролей». И нет, совершенно незачем это выносить в какой-то сторонний конфиг. Сервис смены паролей сам знает, какому юзеру что можно.

Вот как ты реализуешь, например, выключение компьютера после скачивания файла через свой su? Или будешь под root’ом качать?

Никак не реализую, я его не выключаю. Но могу предложить несколько вариантов, в зависимости от идеологии. Для начала надо определиться, выключение компа - это доступная юзеру функция, или нет.

Если доступная, то делается соответствующий интерфейс (можно suid-root враппером), который при запуске инициирует выключение. Там же можно предусмотреть разные опции, которые враппер будет парсить и в зависимости от них менять своё поведение. Можно также создать группу «shutdown», поставить врапперу права 4750 и эту группу, тогда можно будет динамически выдавать юзерам права к этому интерфейсу. Важно: это НЕ выдача прав к команде shutdown (у которой есть куча опций-аргументов и мы не хотим ни выяснять, насколько они все безопасны, и как изменятся в будущем, ни тем более придумывать какие-то фильтры на них), это выдача интерфейса к его запускалке.

Второй вариант: юзеру выключение компа недоступно. Если так, то, значит, выключение компа - это инициатива администратора (возможно, по просьбе юзера, или ещё как-то, но не суть), и выключать комп должен root. Тут очевидный вариант: делаем от рута su в юзера, который качает что ему нужно, а затем рут делает выключение.

Кстати, второй вариант уместен и как замена плохому «make && sudo make install» - не юзер, который компилировал, что-то себе повышает, а рут, для сборки, сначала организует ограниченную песочницу, а затем забирает из неё результаты и куда-то их уже кладёт.

Исходная версия firkax, :

он еще хуже - тебе постоянно надо светить пароль рута. В случае любой автоматизации - это полный трэш в плане безопасности

Чтобы получить рут-права, нужно предоставить что-то, что их даёт, и с этим ничего не поделать в любом случае. Вместо пароля может быть ключ в некоторых случаях (но это для логина через sshd, ни su ни sudo такое не поддерживают).

через suid bit? у тебя странные понятия о «правильности»

Ты наверно чего-то не понимаешь.

три раза прочитал и ничего не понял. какая строка? какая сущность? ты указываешь конкретную команду по конкретному пути

Есть действие, оно прописано в коде программы passwd. Рядом, там же, прописан алгоритм предоставления прав к этому действию, тоже в коде. Рядом, там же, на бинарнике, указано что этот бинарник может пользоваться рут-доступом для предоставления юзерам некоего интерфейса к защищённым действиям.

А твоя строчка в sudoers - это выдача прав к символьной строке. Да, эта строка, скорее всего, будет соовтетствовать всё той же программе, и предположение «без аргументов безопасно» скорее всего тоже соответствует действительности. Но, тем не менее, тут появляется лишняя привязка и к расположению этого бинарника в фс, и к его синтаксису. Зачем?

Причем в отличии от suid-бита ты видишь все повышения привелегий в одном месте и гибко ими управляешь

Вот идеология «повышения привилегий», которую насаждает sudo, и есть вредительство. На это надо смотреть не как на повышение привилегий, а как на интерфейс «сервиса смены паролей». И нет, совершенно незачем это выносить в какой-то сторонний конфиг. Сервис смены паролей сам знает, какому юзеру что можно.

Вот как ты реализуешь, например, выключение компьютера после скачивания файла через свой su? Или будешь под root’ом качать?

Никак не реализую, я его не выключаю. Но могу предложить несколько вариантов, в зависимости от идеологии. Для начала надо определиться, выключение компа - это доступная юзеру функция, или нет.

Если доступная, то делается соответствующий интерфейс (можно suid-root враппером), который при запуске инициирует выключение. Там же можно предусмотреть разные опции, которые враппер будет парсить и в зависимости от них менять своё поведение. Можно также создать группу «shutdown», поставить врапперу права 4750 и эту группу, тогда можно будет динамически выдавать юзерам права к этому интерфейсу. Важно: это НЕ выдача прав к команде shutdown (у которой есть куча опций-аргументов и мы не хотим ни выяснять, насколько они все безопасны, и как изменятся в будущем, ни тем более придумывать какие-то фильтры на них), это выдача интерфейса к его запускалке.

Второй вариант: юзеру выключение компа недоступно. Если так, то, значит, выключение компа - это инициатива администратора (возможно, по просьбе юзера, или ещё как-то, но не суть), и выключать комп должен root. Тут очевидный вариант: делаем от рута su в юзера, который качает что ему нужно, а затем рут делает выключение.