とchmod
に該当するものは何ですか?mesg y
mesg n
答え1
注:JdeBPでコメントとして指摘するmesg
、withの動作を再現するのは簡単ではありませんchmod
。
変更された端末
mesg
は、セッションの制御端末ではなく、標準の入力、出力、またはエラーに関連する端末です。。これは、複数回ログインしているユーザーがそのセッションで実行されているタスクを停止せずにログイン端末を変更できる必要があるためです。他のユーザーのエンドポイントに影響を与えるには適切な権限が必要なため、これは他のユーザーのエンドポイントに関連するセキュリティ上の問題ではありません。端末が見つかるまで、最初の3つのファイル記述子を順番に確認する方法は、System Vから使用されました。
素朴なアプローチmesg
これは、シェルの制御端末(現在の対話型シェルの標準入力に接続されているデバイス)で権限の変更を表示するために使用されます。
シェルの制御端末はコマンドによって返されますtty
。デバイスに対する権限が何をしているのかを判断するには、mesg n
次のように変更を確認できます。mesg y
ls -l
$ ls -l "$(tty)"
crw--w---- 1 myself tty 5, 1 May 6 00:21 /dev/ttyp1
$ mesg n
$ ls -l "$(tty)"
crw------- 1 myself tty 5, 1 May 6 00:21 /dev/ttyp1
$ mesg y
$ ls -l "$(tty)"
crw--w---- 1 myself tty 5, 1 May 6 00:21 /dev/ttyp1
mesg n
したがって、デバイスに対するグループ書き込み権限が削除され(rw--w----
に変更されたrw-------
)mesg y
、グループ書き込み権限が再び追加されたように見えます。
chmod
私の場合は、次のようになります。
$ chmod g-w "$(tty)" # for "mesg n"
$ chmod g+w "$(tty)" # for "mesg y"
Unixの好みに合わせて塩とコショウを追加します。
ただし、シェルの標準入力が端末でない場合、tty
文字列が返されnot a tty
失敗chmod
します。この場合、mesg
端末デバイスを使用してシェルの標準出力を取得し、標準エラー(順番に)を取得しようとし続けます。だから上記の内容は子供のような方法。