mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

15_Linux基础-用户与组2

一。练习#

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,分别用于保存个项目组中用户帐号的宿主目录;
·  为两个项目组添加组帐号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用户帐号登录的shell为/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 文件的第四个字段定义

  • 次要组 (附属组)

用户可以同时属于其他的组,在 /etc/group 文件的第四个字段定义

用户的主要组的名称和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传递shell变量 指定外部$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]}		# 注:获取数组里第二个元素
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传递shell变量 指定外部$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传递shell变量 指定外部$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
===========================================================================================================
总结:查看组中有哪些成员
#shell与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 "从倒数第九个字符开始截取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是文件的 属主
#注:第二个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 文件的第四个字段定义

  • 次要组 (附属组)

用户可以同时属于其他的组,在 /etc/group 文件的第四个字段定义

用户的主要组的名称和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 命令在后台到底做了哪些工作?

image-20220813013242770


八. /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 个人配置

原因:

全局配置,影响所有用户。

家目录下配置,影响当前用户。

/etc/ 目录下的环境配置修改,属于全局配置,家目录下属于个人用户配置

示例:家目录下配置
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# less .bash_profile 
# .bash_profile
if [ -f /etc/bashrc ]; then		# 注:判断有没有 /etc/bashrc,有就在当前执行/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

============================================================================================
示例:/etc/skel/*文件
#注:新建用户帐号时,复制到用户宿主目录中
[root@sanchuang-linux ~]# cd /etc/skel/
[root@sanchuang-linux skel]# ls -al
总用量 24
drwxr-xr-x.  2 root root   62 9月  16 13:23 .
drwxr-xr-x. 90 root root 8192 11月  6 15:15 ..
-rw-r--r--.  1 root root   18 11月  9 2019 .bash_logout
-rw-r--r--.  1 root root  141 11月  9 2019 .bash_profile
-rw-r--r--.  1 root root  312 11月  9 2019 .bashrc

============================================================================================
示例:.bash_history 记录存放上次注销前使用的历史命令
.bash_history  存放当前用户的命令历史,第一次登录用户,操作命令的时候,不会生成此文件
第一次登陆退出后会自动将内存里的历史记录写到.bash_history文件里

[root@sanchuang-linux ~]# history				#注:history只是查看当前用户的命令历史

#注:用户退出时,命令历史才会写入.bash_history
#注:新建用户时,不会生成.bash_history文件,只有退出后 再次登录 才会生成.bash_history文件
#注:不是所有的命令都写入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 : 配置个人环境,影响一个用户
  • /etc/bashrc : 配置全局的别名或者 shell 选项,影响所有用户
  • **~/.bashrc **: 配置个人别名或者 shell 选项,影响一个用户

十一. .bash_history#

.bash_history

存放当前用户的命令历史,第一次登录用户,操作命令的时候,不会生成此文件

第一次登陆退出后会自动将内存里的历史记录写到.bash_history 文件里


十二. bash 的启动脚本初始化#

bash 的启动脚本初始化

image-20220813014441823

image-20220813014453858


十三。用户和组账户查询#

用户和组账户查询

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 服务器


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。