Моя цель - отредактировать файл (чей владелец user1), используя скрипт, где user2 не имеет права на непосредственное редактирование файла, но его следует редактировать при выполнении сценария по user2, поэтому я SUID на сценарий Мой скрипт ниже содержаниеSed не может скопировать временный файл в исходный файл
#!/bin/sh
echo "Enter variable a"
read a
echo "Enter path"
read Path
echo "Enter variable b"
read b
sed -i -c "/#Hello variable \<$a\>/{h;n;s/\$Initial_Value=.*/\$Initial_Value=$b/}" "$Path"
скрипт заменяет некоторые сопоставления с образцом в файле в качестве входа
Permissions сценария являются
-rwsr-xr-x 1 user1 user1 648 Jul 21 08:03 Script.ksh
Права доступа к файлу, скрипт модифицирует являются следующими
-rwxrwxr-x 1 user1 user1 224 Jul 21 10:46 file
Права доступа к каталогу, под которым файл присутствует в следующем
drwxrwxr-x 6 user1 group1 122880 Jul 22 11:17 directory
Script становится выполнен user2, который является частью group1, где файл существует, и для выполнения user2 не будет прав на непосредственное редактирование файла.
Чтобы отредактировать файл косвенно с помощью скрипта, я установил бит SUID в скрипте, подумал, что при выполнении пользователем2 он будет выполнен с разрешениями пользователя1 Но когда я выполняю скрипт, SED дает ниже ошибку.
sed: cannot copy Path/sedFKvRSo to Path/file: Permission denied
Взгляните на: [Разрешить setuid на скриптах оболочки] (http://unix.stackexchange.com/a/2910/74329) – Cyrus