私はdebianパッケージを作っていますが、すべてのファイルがコピーされた後にやりたいパーミッション設定に問題があります。これはネットワークアプリケーションであり、libpcapを使用します。通常はroot権限が必要ですが、セキュリティ上の大きな問題です。 (私のプログラムの妥協は攻撃者への完全なルートアクセスを意味するため)代わりに、pcap権限が付与されたグループを作成し、そのグループにインストールユーザーを追加するという手順に進みます。 makefileで
は、それは次のようになります。あなたは "sudoはmake install" を実行した場合、完全に正常に動作します
setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/myProgram
groupadd -f myGroup
usermod -a -G myGroup $(SUDO_USER)
。 $(SUDO_USER)変数が空であるため、明らかに
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
:私はDebianパッケージ内のpostinstスクリプト内でこれを実行しようとする。しかし、私はこれを取得します。これ以外にどのように行われますか?ユーザーにユーザー名を入力する必要がありますか?それはひどく醜いと思う。 あるいは、あなたはこの種の設定をdebianパッケージで行うことは想定されていませんか?
(IE:Wiresharkのは、ここで同じ問題を持っていますが、彼らはまったくインストール時の権限と混乱をユーザーに任せる、といないように見える)