Я полагаю, что для этого потребуется, чтобы программа X имела права setuid и принадлежала пользователю UA, который имеет права на запись в папку A. Затем, когда вызывается X, он запускается как UA, независимо от того, каким пользователем он был вызван.
Большинство оболочек (возможно, всех) не позволяют сценариям иметь разрешения setuid, они просто игнорируют этот бит разрешения, если X не является двоичным. конечно, x может быть двоичной оболочкой, которая просто выполняет какой-то отдельный скрипт X.sh.
Вы не должны устанавливать X как root, если вам не нужно. Вы можете сделать папку A доступной для записи пользователем UA с меньшими правами.
В качестве альтернативы, вы можете сделать папку A доступной для записи отдельной группой и назначить X для этой группы и использовать setgid для X вместо setuid.