Atsushi2022の日記

データエンジニアリングに関連する記事を投稿してます

【Linux Tips】色々メモ

実行権限がないファイルの実行

実行権限がないファイルでも読み取り権限があれば、bashやsource等の引数にすれば実行できちゃう。

$ id
uid=1001(test01) gid=1001(test01) groups=1001(test01)
$ ls -l test.sh
-rw-rw-r-- 1 test01 test01 5 Dec  9 23:24 test.sh
$ ./test.sh
bash: ./test.sh: Permission denied
$ bash test.sh
Sat Dec  9 23:24:24 JST 2023
$ ls -l /usr/bin/bash
-rwxr-xr-x 1 root root 1396520 Jan  7  2022 /usr/bin/bash
$ chmod 200 test.sh
$ ls -l test.sh
--w------- 1 test01 test01 5 Dec  9 23:24 test.sh
$ bash test.sh
bash: test.sh: Permission denied

予約されたユーザIDとグループID

RHELでは、1000以下のユーザーIDとグループIDをシステムユーザー、システムグループ用に予約している。使用できるユーザーIDとグループIDは/etc/login.defsファイルに記述されている。デフォルトでは以下の通り、ユーザーIDとグループIDの最小値は1000になっている。

$ cat /etc/login.defs | grep -e '^UID_MIN' -e '^GID_MIN'
UID_MIN                  1000
GID_MIN                  1000

予約されているユーザーIDとグループIDは以下のファイルに記載されている。

cat /usr/share/doc/setup/uidgid

ちなみに、予約に使用されるIDの範囲は今後広がる可能性があるようで、5000番以降の番号を割り当てることが推奨らしい。5000番以降を割り当てるようにするには、前述の/etc/login.defsUID_MINGID_MINの値を5000にする。

grepで使えそうな文字列

設定ファイル等でコメントアウトされていたり、改行が入っていたりして見にくい場合がある。

grepで行頭が#だったり、改行コードになっている行を省くと、設定ファイルが読みやすくなる。

 cat <ファイル名> | grep -v '^#' | grep -v '^\n*$'

crontabのタイムゾーン設定

crontab -eで設定ファイルを開き、先頭行にタイムゾーン設定(CRON_TZ=Asia/Tokyo)を入れる。

# crontab -l
CRON_TZ=Asia/Tokyo
52 11 * * * touch /root/test.txt

参考

ファイル・ディレクトリの操作と管理(Linux学習) - YouTube

第4章 ユーザーとグループの管理 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

Linuxシステムログ入門 2023-3-11 B-5 - YouTube