Случайно я наткнулся на ACL, с помощью которого я смог решить свою проблему. На стороне Mac я создал новую группу с тем же GID, что и в Linux. Терминал у меня не работал, мне пришлось создать группу в Системных настройках / Пользователи и Гропус и добавить в нее своего пользователя Mac. Затем я устанавливаю ACL, чтобы весь новый контент принадлежал группе пользователей Linux.
sudo setfacl -d -R -m group:Groopname:rwx '/home/Userhome'
Это работает до сих пор для меня.
Как вы пояснили в комментариях, он все еще работает на переднем плане в интерактивной оболочке, вы должны просто нажать Ctrl+Z .
Это приостановит задание ./command
. Если ./command
фактически не перехватит сигнал SIGTSTP и не решит выйти (0 ), в этом случае (маловероятно ), статус выхода будет не -0 (128+SIGTSTP, обычно 148 ), поэтому sudo poweroff
запускаться не будет.
Затем вы можете возобновить ./command
на переднем или заднем плане с помощью fg
или bg
.
Вы можете проверить с помощью:
sleep 10 && echo poweroff
И обратите внимание, что poweroff
не выводится, когда вы нажимаете Ctrl+Z и возобновляете позже с помощью fg
/ bg
.
Или с
sleep 10 || echo "failed: $?"
И увидеть failed: 148
, как только вы нажмете Ctrl+Z .
Обратите внимание, что это справедливо для zsh
и при условии, что вы начали его с ./command && sudo poweroff
. Это может быть недопустимо для других оболочек и не будет, если вы запустите его каким-либо другим способом, например, (./command && sudo poweroff)
в подоболочке или {./command && sudo poweroff; }
как часть составной команды (, которая zsh
, в отличие от большинства других оболочки преобразуются в подоболочку, чтобы ее можно было возобновить как единое целое при приостановке ).
Is there a way to prevent zsh from executing the poweroff command while making sure that the first one runs until it is done?
Я не думаю, что это возможно, если вы не используете что-то вроде gdb
для редактирования памяти запущенного процесса.
Would editing the /etc/sudoers file so that the system asks for my password still help in this case?
Должно помочь.