У меня есть сценарий node js, который прослушивает определенный порт.
Если этот сценарий получает файл json, ему необходимо выполнить сценарий развертывания в домашнем каталоге пользователя.
Скрипт узла работает под node_user.
Домашний адрес - user_b.
Я установил acl, чтобы пользователь node_user мог получить доступ к директории пользователя user_b и выполнить сценарий развертывания.
setfacl -m u: node_user: rx deploy.sh
также установите uid в сценарии развертывания, чтобы он выполнялся от имени пользователя, которому он принадлежит (user_b): chmod u + s deploy.sh
когда я тестирую его, выполняется сценарий развертывания, поэтому там достаточно прав, но сценарий все еще выполняется как node_user, а не как его владелец (user_b)
Я проверил это с помощью: watch -n1 'lsof | grep deploy.sh '
Мне интересно, знает ли кто, почему он не работает должным образом.
stat deploy.sh
File: ‘deploy.sh’
Size: 918 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 25242546 Links: 1
Access: (4750/-rwsr-x---) Uid: ( 1003/ user_b) Gid: ( 1005/ user_b)
getfacl deploy.sh:
# file: deploy.sh
# owner: user_b
# group: user_b
# flags: s--
user::rwx
user:node_user:r-x
group::r-x
mask::r-x
other::---
SUID не влияет на скрипты. Это сделано намеренно.
Проверьте этот вопрос / ответ для справки