ttyに640以外のモードを指定し、再起動後も持続するようにする方法

ttyに640以外のモードを指定し、再起動後も持続するようにする方法

私のキャリアボードにシリアルポートを使用する必要がある内蔵デバイス(Ubuntu 16.04を実行しているNvidia Jetson TX2)があります。キャリアボードのシリアルポートは、デフォルトでルートが所有し、tty グループに属する ttyS0 にマッピングされます。

crw--w----  1 root tty       4,  64 Aug  1 13:34 ttyS0

ubuntuユーザーをグループ(私がログインしたグループ)に追加しましたが、ttyデフォルトではグループにttyS0に対する読み取り権限がありません。

sudo chmod g+r /dev/ttyS0修正しましたが、再起動後も問題は解決しません。さまざまなudevルール(99-z_setup.rules)を作成しました。

KERNEL=="ttyS0", NAME="ttyS0", SYMLINK+="my_tty", GROUP:="tty", MODE:="0660", OWNER:="ubuntu"

または

KERNEL=="ttyS0", NAME="ttyS0", SYMLINK+="my_tty", GROUP:="tty", MODE:="0660"

または

KERNEL=="ttyS0", NAME="ttyS0", SYMLINK+="my_tty", GROUP="tty", MODE="0660"

これらの結果は次のとおりです。

lrwxrwxrwx  1 root root           5 Aug  1 13:34 my_tty -> ttyS0
crw--w----  1 root tty       4,  64 Aug  1 13:34 ttyS0

だからまだ接近していません。私も試しました

KERNEL=="ttyS0", ACTION=="add", PROGRAM="/usr/bin/sudo /home/ubuntu/bin/setup_tty.sh"

setup_tty.shを含む

#!/bin/bash

chmod g+r /dev/ttyS0
echo "setup_tty ran" >> /home/ubuntu/bin/tty.log

ファイルにエコーされているので、スクリプトがtty.log実行されたことを知っていますが、権限はまだあります。

crw--w----  1 root tty       4,  64 Aug  1 13:44 ttyS0

グループ/所有者/モード設定が無視または上書きされるのと同じです。検索しましたが、似たような質問がたくさんありますが、その答えは常にユーザーをグループttyに追加するようですdialout。私のユーザーアカウントはすでに2つのグループのメンバーですが、何らかの理由でデフォルトでこのグループにサイコロはありません。読み取り権限。

/etc/login.defsを確認し、次の行を見つけました。

#       TTYPERM         Login tty will be set to this permission.
#
# If you have a "write" program which is "setgid" to a special group
# which owns the terminals, define TTYGROUP to the group number and
# TTYPERM to 0620.  Otherwise leave TTYGROUP commented out and assign
# TTYPERM to either 622 or 600.
#
# In Debian /usr/bin/bsd-write or similar programs are setgid tty
# However, the default and recommended value for TTYPERM is still 0600
# to not allow anyone to write to anyone else console or terminal

# Users can still allow other people to write them by issuing
# the "mesg y" command.

TTYGROUP        tty
TTYPERM         0600

TTYPERMの値を0660に変更して再起動しましたが、あまり違いはありませんでした。

再起動後にこのttyを640以外のモードにする方法についてのアイデアはありますか?

これが答えかもしれません。実行してjournalctl | grep tty次の出力を見つけました。

Aug 02 11:05:45 TX2-JUDY systemd[1]: Started Serial Getty on ttyS0.
Aug 02 11:05:47 TX2-JUDY systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Aug 02 11:05:47 TX2-JUDY systemd[1]: Stopped Serial Getty on ttyS0.
Aug 02 11:05:47 TX2-JUDY systemd[1]: Started Serial Getty on ttyS0.
Aug 02 11:05:47 TX2-JUDY systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Aug 02 11:05:47 TX2-JUDY systemd[1]: Stopped Serial Getty on ttyS0.
Aug 02 11:05:47 TX2-JUDY systemd[1]: Started Serial Getty on ttyS0.
Aug 02 11:05:47 TX2-JUDY systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Aug 02 11:05:47 TX2-JUDY systemd[1]: Stopped Serial Getty on ttyS0.
Aug 02 11:05:47 TX2-JUDY systemd[1]: Started Serial Getty on ttyS0.
Aug 02 11:05:48 TX2-JUDY systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Aug 02 11:05:48 TX2-JUDY systemd[1]: Stopped Serial Getty on ttyS0.
Aug 02 11:05:48 TX2-JUDY systemd[1]: Started Serial Getty on ttyS0.
Aug 02 11:05:48 TX2-JUDY systemd[1]: [email protected]: Service hold-off time over, scheduling restart.
Aug 02 11:05:48 TX2-JUDY systemd[1]: Stopped Serial Getty on ttyS0.
Aug 02 11:05:48 TX2-JUDY systemd[1]: [email protected]: Start request repeated too quickly.
Aug 02 11:05:48 TX2-JUDY systemd[1]: Failed to start Serial Getty on ttyS0.

したがって、他のサービス(Gettyが何であるかわからない)がttyS0を使用しようとしているようです。

ベストアンサー1

ログインを使用している場合は、/etc/login.defs項目を確認してくださいTTYPERM

一般的なデバッグアドバイス:スクリプトの冒頭でそれを使用してコマンドのエラー出力をキャプチャし、デバイスエントリがすでに存在することを確認する必要があります。

exec >> /home/ubuntu/bin/tty.log 2>&1

おすすめ記事