Назад | Перейти на главную страницу

setuid не работает должным образом

У меня есть сценарий 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 не влияет на скрипты. Это сделано намеренно.

Проверьте этот вопрос / ответ для справки