Итак, я делаю пакет debian, но у меня возникают проблемы с настройкой некоторых разрешений, которые я хочу сделать после того, как все файлы будут скопированы. Это сетевое приложение, использующее libpcap. Поэтому обычно для этого требуются права суперпользователя, но это большая проблема безопасности. (Поскольку любой компромисс в моей программе будет означать полный доступ root для злоумышленника) Вместо этого мы идем по пути создания группы с предоставленными разрешениями pcap, а затем добавляем в эту группу устанавливающего пользователя.
В make-файле это выглядит так:
setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/myProgram
groupadd -f myGroup
usermod -a -G myGroup $(SUDO_USER)
Что отлично работает, если вы запускаете "sudo make install". Но когда я пытаюсь сделать это внутри сценария postinst в пакете debian, я получаю следующее:
var/lib/dpkg/info/myProgram-1.0.postinst: line 13: SUDO_USER: command not found
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-Z, --selinux-user new SELinux user mapping for the user account
Очевидно, что переменная $ (SUDO_USER) пуста. Как еще это сделать? Нужно ли запрашивать у пользователя его / ее имя пользователя? Это звучит ужасно уродливо.
Или, может быть, вы просто не должны выполнять такую настройку в пакете Debian?
(IE: у Wireshark та же проблема, но, похоже, они просто оставляют это на усмотрение пользователя, и вообще не путаются с разрешениями при установке.)