Я могу сделать файл только доступным для сценария и не пользователя?

Когда make install вызывается, это вызовет определенный для распределения сценарий для создания initrd.img, этот сценарий будет поиск все модули, которые требуемый этим распределением, но потому что Вы только что скомпилировали все модули в ядро как встроенные через make allyesconfig, сценарий перестал работать к модулям поиска.

Я не могу воспроизвести Вашу проблему сейчас, я помню, что "модули, не найденные", являются просто предупреждениями, я всегда игнорирую ее, потому что initrd.img был успешно создан, и новое ядро было успешно загружено. Если Вы перестали работать на "модулях, не найденных", необходимо повторно сконфигурировать такие модули от встроенных модулей до реальных загружаемых модулей вручную через make menuconfig этим путем: "модули, не найденные" сообщение, содержат имя модуля, используйте имя для поиска Make-файлов для обнаружения который CONFIG_XXX и поворот это CONFIG_XX к =m.

В последнем, если Вы просто хотите недавно созданное ядро, я предлагаю, чтобы Вы использовали конфигурацию распределения вместо этого make allyesconfig:

cd your_kernel_src
cp /boot/your_distribution_config .config
make menuconfig             # can exit it directly with nothing changed
make -j16
make modules_install
make install
# update the grub, if it is required for your distribution.
11
26.12.2014, 18:06
2 ответа

Предисловие:

Как было отмечено в комментариях и по причинам, объясненным в Это ответу Ядро Linux игнорирует SETUID / SetGuid Бит при обработке скрипта. Я не собираюсь дублировать ответ Бенджамина, но вместо этого замените скрипта с помощью Executabe , чтобы сделать мой ответ правильным.


Краткий ответ: используйте SETGID

Подробные шаги:

  1. Создать новую группу (например, READPASS)
  2. Сделать эту группу владельцем файла пароль Sudo Chown: ReadPass WhiteFile
  3. Сделайте файл, читаемый только по его группе sudo chmod g = r, o = thisfile
  4. Сделать свой исполняемый SGID READPASS: Sudo Chmod G + S Thissfile

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

7
27.01.2020, 19:57

Это на самом деле распространено и довольно просто. Sudo позволяет ограничить конкретные приложения, которые пользователь может вызывать. Другими словами, вам не нужно давать им все рут или ничего; Вы можете дать им Sudo разрешения для запуска определенной команды . Это именно то, что вы хотите, и очень распространена практика, подобных тому, как позволять пользователям подтолкнуть репозитории Git через SSH и тому подобное.

Чтобы сделать это, все, что вам нужно сделать, это добавить строку в / etc / sudoers , которая выглядит что-то вроде

bob ALL=(root) NOPASSWD: /path/to/command/you/trust

( NOPASSWD: Часть не требуется, но Очень распространено в этой ситуации.) В этот момент BOB может вызывать / PATH / TORE / COMMANT / YOW / TRUST через sudo, но ничего другого.

Это сказано, давая кому-то root - то, что мы здесь делаем - не совсем то, что вы хотите. Примечательно, если в вашем скрипте было какого-либо недостатка, вы рискуете позволить вашему ящику укорениться. По этой причине вы можете предпочитать, что предпочитаете создать пользователь, специально собственный специальный файл-говорящий, Специальный препарат -Then Chown файл для них, и иметь / etc / sudoers Сделать Боб Будьте особенным пользователем. В этом случае линия вы добавляете в Sudoers бы просто быть

bob ALL=(specialuser) NOPASSWD: /path/to/command/you/trust
13
27.01.2020, 19:57

Теги

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