Запуск сценария из другого дома

#linux #bash #shell #chmod

#linux #bash #оболочка #chmod

Вопрос:

У меня есть скрипт в /home каталоге пользователя, и я хочу выполнить этот скрипт с другим пользователем. Сценарий находится в доме пользователя : /home/UserA/command/command.sh

Я хочу выполнить этот скрипт с /home/UserB

Что я сделал и хотел узнать, есть ли более простой способ сделать это, так это :

  1. Я дал право на запись и выполнение в этом каталоге other ( chmod 703 ): /home/UserA/command есть ли способ предоставить право только UserB вместо other ?
  2. В /home/UserB/.bash_profile , я добавил в путь /home/UserA/command

Другая проблема, с которой я сталкиваюсь, заключается в том, что в скрипте command.sh я использую переменную $LISTPATH ( $HOME/List ), и эта переменная определена в UserA .bash_profile .

Поэтому, когда я запускаю скрипт /home/UserB , эта переменная всегда пуста. Нужно ли мне также добавлять эту переменную в .bash_profile UserB: $LISTPATH=/home/UserA/List

Спасибо за вашу помощь

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

1. Другому пользователю не нужно писать /home/userA/command . Его просто нужно выполнить.

2. Почему бы вам не вставить LISTPATH=$HOME/List сам скрипт вместо профиля?

3. О, я не заметил, что вы хотите, чтобы он указывал обратно на UserA. Тогда вы могли бы просто вставить LISTPATH=~userA/List скрипт.

4. Лучше было бы установить значение по умолчанию для LISTPATH в скрипте, если оно еще не было определено: что-то вроде LISTPATH="${LISTPATH:-~userA/List}" .

5. Я думаю, что пришло время реорганизовать ваши вещи, а не искать обходные пути. Переместите скрипты, которые должны использоваться совместно, в общее местоположение (например, /usr/local/bin) и добавьте значения по умолчанию для переменных и замените их локальными значениями, как указано в предыдущих комментариях.

Ответ №1:

Какой беспорядок! На мой взгляд:

  1. Вы можете создать группу, к которой принадлежит пользователь, чтобы вы могли назначить эту группу /home/UserA/command и установить правильное разрешение (например, chmod 730 /home/UserA/command).
  2. Вам лучше поместить переменную $LISTPATH в начало вашего скрипта.

В любом случае, я думаю, вам лучше реорганизовать свой проект, вам лучше поместить скрипт в /opt/< некоторая подпапка> … вместо /home/UserA/command .