rpmファイルまたはソースコードを使用してFedoraでhylafax +を設定しようとしています。 hylafax+はsystemdに用意されていないため、ubuntuとOpensuseでうまく機能する次のファイル/etc/systemd/system/hylafax-faxgetty-ttyACM0.serviceを作成しました。
[Unit]
Description=HylaFAX faxgetty for ttyACM0, ...
[Service]
User=root
Group=root
Restart=always
RestartSec=30
ExecStart=/usr/sbin/faxgetty ttyACM0
[Install]
WantedBy=multi-user.target
しかし、私にエラーが発生しました」権限(uid)を設定できません。"Fedoraで。コードを実行すると:
/usr/sbin/faxgetty -D ttyACM0
rootとして手動で実行するとうまくいくようです(プロセスはまだ存在します)。
hylafax +のソースコードでエラーメッセージが生成された単一の場所を見つけて、少し修正して、次のように詳細情報を提供しました。
faxApp::setupPermissions(void)
{
if (getuid() != 0)
faxApp::fatal("The fax server must run with real uid root.\n");
uid_t euid = geteuid();
const passwd* pwd = getpwnam(FAX_USER);
if (!pwd)
faxApp::fatal("No fax user \"%s\" defined on your system!\n"
"This software is not installed properly!", FAX_USER);
if (euid == 0) {
if (initgroups(pwd->pw_name, pwd->pw_gid) != 0)
faxApp::fatal("Can not setup permissions (supplementary groups)");
if (setegid(pwd->pw_gid) < 0)
faxApp::fatal("Can not setup permissions (gid)");
if (seteuid(pwd->pw_uid) < 0) {
char buf[50];
sprintf(buf,"Perm.for %s %d euid: %d",FAX_USER, pwd->pw_uid, euid);
// faxApp::fatal("Can not setup permissions (uid)");
faxApp::fatal(buf);
}
今それは私に次のものを与えます:
FaxGetty[6359]: Perm.for uucp 10 euid: 0
私のパスワードファイルに対応するもの:/ etc / passwd:
uucp:x:10:10:Facsimile Agent:/var/spool/hylafax:/bin/bash
/etc/グループ:
uucp:x:10:uucp
誰でも何が間違っている可能性があるか教えてもらえますか?
答え1
出力結果によると、次のようなことが発生しているようです。
- あなたのアプリケーションはrootとして実行されています。
- グループを権限の低いグループに変更する機能があります。
- 権限の低いユーザーに切り替えようとしましたが失敗します。
まず、セットシステムコールの割り当て設定と同じです。エラー番号これは実際のエラーを伝えます。失敗の実際の原因を調べるには、エラーメッセージの一部として印刷するのが最善です。
ただし、これは権限エラーである可能性が高いです。あなたが知っている限り、権限エラーはその権限があることを示し(ルートには奇妙です。何でもできるはずです)、これはselinux(またはapparmourなどの同様のサービス)が機能していることを示します。これは、rootユーザーが特定のタスクを実行するのを防ぐことができる唯一のサービスです。
selinuxに問題があるかどうかを確認する最速の方法(私は衣類について知らない)がオンになっていること(例:「強制」)を確認することです。
sestatus
次に、監査ログでavcの拒否を確認します。
sudo grep avc /var/log/audit/audit.log
何も返されない場合は selinux が何かをブロックしているのです。一時的にtiを許可に設定して、selinuxであることをさらに証明できます。
sudo setenforce 0
今の要件を満たすことができれば確かにselinuxです。今、2つのオプションがあります。selinuxを永久に寛大に設定システムセキュリティを下げる(推奨しない)アプリケーションに必要なルールの作成。
答え2
サービスファイルにUser=root
およびを維持する必要があります。Group=root
システムサービスで開始されたプロセス(すでにrootで始まる)には必要ありません。プロセスが別のeuidに変更されると、問題が発生する可能性があります。