一。練習#
1.1 ユーザーが Linux システムに存在するかどうかを確認する方法は?#
1、ユーザーがLinuxシステムに存在するかどうかを確認する方法は?
cat /etc/passwd
または idコマンド
1.2 ユーザーの Linux システムへのログインを無効にする方法#
2、ユーザーのLinuxシステムへのログインを無効にする方法
usermod -L でユーザーをロック
usermod -s /sbin/nologin root
1.3 ユーザーがどのグループに属しているかを確認する方法#
3、ユーザーがどのグループに属しているかを確認する方法
idコマンドを使用して確認
groupsコマンドを使用して確認
/etc/groupでユーザーが所属するグループを確認
1.4 現在 Linux にログインしているユーザーは誰か? 以前に Linux システムにログインしたユーザーは誰か?#
4、現在Linuxにログインしているユーザーは誰か? 以前にLinuxシステムにログインしたユーザーは誰か?
wコマンドを使用してユーザーのログイン状況を確認
lastコマンドを使用して以前にログインしたユーザーを確認
例:w who 現在ログインしているユーザーを確認
#注:wはより詳細に見ることができる
[root@localhost ~]# w
09:37:40 up 8:32, 5 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 四09 6:28 0.09s 0.09s -bash
root pts/3 192.168.136.1 09:29 4.00s 0.05s 0.03s w
[root@localhost ~]# who
root tty1 2020-11-05 09:31
root pts/3 2020-11-06 09:29 (192.168.136.1)
1.5 ユーザーのパスワードを再設定する方法#
5、ユーザーのパスワードを再設定する方法
passwd
1.6 Linux の root パスワードを忘れた場合の対処法#
6、Linuxのrootパスワードを忘れた場合の対処法
単一ユーザーモードに入る
1、起動時に任意のキーを押して起動画面を停止し、対応するカーネルを選択して e で編集
2、linux16の行を見つけ、最後に rd.break を入力
3、Ctrl-x を押して起動し、以下の操作でrootパスワードを解除
例:rootユーザーのパスワードを忘れた場合はどうする?
答:単一ユーザーモードに入る
https://blog.csdn.net/qq_37960324/article/details/84589565
https://www.cnblogs.com/jsjrj01/p/10301603.htm
1.7 システムにログインしているユーザーを追い出し、再ログインを防ぐ方法は?#
7、システムにログインしているユーザーを追い出し、再ログインを防ぐ方法は?
1. 疑わしいrootログインユーザーを追い出し、すぐにパスワードを変更
2. sshd---》/etc/hosts.deny hosts.allow -->ip
3. /etc/ssh/sshd_config -->DenyUsers -->ユーザー
1.8 一般ユーザーを root ユーザーにする方法#
8、一般ユーザーをrootユーザーにする方法
1.(推奨しない)/etc/passwdファイルを編集し、変更する一般ユーザーのユーザーIDを0に変更
2. sudo権限
1.9#
· ディレクトリ/tech/caliと/tech/sanleを作成し、それぞれプロジェクトグループのユーザーアカウントのホームディレクトリを保存するために使用する;
· 2つのプロジェクトグループにグループアカウントcali、sanleを追加し、GID番号はそれぞれ1001、1002;技術部にグループアカウントtechを追加し、GID番号は200;
· 2人のユーザーb1、b2を追加し、彼らの基本グループはcali、追加グループはtechであり、ホームディレクトリは/tech/caliディレクトリ内のアカウントと同名のフォルダを使用する(例:b1ユーザーのホームディレクトリは/tech/cali/b1);b2ユーザーのアカウントは2012-12-31以降無効に設定;
· 2人のユーザーa1、a2を追加し、彼らの基本グループはsanle、追加グループはtechである;ホームディレクトリは/tech/sanleディレクトリ内のアカウントと同名のフォルダを使用する(例:a1ユーザーのホームディレクトリは/tech/cali/a1);a2ユーザーのアカウントのログインシェルは/bin/ksh
すべての新規ユーザーのパスワードは123456;
1、mkdir -p /tech/cali /tech/sanle
2、groupadd -g 1001 cali
groupadd -g 1002 sanle
groupadd -g 200 tech
3、useradd -g cali -G tech -d /tech/cali/b1 b1
useradd -g cali -G tech -d /tech/cali/b2 -e 2020-11-6 b2
4、useradd -g sanle -G tech -d /tech/sanle/a100 a1
useradd -g sable -G tech -d /tech/sanle/a200 -s /bin/ksh a2
5、echo 123456|passwd a1 --stdin
echo 123456|passwd a2 --stdin
----------------------------------------------------------------
例:期限切れのアカウントはログインできない
-----------------------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# useradd -e "2012-11-22" sanle3 # 注:期限切れのアカウントはログインできない
[root@sanchuang-linux ~]# su - sanle3 # 注:切り替えはできるが、ログインはできない
[sanle3@sanchuang-linux ~]$
二. /etc/group ファイル#
/etc/group ファイル
#注:/etc は設定ファイルが保存される場所
/etc/group ファイル # 注:どのアカウントの副次グループが見れるか
グループアカウント:
- 主要グループ(プライベートグループ)
- 副次グループ(付属グループ)
GID:(Group Identify,グループ識別番号)
Linux グループアカウント
- 主要グループ(プライベートグループ)
ユーザーに関連するデフォルトのグループで、/etc/passwd ファイルの第 4 フィールドで定義される
- 副次グループ(付属グループ)
ユーザーは他のグループにも同時に属することができ、/etc/group ファイルの第 4 フィールドで定義される
ユーザーの主要グループの名前とGIDに関連
例
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# useradd -g sanchuang4 -G sanchuang5 sanchuang10
[root@sanchuang-linux ~]# useradd -g sanchuang4 -G sanchuang5 sanchuang12
[root@sanchuang-linux ~]# useradd -g sanchuang5 -G sanchuang4 sanchuang13
[root@sanchuang-linux ~]# cat /etc/group
sanchuang4:x:1100:sanchuang13 # 注:副次グループのメンバーリストのみ表示
sanchuang5:x:1200:sanchuang10,sanchuang12 # 注:副次グループのメンバーリストのみ表示
#注:グループアカウント名:sanchuang5;GID:1200;グループメンバーリストsanchuang10,sanchuang12
#注:副次グループのメンバーリストのみ表示
===========================================================================================================
例:あるグループにどのユーザーがいるかを確認する方法
---------------------------------------------------------------------------------------------------------------------------------
#注:2つのファイル /etc/passwd /etc/groupを参照
[root@sanchuang-linux ~]# awk -F: '/sanchuang5/{print $3,$4}' /etc/group
1200 sanchuang10,sanchuang12 # 注:あいまい一致、sanchuang5を含む行を一致させる
[root@sanchuang-linux ~]# awk -F: '$1=="sanchuang5"{print $3,$4}' /etc/group # 注:引用符を追加
1200 sanchuang10,sanchuang12 # 注:正確な一致
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# vim group_member.sh
#!/bin/bash
group_name=$1 #注:グループ名を引数として
#/etc/groupからGIDとメンバーリストを取得
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
echo $group_msg #注:-vオプションはawkにシェル変数を渡し、外部$group_nameをawk内部変数に指定し、実行時にカスタム変数を使用
[root@sanchuang-linux ~]# sh group_member.sh sanchuang5
1200 sanchuang10,sanchuang12
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# a='1200 sanchuang10,sanchuang12'
[root@sanchuang-linux ~]# s1=(a b c d e)
[root@sanchuang-linux ~]# s2=($a) # 注:配列に変換
[root@sanchuang-linux ~]# echo $s2
1200
[root@sanchuang-linux ~]# echo $s2[@]
1200[@]
[root@sanchuang-linux ~]# echo ${s2[@]} # 注:配列のすべての要素を取得
1200 sanchuang10,sanchuang12
[root@sanchuang-linux ~]# echo ${#s2[@]} # 注:配列の長さを取得
2
[root@sanchuang-linux ~]# echo ${#s2} # 注:最初の要素の文字の長さを取得
4
[root@sanchuang-linux ~]# echo ${s2[0]} # 注:配列の最初の要素を取得
1200
[root@sanchuang-linux ~]# echo ${s2[1]} # 注:配列の2番目の要素を取得
sanchuang10,sanchuang12
-----------------------------------------
group_name=$1 #注:グループ名を引数として
#/etc/groupからGIDとメンバーリストを取得
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
#注:-vオプションはawkにシェル変数を渡し、外部$group_nameをawk内部変数に指定し、実行時にカスタム変数を使用
#注:配列の最初の要素を取得
group_lst=($group_msg) #注:配列に変換
group_id=${group_lst[0]} # 注:gid
group_user_1=${group_lst[1]} # 注:そのグループ(副次グループ)のメンバー
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# vim group_member.sh
#!/bin/bash
group_name=$1 #注:グループ名を引数として
#/etc/groupからGIDとメンバーリストを取得
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
#注:-vオプションはawkにシェル変数を渡し、外部$group_nameをawk内部変数に指定し、実行時にカスタム変数を使用
#注:配列の最初の要素を取得
group_lst=($group_msg) #注:配列に変換
group_id=${group_lst[0]}
group_user_1=${group_lst[1]}
#注:/etc/passwdから主要グループのメンバーを取得;tr "\n" ","で区切り文字を,に指定;$4==group_idの行をフィルタリング
group_user_2=`awk -F: -v group_id=$group_id '$4==group_id{print $1}' /etc/passwd|tr "\n" ","`
echo $group_user_2$group_user_1 # 注:直接連結するため、"+"記号は必要ない
[root@sanchuang-linux ~]# sh group_member.sh sanchuang5
sanchuang13,sanchuang10,sanchuang12
--------------------------------------------------------
[root@sanchuang-linux ~]# cat /etc/passwd
sanchuang13:x:1034:1200::/home/sanchuang13:/bin/bash # 注:gid位置 $4
===========================================================================================================
まとめ:グループにどのメンバーがいるかを確認する方法
#シェルとawkのパラメータ渡し:
https://blog.csdn.net/imzoer/article/details/8738581
[root@sanchuang-linux ~]# cat group_member2.sh
#!/bin/bash
group_name=$1
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
group_lst=($group_msg) # 注:awk -vオプション パラメータを定義し、変数をawkに渡す
group_id=${group_lst[0]} # 注:()で囲み、文字を配列に変換し、デフォルトで空白で分割し、1,2要素を取得
group_user_1=${group_lst[1]}
group_user_2=`awk -F: -v group_id=$group_id '$4==group_id{print $1}' /etc/passwd| tr "\n" ","`
echo $group_user_2$group_user_1 # 注:改行をカンマに置き換える
[root@sanchuang-linux ~]# sh group_member2.sh sanchuang5
sanchuang13,sanchuang10,sanchuang12
--------------------------------------------------------------------------------------------
コマンドライン
[root@sanchuang-linux ~]# less /etc/group
sanchuang5:x:1200:sanchuang10,sanchuang12
[root@sanchuang-linux ~]# awk -F: '$1=="sanchuang5"{print $3}' /etc/group
1200 # 注:引用符を追加し、文字列を示す
[root@sanchuang-linux ~]# awk -F: '$1=="sanchuang5"{print $3,$4}' /etc/group
1200 sanchuang10,sanchuang12 # 注:グループid 付属グループのメンバー
[root@sanchuang-linux ~]# awk -F: '$4==1200{print $1}' /etc/passwd
sanchuang13 # 注:主要グループのメンバー名を取得(デフォルトで改行分割)
group_user_2=`awk -F: -v group_id=$group_id '$4==group_id{print $1}' /etc/passwd| tr "\n" ","`
#注:改行をカンマに置き換える
--------------------------------------------------------------------------------------------
文字列の切り取り # 注:不正確、gidは5桁の可能性がある
[root@sanchuang-linux ~]# result=`awk -F: '$1=="sanchuang5"{print $3,$4}' /etc/group`
[root@sanchuang-linux ~]# echo ${result:0:4}
1200
[root@sanchuang-linux ~]# echo ${result#* }
sanchuang10,sanchuang12
[root@sanchuang-linux ~]# echo ${result:5}
sanchuang10,sanchuang12
[root@sanchuang-linux ~]# echo ${result%% *}
1200
---------------------------
文字列の切り取り:
#文字列操作
line=`head -n1 /etc/passwd`
echo "文字列は:$line"
echo '文字列は:$line'
echo "最初の4文字を切り取る:"
echo ${line:0:4}
echo "最後の9文字を切り取る:"
echo ${line:0-9}
echo "最後から9文字目から4文字を切り取る"
echo ${line:0-9:4}
echo "左から右に最後の:以降の文字を切り取る"
echo ${line##*:}
echo "左から右に最初の:以降の文字を切り取る"
echo ${line#*:}
echo "右から左に最後の:以降の文字を切り取る"
echo ${line%%:*}
echo "右から左に最初の:以降の文字を切り取る"
echo ${line%:*}
echo "文字列の長さ"
echo ${#line}
--------------------------------------------------------------------------------------------
forループで取得
[root@sanchuang-linux lianxi]# vim user.sh
result=`awk -F: '$1=="sanchuang5"{print $3,$4}' /etc/group`
for i in $result
do
echo $i
done
[root@sanchuang-linux lianxi]# bash user.sh
1200
sanchuang10,sanchuang12
[root@sanchuang-linux ~]# result=`awk -F: '$1=="sanchuang5"{print $3,$4}' /etc/group`
------------------------------------------------------------
[root@sanchuang-linux ~]# for i in $result; do echo $i; done
1200
sanchuang10,sanchuang12
三. group 操作#
3.1 groupadd groupdel#
groupadd コマンド
形式:groupadd [-g GID] グループアカウント名
groupdel コマンド
形式:groupdel グループアカウント名
例:groupadd groupdel
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# groupadd -g 5000 sanle # 注:gidが5000のsanleグループを作成
[root@sanchuang-linux ~]# less /etc/group #↑注:sanleグループアカウントを追加
sanle:x:5000:
[root@sanchuang-linux ~]# groupdel sanle # 注:sanleグループアカウントを削除
[root@sanchuang-linux ~]# less /etc/group # 注:削除された
3.2 groupmod newgrp#
groupmod コマンド
- 用途:グループ名とグループ id を設定
- 形式:
groupmod [オプション]... グループアカウント名
よく使われるコマンドオプション
- -n:グループ名を変更
- -g:グループ id を変更
newgrp で有効グループを変更
- ユーザーは変更するグループのメンバーでなければならない
有効グループ:(あまり使われない)
新しいファイルやフォルダを作成する際に使用される gid
gid を使用するグループが有効グループとなる
現在のユーザーが新しいファイルやフォルダを作成する際に、デフォルトで使用される gid に対応するグループが有効グループである
例:newgrpで有効グループを変更
--------------------------------------------------------------------------------------------
[root@sanchuang-linux lianxi]# ll # 注:llでディレクトリの詳細情報を確認
-rw-r--r--. 1 root root 86 9月 25 14:23 abcd.txt
-rw-r--r--. 1 root root 158 9月 25 09:47 backup_log.sh
#注:最初のrootはファイルの所有者
#注:2番目のrootはファイルのグループ
---------------------------------------------------
[root@sanchuang-linux lianxi]# newgrp sanchuang4
[root@sanchuang-linux lianxi]# touch aa
[root@sanchuang-linux lianxi]# ll
-rw-r--r-- 1 root sanchuang4 0 11月 6 11:25 bb # 注:グループが変更された
---------------------------------------------------
[root@sanchuang-linux lianxi]# su - sanchuang10
[root@sanchuang-linux lianxi]# touch cc
[sanchuang10@sanchuang-linux ~]$ ll
総用量 0
-rw-r--r-- 1 sanchuang10 sanchuang4 0 11月 6 11:27 cc
[sanchuang10@sanchuang-linux ~]$ newgrp sanchuang # 注:一般ユーザーが有効グループを変更しようとすると、有効グループにその一般ユーザーが含まれている必要がある
パスワード:
newgrp: failed to crypt password with previous salt: 無効なパラメータ
#注:一般ユーザーが有効グループを変更しようとすると、有効グループにその一般ユーザーが含まれている必要がある
3.3 Linux グループアカウント#
Linux グループアカウント
- 主要グループ(プライベートグループ)
ユーザーに関連するデフォルトのグループで、/etc/passwd ファイルの第 4 フィールドで定義される
- 副次グループ(付属グループ)
ユーザーは他のグループにも同時に属することができ、/etc/group ファイルの第 4 フィールドで定義される
ユーザーの主要グループの名前とGIDに関連
四. gpasswd コマンド#
gpasswd コマンド
- 用途:グループアカウントのパスワードを設定(ほとんど使用しない)、グループメンバーを追加 / 削除
- 形式:
gpasswd [オプション]... グループアカウント名
例:グループメンバーrootを削除
--------------------------------------------------------------------------------------------
[root@localhost ~]# gpasswd -d root market
ユーザー「root」を「market」グループから削除しています
例:グループアカウントのパスワードを設定
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# gpasswd sanchuang
sanchuangグループのパスワードを変更しています
新しいパスワード:
新しいパスワードを再入力:
[root@sanchuang-linux ~]#
五. Linux 暗号化#
Linux 暗号化
デフォルトで sha512 アルゴリズムを使用
ハッシュアルゴリズムを使用して、ハッシュ値を求める
任意の長さの入力を固定長の出力にマッピングし、その出力がハッシュ値である
これは一方向の暗号化技術である
hash アルゴリズム:md5 sha1 sha2 sha256 sha512
パスワードの正当性を判定する方法は?
# 注:入力されたパスワードを同じ方法で暗号化し、入力された暗号文とファイル内の暗号文が一致するかどうかを判定する
例:md5sum
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# echo "123456"|md5sum # 注:md5sumもハッシュアルゴリズムの一種
f447b20a7fcbf53a5d5be013ea0b15af - # 注:与えられたものに関わらず、特定の長さの出力が返される
[root@sanchuang-linux ~]# echo "123456xyzzzzz"|md5sum # 注:一方向の暗号化アルゴリズム
bcdd6694d1ece311bd7bd668da54b9b9 -
[root@sanchuang-linux ~]# echo "xxxxxxxxxxxxxxxxxxxxxxxx"|md5sum
7373d8394616d74ba2c42402266ae3aa -
[root@sanchuang-linux tmp]# md5sum douban # 注:ファイルを暗号化する
816ba8dd29e68f3450d8748096227d42 douban # 注:任意のファイルの入力に対して、対応する長さの出力が得られる
[root@sanchuang-linux tmp]# md5sum sucai8
9a44802fc09e1b84dc94740c40aa6450 sucai8
例:衝突攻撃とソルト
--------------------------------------------------------------------------------------------
#注:衝突攻撃
[root@sanchuang-linux ~]# echo "123456"|md5sum # 注:同じ暗号化文字列の場合、出力されるハッシュ値は同じ
f447b20a7fcbf53a5d5be013ea0b15af -
[root@sanchuang-linux ~]# echo "123456"|md5sum
f447b20a7fcbf53a5d5be013ea0b15af -
#注:ソルトを追加 # 注:パスワードの安全性を向上させる
[root@sanchuang-linux ~]# echo "123456xndfoaei242"|md5sum # 注:xndfoaei242はソルト
15465f7aa2929cca95ed7efb97ffeba0 -
例
--------------------------------------------------------------------------------------------
root:$6$i4J5vzOUIMpchLRj$nTCbYWgA5cpv34Set6R2ZmC1AYYHGHnQafNbA9fkFsTR0E9GG1BJP5o3OTMuC4kGUqsomCI/G8FdEVELI/aeq0::0:99999:7:::
パスワードフィールド:$暗号化アルゴリズムid$ソルト$実際の暗号文
暗号化の底層はカーネルのcrypt関数を使用して実装される
pythonでの実装(sha512)
>>> import crypt
>>> crypt.crypt('123456','$6$i4J5vzOUIMpchLRj') # 注:$暗号化アルゴリズムid$ソルト、暗号文は上記と同じ
'$6$i4J5vzOUIMpchLRj$nTCbYWgA5cpv34Set6R2ZmC1AYYHGHnQafNbA9fkFsTR0E9GG1BJP5o3OTMuC4kGUqsomCI/G8FdEVELI/aeq0' # 注:上記の暗号文と一致
-----------------------------------------
$6 はsha512アルゴリズムを示す
$i4J5vzOUIMpchLRj はソルト
$nTCbYWgA5cpv……aeq0 は実際の暗号文
ハッシュアルゴリズムの用途:ファイルのmd5値が変更されたかどうかを判定するために使用される
六. /etc/login.defs ファイル#
/etc/login.defs ファイル
- アカウントの初期属性設定
- 一般ユーザーの UID と GID の範囲などを設定
例
[root@sanchuang-linux ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail # 注:デフォルトのアドレスを設定
PASS_MAX_DAYS 99999 # 注:パスワードの有効期限の日数
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
七. useradd コマンドがバックグラウンドで実行する作業は?#
useradd コマンドがバックグラウンドで実行する作業は?
八. /etc/skel/* ファイル#
*/etc/skel/ファイル
- 新しいユーザーアカウントを作成する際に、ユーザーのホームディレクトリにコピーされる
ユーザーの初期設定ファイルを主に制御する
bash_profile
: ユーザーが毎回ログインする際に実行されるbashrc
: 新しいBash環境に入るたびに実行されるbash_logout
: ユーザーが毎回ログアウトする際に実行されるbash_history
: 前回ログアウト前に使用した履歴コマンドを記録する
ログイン時:
.bash_profile
~/.bash_profile --> ~/.bashrc --> /etc/bashrc
新しい bash 環境に入る:
~/.bashrc --> /etc/bashrc
--------------------------------------------------------------------------------------------
#注:ログイン時には必ず.bash_profile が実行される
#注:ログイン時には必ず.bashrc が実行される # 注:.bash_profile 内で.bashrc が呼び出される
#注:ログイン時には最初に.bash_profile が実行され、.bash_profile 内で.bashrc が呼び出される
#注:新しい bash 環境に入ると、.bashrc が実行される **
#注:新しい bash 環境に入ると.bashrc が実行され、.bash_profile は実行されない。ログイン時に.bash_profile が実行される **
ユーザー環境設定
#注:/etc/bashrc システムユーザーの環境設定、エイリアス設定、その他の関数
/etc/bashrc は全体設定に相当し、このファイルは root ユーザーのみが変更できる # 注:/etc/bashrc は root ユーザーのみが変更可能
~/.bashrc 個人設定、個性化設定、ホームディレクトリ内で変更する権限がある # 注:ホームディレクトリ内の.bashrc ファイル
/etc/profile システム全体のユーザー環境設定
~/.bash_profile 個人設定
理由:
全体設定はすべてのユーザーに影響を与える。
ホームディレクトリ内の設定は現在のユーザーに影響を与える。
例:ホームディレクトリ内の設定
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# less .bash_profile
# .bash_profile
if [ -f /etc/bashrc ]; then # 注:/etc/bashrcが存在する場合、現在実行する
. /etc/bashrc # 注:/etc/bashrcは初期ユーザー環境設定を実行する
fi # 注:.で実行する、.は現在のbashを示す
PATH=$PATH:$HOME/bin
export PATH
[root@localhost ~]# less .bashrc
# .bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
if [ -f /etc/bashrc ]; then
. /etc/bashrc # 注:最終的にこのファイルが実行される
fi
[root@sanchuang-linux ~]# which ls # 注:lsは/usr/bin/lsを実行し、PATH環境変数から前から探す
alias ls='ls --color=auto'
/usr/bin/ls
============================================================================================
例:.bash_history 前回ログアウト前に使用した履歴コマンドを記録する
.bash_history は現在のユーザーのコマンド履歴を保存し、初めてログインしたユーザーがコマンドを操作する際にはこのファイルは生成されない
初めてログインしてログアウトすると、メモリ内の履歴が.bash_historyファイルに自動的に書き込まれる
[root@sanchuang-linux ~]# history #注:historyは現在のユーザーのコマンド履歴を確認するだけ
#注:ユーザーがログアウトする際にのみ、コマンド履歴が.bash_historyに書き込まれる
#注:新しいユーザーを作成する際には.bash_historyファイルは生成されず、ログアウト後に再度ログインすると.bash_historyファイルが生成される
#注:すべてのコマンドが履歴に書き込まれるわけではなく、正確ではない
[root@sanchuang-linux ~]# cat .bash_history # 注:現在のユーザーのホームディレクトリ内で.bash_historyファイルを確認
九. sanchuang にログインまたはログアウトするたびに、/tmp/sanchuang_log にログを印刷する#
sanchuang にログインまたはログアウトするたびに、/tmp/sanchuang_log にログを印刷する
手順
1.sanchuangユーザーの.bash_profileファイルを変更し、追加する # 注:毎回ログインするときに最初にこのファイルが実行される
now_date=`date`
echo $now_date"login..." >> /tmp/sanchuang_log
2.sanchuangユーザーの.bash_logoutファイルを変更し、追加する # 注:毎回ログアウトするときに最初にこのファイルが実行される
now_date=`date`
echo $now_date"logout..." >> /tmp/sanchuang_log
3.ファイルの変化を監視し、末尾の行を追加する # 注:tail -fでファイルを監視することがよくある
$ tail -f /tmp/sanchuang_log # 注:tail -fはファイルの末尾の変化(新しく追加された末尾の行)を監視する
例
--------------------------------------------------------------------------------------------
[root@sanchuang-linux log]# su - sanchuang # 注:一般ユーザー 自分のホームディレクトリで操作
上回のログイン:五 11月 6 14:59:23 CST 2020pts/1 上
[sanchuang@sanchuang-linux ~]$ vim ~/.bash_profile # 注:ホームディレクトリ内の.bash_profileを操作
now_date=`date`
echo $now_date"login..." >> /tmp/sanchuang_log
[sanchuang@sanchuang-linux ~]$ tail -f /tmp/sanchuang_log # 注:tail -fでファイルの末尾の変化を監視する
2020年 11月 06日 星期五 15:05:26 CSTlogin...
[sanchuang@sanchuang-linux ~]$ vim ~/.bash_logout
now_date=`date`
echo $now_date"logout..." >> /tmp/sanchuang_log
[sanchuang@sanchuang-linux ~]$ tail -f /tmp/sanchuang_log # 注:tail -fでファイルの末尾の変化を監視する
2020年 11月 06日 星期五 15:05:26 CSTlogin...
2020年 11月 06日 星期五 15:07:33 CSTlogout...
十. Shell 起動設定ファイルの違い#
Shell 起動設定ファイルの違い
- /etc/profile: グローバル環境変数を設定し、すべてのユーザーに影響を与える
- ~/.bash_profile : 個人環境を設定し、1 人のユーザーに影響を与える
- /etc/bashrc : グローバルなエイリアスまたはシェルオプションを設定し、すべてのユーザーに影響を与える
- **~/.bashrc **: 個人のエイリアスまたはシェルオプションを設定し、1 人のユーザーに影響を与える
十一. .bash_history#
.bash_history
現在のユーザーのコマンド履歴を保存し、初めてログインしたユーザーがコマンドを操作する際にはこのファイルは生成されない
初めてログインしてログアウトすると、メモリ内の履歴が.bash_history ファイルに自動的に書き込まれる
十二. bash の起動スクリプト初期化#
bash の起動スクリプト初期化
十三。ユーザーとグループアカウントの照会#
ユーザーとグループアカウントの照会
id コマンド
- 用途:ユーザーの ID を照会
- 形式:id [ユーザー名]
who、w、users コマンド
- 用途:ホストにログインしているユーザー情報を照会
groups コマンド
- 用途:ユーザーが所属するグループを照会 # 注:ユーザーが所属する基本グループと付属グループを返す
last、lastlog コマンドの使用
例:w who
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# w # 注:どのユーザーでログインしているかを確認し、現在切り替えたユーザーではない
15:26:24 up 6:11, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 四15 58:07 0.07s 0.07s -bash # 注:ttyは実際の端末
root pts/0 192.168.0.42 14:28 0.00s 0.18s 0.01s w # 注:リモートログインpts仮想端末
root pts/1 192.168.0.42 14:28 12:24 0.07s 0.01s -bash
#注:実際の端末FORMは空
#注:仮想端末は物理マシンのipアドレスを表示
#注:WHATは現在の環境で行っていること
#注:15:26:24 現在の時間
#注:6:11 起動時間の合計
#注:6 users ログインユーザーの数
#注:load average cpuの平均負荷、数値が大きいほどマシンが忙しい
--------------------------------------------------------------
[root@sanchuang-linux ~]# who # 注:wより詳細ではない
root tty1 2020-11-05 15:13
root pts/0 2020-11-06 14:28 (192.168.0.42)
root pts/1 2020-11-06 14:28 (192.168.0.42)
------------------------------------------------------------------
[root@sanchuang-linux ~]# users # 注:現在どのユーザーがログインしているかを確認
root root root root root root
---------------------------------------------------------------------------------
[root@sanchuang-linux ~]# groups sanchuang10 # 注:ユーザーが所属する基本グループと付属グループを表示
sanchuang10 : sanchuang4 sanchuang5
[root@sanchuang-linux ~]# id sanchuang10
uid=1032(sanchuang10) gid=1100(sanchuang4) グループ=1100(sanchuang4),1200(sanchuang5)
--------------------------------------------------------------------------------
[root@sanchuang-linux ~]# last # 注:以前にどのユーザーがログインしていたかを確認
root tty1 Wed Sep 16 13:41 - 13:41 (00:00)
root pts/0 192.168.136.1 Wed Sep 16 13:29 - 13:40 (00:11)
reboot system boot 4.18.0-193.el8.x Wed Sep 16 13:26 - 13:42 (00:15)
[root@sanchuang-linux ~]# lastlog # 注:各ユーザーの最近のログイン状況を確認
ユーザー名 端末 来自 最後のログイン時間
root pts/0 五 11月 6 15:18:46 +0800 2020
bin **未ログイン**
shutdown **未ログイン**
十四。ターミナルデバイス名#
ターミナルデバイス名
名前 デバイス
ttyn 仮想コンソール
pts/n 擬似端末
:0 X サーバー