Редактировать файл с помощью сценария оболочки, который находится в той же группе, но не с вызывающим пользователем

#linux #shell #permissions

#linux #оболочка #разрешения

Вопрос:

Я хотел бы отредактировать файл с помощью сценария оболочки, который находится в той же группе, но не с пользователем «вызывающего».

 -rwsr-xr-x 1 root root 4896 Oct 21 00:59 /usr/bin/luxus
-rw-rw-r-- 1 root root 4096 Oct 20 23:01 <path>/file1
lrwxrwxrwx 1 root root 0 Oct 20 23:00 <path>/dir1
  
  • /usr/bin/luxus: сценарий оболочки
  • file1: файл для редактирования
  • dir1: родительский каталог file1 (символическая ссылка)

В сценарии оболочки это строка, в которой возникает проблема с разрешением:

 echo "string" > /usr/bin/tee <path>/file1
  

Вывод:

 /usr/bin/tee: <path>/file1: Permission denied
  

Я пытаюсь создать пакет AUR для сценария оболочки. Последний предназначен для установки в систему из PKGBUILD. Напрасно я пытался предоставить скрипту достаточно разрешений для редактирования целевого файла.

Это пример PKGBUILD:

 install -Dm755 src/${pkgname} "${pkgdir}/usr/bin/${pkgname}"
chown root.root "${pkgdir}/usr/bin/${pkgname}"
chmod 4755 "${pkgdir}/usr/bin/${pkgname}"
  

После расследования я думаю, что это просто невозможно из-за безопасности или из-за прав родительского каталога.

Тем не менее, я прошу у вас решения.

Комментарии:

1. В состоянии ли вы изменить права доступа к файлу?

2. Нет. Но в любом случае, продолжайте. Как вы думаете, где блокируются разрешения?

3. Можете ли вы запустить скрипт с помощью sudo?

4. Я только что обновил свой пост, если это может помочь. Я бы хотел избежать использования sudo.

5. Хорошо, исходя из вашего нового сообщения, все принадлежит root, поэтому, если вы не являетесь root или не можете запускать с помощью sudo, вы ничего не сможете сделать.

Ответ №1:

Как вы сказали, «вы ничего не можете сделать». Следующий пост довольно просто объясняет, почему это не сработает: https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts