Я использую Linux. На машине AI есть такая настройка NFS в etc/exports:

/home 10.0.129.130(rw,no_root_squash)

Я монтирую этот каталог на машине A в /home/nfs/ на машине B. И я установил setuid, используя chmod u+x program1.sh .

На компьютере BI необходимо, чтобы пользователь xyz запустил program1.sh с правами суперпользователя. Настройка program1.sh выглядит следующим образом:

-rwsr-x--- 1 root house 1299 May 15 23:54 program1.sh

, который содержит mkdir -p /home/nfs/house/nsx/

Я установил xyz в house группы, чтобы xyz мог запустить program1.sh . Однако при запуске program1.sh он показывает:

mkdir: cannot create directory `/home/nfs/house/nsx/': Permission denied

Запуск program1.sh от имени root в порядке. Я не знаю, почему он не работает с пользователем xyz .

2 ответа2

1

По названию program.sh я предполагаю, что вы пытаетесь запустить интерпретированный скрипт, а не двоичный файл ELF. Linux давно игнорирует бит setuid в сценариях из-за возможных проблем безопасности (состояние гонки между проверкой ядром +s и интерпретатором сценария, открывающим файл).

Если этот скрипт должен быть доступен для определенных пользователей, создайте правило sudo в /etc /sudoers, которое позволяет это:

xyz ALL=(root:root) NOPASSWD: /usr/local/bin/program.sh

Там могут быть другие решения. Например, если вы хотите автоматически создавать домашние каталоги (при первом входе в систему), для этого существует модуль PAM pam_mkhomedir.so .

0

Потому что только root и пользовательские nfs имеют права на файлы / папки в: /home/nfs

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .