私はサーバーとクライアントで状況を作成しており、それらが通信できるようにパイプを作成したいと思います。
次のコマンドを使用してサーバーコードにパイプを作成しました
mkfifo("fifo",1755);
。
- 1作成したユーザーとルートのみが削除または名前を変更できます。
- 7 は、ユーザーに読み取り、書き込み、および実行権限を与えるために使用されます。
- 5グループおよび他のグループには読み取りおよび実行権限のみを付与します。
問題は、後でサーバーコードでfifoを開いて読みましopen("fifo",O_RDONLY);
たが、実行するとfifoへのアクセスを拒否するエラーが表示されることです。
パイプfifoの権限を見てみましたが、次のようになります
p-wx--s--t
。
p
パイプラインを表し、-
ユーザーが未読であることを示します。いつ7をあげたかはわかりませんが、s
グループの実行にはユーザーがいます。 1を与えれば、ユーザーと他の人に読んで実行する能力だけを与え、他の人に期待される能力は与えないかどうかわかりません。
権限を誤解していますか?
ベストアンサー1
単にパイプでバイナリを実行することはできません。パイプでネイティブバイナリを実行する方法はありますか?。また、実行可能ファイルのスティッキービットは最新のシステムでは価値がないと思います。
サーバーコードからパイプを作成しました。
mkfifo("fifo",1755);
パイプfifoの権限を見てみましたが、次のようになります
p-wx--s--t
。
1755
あなたのエラーは、権限が先行せずに作成されたことです0
。これは1755
、8進数ではなく10進数で処理されたことを意味します(1755 & ~022 = 03311 = p-wx--s--t
; 022
umaskはどこにあります)。