Понимание sudoers:

Существует также dladdr() функция в libc, который возвращает путь к двоичному файлу, в котором указатель заданной функции существует, но:

  • Это только существует на Linux и SunOS согласно странице справочника.
  • Необходимо скомпилировать исполняемые файлы с -rdynamic чтобы это работало. Я не думаю потребности библиотек это.

Для библиотеки Ваши опции намного более ограничены: существует нет argv[0] таким образом, Ваши опции dladdr(), или неясный взлом ручного парсинга только для Linux /proc/self/maps и поиск диапазона адреса памяти, содержащего адрес памяти некоторой библиотеки внутренний символ (например, указатель функции или статическая переменная).

Другие решения я видел в дикой природе:

  • ./configure --prefix=SOME_UNIQUE_VERY_LONG_STRING, затем при поиске времени установки и замене, что длинная строка в двоичном файле (!!) с /path/to/actual/install/prefix/suffixed/by/enough/slashes////// и надеюсь, что пользователь никогда ничего не переименовывает в том пути.
  • Виртуализируйте файловую систему, любого chroot(), смонтируйтесь цикл, файловая система FUSE, взломал libc (Проект всплеска), виртуальная машина, и т.д.
  • ./configure --prefix=.. и затем никогда не звоните chdir(). Это также повредит вещи, если какие-либо утечки пути из приложения и перейдут к другому приложению, так как другое приложение не сможет правильно разрешить относительный путь.
  • Запуск через обертку. Например, JAVA-приложения всегда знают свой путь через getClass().getProtectionDomain().getCodeSource().getLocation(), C# имеет Application.StartupPath среди других большинство языков сценариев имеет некоторый путь.

POSIX должен действительно стандартизировать dladdr().

4
28.11.2018, 00:09
3 ответа

Ваш сценарий изменяет разрешение 2 файлов,/etc/sudoers и tempfl.log. Разделите команду в двух строках, и необходимо быть в порядке.

2
27.01.2020, 20:50
  • 1
    взгляните на комментарий, который я добавил. –   01.09.2010, 07:37

Ваш сценарий делает точно, что Вы говорите ему делать:

chmod 0440 /etc/sudoers tempfl.log

будет применяться r--r----- в оба из тех файлов.

Вы действительно не должны возиться с sudoers файл, если Вы не пишете администраторские сценарии и, даже затем, полномочия, должен быть оставлен в покое, так как это помогает защитить Вашу систему. sudo сама программа проверяет полномочия своего конфигурационного файла и предупреждает Вас (как Вы видели). Слушайте его. Это, очевидно, знает лучше, чем Вы :-)

Вы уверены, что только пытаетесь выполнить определенные части своего сценария под sudo, как в:

sudo chmod 0440 tempfl.log 2>&1

В противном случае и Вы действительно хотите изменить оба файла (но с различными полномочиями, используйте две отдельных команды:

chmod 0440 /etc/sudoers 2>&1
chmod 0644 tempfl.log 2>&1
5
27.01.2020, 20:50

Когда Вы пишете chmod 0440 /etc/sudoers tempfl.log это изменяет полномочия /etc/sudoers и tempfl.log обоим быть 0440, который является неправильным.

Когда Вы пишете chmod 0644 /etc/sudoers tempfl.log это изменяет полномочия /etc/sudoers и tempfl.log обоим быть 0644, который является неправильным.

Необходимо ли изменить полномочия на /etc/sudoers вообще? Вы на самом деле хотели записать chmod 0644 tempfl.log?

1
27.01.2020, 20:50
  • 1
    Соглашается, нет практической потребности, о которой я могу думать для изменения полномочий /etc/sudoers. –   01.09.2010, 07:29
  • 2
    Ничто не должно затрагивать /etc/sudoers вообще, кроме того, visudo. –  hobbs 01.09.2010, 07:36

Теги

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