admin 管理员组

文章数量: 887021

文章目录

    • id
    • /etc/passwd
    • /etc/shadow
    • useradd
      • -c
      • -d
      • -M
      • -r
      • **问题**
    • userdel
    • usermod
    • groupadd
    • groupdel
    • passwd
      • -l
      • -u
    • ls
    • chown
    • /etc/skel
    • 执行脚本的方式
    • diff
    • 如何知道某个文本文件发生了变化(被改动了)?
    • 【拓展】
      • 如果/etc/shadow 、/etc/passwd、/etc/group都被删了,怎么恢复?
      • 如何产生5个随机字符?
    • 练习
    • 实验

[知识点拓展]

sre

SRE是指Site Reliability Engineer (网站可靠性工程师)
一个SRE工程师基本上需要掌握很多知识:算法,数据结构,编程能力,网络编程,分布式系统,可扩展架构,故障排除。
sre --》运维开发

BAT

BAT baidu alibaba Tencent

阿里系
腾讯系
百度系

id

id标识符相当于id card 身份证

id 查看用户的uid和gid

[root@lier 521]# id root
uid=0(root) gid=0(root)=0(root)

uid 用户id

gid 组id

linux里的超级用户root uid 0 gid 0

/etc/passwd

/etc/passwd 存放了linux系统里的所有的用户的信息

[root@lier 521]# cat /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

/etc/shadow

/etc/shadow :存放所有用户的密码,密码经过了sha加密

[root@lier 521]# cat /etc/shadow |grep lier
lier:$6$b4qWml6o$WXHp0DuupvgP1JOPY7589cnLlvMX1bRxtCCDq.RWZKHA7YYP/VbJBggR2ygp6D.lrMKkmKk6yOcSQhSa/tKSu1:19051:0:99999:7:::

/etc/shadow文件中每条信息的第二个字段表示用户的密码

!! --》普通用户,没有设置密码

*–》系统用户,没有设置密码

linux系统默认情况下,没有设置密码的用户,不允许远程登录;但是可以使用su 切换本地登录

linux里一切皆文件
命令很多都是对文件进行操作(读/写)

useradd

新建用户

useradd 系统会帮忙新建家目录,从/etc/skel下拷贝bash初始化脚本文件,还会帮助新建一个邮箱文件(存放邮件)

[root@master ~]# useradd   luoyawei
[root@master ~]# echo  $?
0
[root@master ~]# id  luoyawei
uid=1030(luoyawei) gid=1031(luoyawei)=1031(luoyawei)

[root@master ~]# useradd   liziying123
[root@master ~]# echo $?
0
[root@master ~]# id liziying123
uid=1031(liziying123) gid=1032(liziying123)=1032(liziying123)

新建用户的时候,默认会新建一个同名的组
uid和gid都在前一个用户的基础加1

[root@master ~]# tail  -2 /etc/passwd
luoyawei:x:1030:1031::/home/luoyawei:/bin/bash
liziying123:x:1031:1032::/home/liziying123:/bin/bash
[root@master ~]# tail -2 /etc/shadow
luoyawei:!!:19133:0:99999:7:::
liziying123:!!:19133:0:99999:7:::

常用命令选项

useradd命令
格式:useradd [选项]… 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名 directory
-e:指定帐号失效时间
-g:指定用户的基本组名(或GID号) group id
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell shell

-c:用户注释描述信息 comment
-r: 新建系统用户,不会有新建家目录

-c

-c comment 注释

[root@lier 521]# useradd wq -c "student"
[root@lier 521]# cat /etc/passwd |grep wq
lwq:x:1002:1002::/home/lwq:/bin/bash
wq:x:7791:7791:student:/home/wq:/bin/bash

-d

-d:指定宿主目录,缺省为 /home/用户名 directory

默认情况下用户的家目录都在/home目录下,和用户名同名
家目录: home directory 用户登录进入linux系统的时候,会进入这个文件夹
~ 用户的家目录

[root@master ~]# su  -  qiaofeng
[qiaofeng@master ~]$ pwd
/home/qiaofeng
[qiaofeng@master ~]$ exit
登出
[root@master ~]# cd  ~qiaofeng
[root@master qiaofeng]# pwd
/home/qiaofeng

[root@master qiaofeng]# cd ~luoyawei
[root@master luoyawei]# pwd
/home/luoyawei
[luoyawei@master ~]$ cd ~qiaofeng
-bash: cd: /home/qiaofeng: 权限不够
[luoyawei@master ~]$ ll  -d /home/qiaofeng
drwx------ 2 qiaofeng qiaofeng 83 521 20:34 /home/qiaofeng
[luoyawei@master ~]$ exit
登出
[root@master luoyawei]# 

查看使用的是哪种解释器:echo $SHELL

[root@master luoyawei]# echo  $SHELL
/bin/bash

-M

使用-M新建用户时不会给用户家目录

[root@master luoyawei]# useradd   -M  xuzhu
[root@master luoyawei]# cd ~xuzhu
-bash: cd: /home/xuzhu: 没有那个文件或目录
[root@master luoyawei]# tail -1 /etc/passwd
xuzhu:x:5001:5001::/home/xuzhu:/bin/bash
[root@master luoyawei]# cd ~xuzhu
-bash: cd: /home/xuzhu: 没有那个文件或目录

-r

新建的是一个系统用户,没有家目录,也不可以登录

[root@master luoyawei]# useradd  -r   wuyazi 
[root@master luoyawei]# tail -1 /etc/passwd
wuyazi:x:994:991::/home/wuyazi:/bin/bash
[root@master luoyawei]# cd ~wuyazi
-bash: cd: /home/wuyazi: 没有那个文件或目录

-r 用户的uid在1000以内,不新建用户的家目录

-M 用户的uid在上一个用户的基础上加1 ,不新建用户的家目录

-g 基本组(主要组)
-G 附加组(次要组)

一个用户可以加入多个组(主要组,次要组)
一个组里可以有多个用户

练习

新建一个用户weixiaobao,基本组是gov,同时又在组tiandihui,shenlongjiao,注释为ludingji

[root@master luoyawei]# groupadd  tiandihui
[root@master luoyawei]# groupadd  shenlongjiao
[root@master luoyawei]# groupadd  gov

[root@master luoyawei]# useradd  -g gov  -G tiandihui,shenlongjiao  -c "ludingji" -s /bin/bash -d /home/weixiaobao weixiaobao 

[root@master luoyawei]# id weixiaobao
uid=5002(weixiaobao) gid=5004(gov)=5004(gov),5002(tiandihui),5003(shenlongjiao)

[root@master luoyawei]# su - weixiaobao
[weixiaobao@master ~]$ pwd
/home/weixiaobao

问题

新建一个用户linghuchong,注释为sanchuang master,shell是/bin/sh,uid是2000,指定组为wudang,用户家目录为/huashan/linghuchong

/etc/shells 存放Linux中支持的shell解释器

[root@master luoyawei]# cat  /etc/shells   查看linux里支持哪些shell
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@master luoyawei]# useradd -c "sanchuang master" -s "/bin/sh"  -u 2000 -g wudang  -d /huashan/linghuchong   linghuchong
useradd:“wudang”组不存在

给用户指定组时必须保证已经存在组,否则需要先新建

[root@master luoyawei]# groupadd  wudang
[root@master luoyawei]# useradd -c "sanchuang master" -s "/bin/sh"  -u 2000 -g wudang  -d /huashan/linghuchong   linghuchong
useradd:无法创建目录 /huashan/linghuchong

因为根目录下没有huashan这个文件夹,指定家目录时必须保证指定目录的上一级文件夹存在,即huashan文件夹必须存在,linghuchong可以创建用户时自动创建

[root@master luoyawei]# cd /huashan
-bash: cd: /huashan: 没有那个文件或目录
[root@master luoyawei]# mkdir  /huashan
[root@master luoyawei]# useradd -c "sanchuang master" -s "/bin/sh"  -u 2000 -g wudang  -d /huashan/linghuchong   linghuchong

查看用户信息

[root@lier lianxi]# id linghuchong
uid=2000(linghuchong) gid=1044(wudang)=1044(wudang)
[root@lier lianxi]# cat /etc/passwd |grep linghuchong
linghuchong:x:2000:1044:sanchuang master:/huashan/linghuchong:/bin/sh

userdel

删除用户

userdel -r 用户名 :删除用户名同时删除家目录

usermod

修改用户权限

用法:usermod [选项] 用户名

常用选项:

选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号

# 修改用户的家目录
# 将tom用户的家目录改为/home/tom
[root@redhat home]# usermod -d /home/tom tom

# 改变用户的uid
# 将tom用户的uid改为888
[root@redhat home]# usermod -u 888 tom
[root@redhat home]# id tom
uid=888(tom) gid=1004(tom)=1004(tom)
[root@redhat home]# 

groupadd

新建组

[root@master luoyawei]# groupadd  shaolin
[root@master luoyawei]# groupadd wudang

/etc/group 存放Linux中的组

[root@lier lianxi]# head -5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:

用户的id号分类:

超级用户 root  0
程序用户/系统用户   没有家目录,不能登录linux系统 
系统用户默认编号201~999
1~201 系统里预先建立的用户程序用户--》与操作系统管理相关或者启动某个程序相关的用户
1~999 都是程序用户/系统用户

普通用户: 1000~60000

查看用户编号的默认文件:/etc/login.defs

[root@master luoyawei]# cat /etc/login.defs          defaults默认

groupdel

删除组

[root@master luoyawei]# groupdel shaolin
[root@master luoyawei]# groupdel wudang

passwd

设置用户密码

交互式,一问一答

[root@master ~]# passwd  luoyawei
更改用户 luoyawei 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@master ~]# tail -2 /etc/shadow
luoyawei:$6$WUfZpURR$Y1/Q.pES7zsewx7p.I37XsPJs.GjjW9WLXxlb3CdPXnLke.CTykuaDDzRIA7.Js1DJp0gvbg9EsPdEldcvWW6.:19133:0:99999:7:::
liziying123:!!:19133:0:99999:7:::

非交互式 --》写脚本使用

[root@master ~]# echo 123456|passwd  chenlin  --stdin
更改用户 chenlin 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@master ~]# 

| 管道 pipe : 将前面一个命令的输出送给后面的命令做输入
实现进程和进程之间通信的方式

–stdin 标准输入 standard input --》从键盘输入 告诉passwd把管道传递过来的数据作为从键盘输入的数据使用

练习

写一个脚本:
新建用户,并且给用户设置密码 --》通过位置变量传递参数给脚本
bash create_user.sh liyili 123456li
$1 $2

[root@lier 524]# cat create_user.sh 
#!/bin/bash

# 新建用户,并且给用户设置密码,通过位置变量传递参数

# 新建用户
# 不管命令执行是否正确,都不输出提示信息
# 实现如果用户不存在就新建,并且设置密码
if useradd $1 &>/dev/null;then
	# 给用户设置密码
	echo $2|passwd $1 --stdin &>/dev/null
	echo "用户创建成功,密码设置成功!"
# 如果用户存在就不新建,也不设置密码
else
	echo "用户已存在,不设置密码!"
	exit 9	#退出执行脚本的bash 给的返回值是9
fi
[root@lier 524]# bash create_user.sh liyili 123
用户创建成功,密码设置成功!

[root@lier 524]# id liyili
uid=7796(liyili) gid=7796(liyili)=7796(liyili)

[root@lier 524]# bash create_user.sh liyili 123
用户已存在,不设置密码!

exit 9 #退出执行脚本的bash 给的返回值是9

因为执行命令bash create_user.sh liyili 123时,系统会再开一个子进程用来执行脚本里面的内容,所以exit 9 就是退出执行脚本的bash,并且返回值是9

[root@lier 524]# bash create_user.sh liyili 123
用户已存在,不设置密码!
[root@lier 524]# echo $?
9

passwd命令

格式:passwd [选项]… 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号 lock -->禁用用户
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
–stdin:接收别的命令stdout做为stdin标准输入设置密码
root用户可以修改所有用户密码,不要求复杂性
普通用户只能改自己的密码,要求复杂性

-l

锁定用户账号,禁止用户登录

使用-l命令时系统默认在密码字段加 !! ,使得用户输入密码时系统不能正确的识别从而限制用户登录

[root@master 524]# tail -2 /etc/shadow
liuchang1234:$6$0/vjaUVw$QfrCAFwPztuHTOgBj0O/YCiDoWukk9A2eftrFC4m9XhIbnt6b3Qc.peKG8SApG.d29xwSwkU5WUfV.ZfMtxbI1:19136:0:99999:7:::
luo1:$6$GWIQhD8g$w9dF9oy9Wc7eQr.3a5BYbv6yl7qxMolRlouanlpbez67FhugjyAttwIii7nhI1ZWav7cJ2E73n87HZLYI5NyV1:19136:0:99999:7:::

[root@master 524]# passwd -l luo1
锁定用户 luo1 的密码 。
passwd: 操作成功

[root@master 524]# tail -2 /etc/shadow
liuchang1234:$6$0/vjaUVw$QfrCAFwPztuHTOgBj0O/YCiDoWukk9A2eftrFC4m9XhIbnt6b3Qc.peKG8SApG.d29xwSwkU5WUfV.ZfMtxbI1:19136:0:99999:7:::
luo1:!!$6$GWIQhD8g$w9dF9oy9Wc7eQr.3a5BYbv6yl7qxMolRlouanlpbez67FhugjyAttwIii7nhI1ZWav7cJ2E73n87HZLYI5NyV1:19136:0:99999:7:::
[root@master 524]# 

使用-l锁定用户后,超级用户root还是可以登录

因为root用户登到普通用户时不用输入密码;而普通用户登到另一个用户需要输入密码,使用等到锁定用户时不能成功

[root@lier 524]# passwd -l liyili
锁定用户 liyili 的密码 。
passwd: 操作成功
[root@lier 524]# su - liyili
上一次登录:五 56 16:31:33 CST 2022pts/0 上
[liyili@lier ~]$ 

[root@lier 524]# su - lwq
上一次登录:五 56 16:31:26 CST 2022pts/0 上
[lwq@lier ~]$ su - liyili
密码:
su: 鉴定故障

通过更改/etc/shadow文件中的密码字段同样可以实现禁止用户登录

linux系统中一切皆文件

[root@lier 524]# tail -1 /etc/shadow
liyili:$6$pl//LkWi$07pSqTVl7BlsqYVh72c3ItmCPBoi4Ds/0H/BwEjAzHP3//.xAG9EqtTMj01sBlWjCTRiRp8u0fua8lXTYvjP2/:19118:0:99999:7:::
[root@lier 524]# su - lwq
上一次登录:五 56 16:30:09 CST 2022pts/0 上
[lwq@lier ~]$ su - liyili
密码:
上一次登录:五 56 16:29:10 CST 2022pts/0 上
[liyili@lier ~]$ 


[root@lier 524]# su - lwq
上一次登录:五 56 12:58:25 CST 2022pts/4 上
[lwq@lier ~]$ su - liyili
密码:
su: 鉴定故障
[lwq@lier ~]$ 

-u

unlock,取消锁定用户

[root@lier 524]# tail -1 /etc/shadow
liyili:!!$6$WCskCO9S$Tpo7CLELqe62.9MmSo8fYbfG7/.oeeVAZjl5xL7.9EIhpP87dEkgKyAzNLX5100uwXwCOa/BKXTcQ2CRdpLKF1:19118:0:99999:7:::

[root@lier 524]# passwd -u liyili
解锁用户 liyili 的密码。
passwd: 操作成功

也可以通过修改/etc/shadow ,手动删除密码字段前的 !! 给用户解除锁定

ls

ll是查看指定目录下的内容(所有文件、文件夹的)

[root@lier lianxi]# ll 410
总用量 12
-rw-r--r--. 1 root root  784 320 15:50 passwd.xz
-rw-r--r--. 1 root root  872 320 15:50 passwd.zip
-rw-------. 1 root root 1963 321 00:10 sshd_config.gz

ll -d 是查看指定文件、文件夹的信息

[root@lier lianxi]# ll -d 410
drwxr-xr-x. 2 root root 60 321 00:10 410

使用useradd时是先建立组还是先建立用户?

先建组,因为新建用户时如果没有需要的组会报错

[root@master sanchuang]# tail   -f    /var/log/secure
May 24 19:27:53 master useradd[21940]: new group: name=liqiang, GID=5008
May 24 19:27:53 master useradd[21940]: new user: name=liqiang, UID=5003, GID=5008, home=/home/liqiang, shell=/bin/bash

新建用户时如果指定的家目录不存在,执行命令时报错,通用会创建用户,但是用户没有家目录

[root@master ~]# useradd  -d  /hunan/gaolaozhuang   bajie
useradd:无法创建目录 /hunan/gaolaozhuang	# 没有/hunan这个文件夹
[root@master ~]# id bajie	# 能查询到bajie的用户信息
uid=7789(bajie) gid=7789(bajie)=7789(bajie)
[root@master ~]# tail -2 /etc/passwd	# passwd文件中显示有家目录,但是实际上没有
chenlin:x:7788:5007:sanchuang student:/home/yueyang:/sbin/nologin
bajie:x:7789:7789::/hunan/gaolaozhuang:/bin/bash
[root@master ~]# su -  bajie
su: 警告:无法更改到 /hunan/gaolaozhuang 目录: 没有那个文件或目录

新建一个/hunna文件夹后,就可以登录bajie用户了,但是登录后的shell解释器不正常

[root@master ~]# mkdir  /hunan/gaolaozhuang -p
[root@master ~]# su - bajie
上一次登录:二 524 19:33:54 CST 2022pts/0 上
-bash-4.2$ exit
登出

指定shell解释器为/sbin/nologin时,用户不能登录

[root@lier ~]# cat /etc/passwd|grep chenlin
chenlin:x:7788:2007:sanchuang student:/home/yueyang:/sbin/nologin
[root@lier ~]# su - chenlin
上一次登录:五 56 11:34:09 CST 2022pts/4 上
This account is currently not available.

用户类型:
1.超级用户 root 0 --》皇上
2.程序用户 用来启动程序使用的,例如mysql这个用户 ssh,ftp,mail,halt --》公公,宫女 --》不能登录系统
给他做个手术 -s /sbin/nologin

3.系统用户 linux系统里完成的功能的用户,例如:启动系统的程序 将军,大臣 --》不能登录系统,没有新建家目录的
1~999
4.普通用户 老百姓: 登录系统,启动程序

因为程序用户是用来启动程序使用的,不能登录,所以程序用户使用的shell解释器是/sbin/nologin

不正常的shell,会导致用户不能登录系统

不能登录系统的解释器:

/sbin/nologin 不能登录系统的 --》推荐
/bin/false
/bin/sync
/sbin/shutdown
/sbin/halt

[root@master ~]# useradd    -s /sbin/nologin   weizx
[root@master ~]# su - weizx
This account is currently not available.
[root@master ~]# 

因为linux中一切皆文件,执行命令相当于修改文件

所以将weizx的shell解释器改为/bin/bash解释器就可以正常登录了

[root@master ~]# vim /etc/passwd
weizx:x:7790:7790::/home/weizx:/bin/bash

[root@master ~]# su - weizx
上一次登录:二 524 19:45:37 CST 2022pts/0 上
[weizx@master ~]$ 

用户密码为空或者没有设置密码都不能远程登录,因为ssh服务的限制
/etc/ssh/sshd_config里有个配置进行了限制
#PermitEmptyPasswords no

chown

change owner 设置文件所有者和文件关联组的命令

利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符

chown 需要超级用户 root 的权限才能执行此命令。

实例:

# 把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid

# 将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup 
chown runoob:runoobgroup file1.txt

# 将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup
chown -R runoob:runoobgroup *

# 把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者
chown :512 /home/runoob

/etc/skel

.bash_profile .bashrc是bash程序启动的时候,会执行里面的命令,加载一些别名,函数,变量等工作–》初始化bash的环境变量

模板文件–》作用是初始化bash环境变量

/etc/profile:配置全局环境变量,影响所有用户
~/.bash_profile :配置个人环境,影响一个用户
/etc/bashrc :配置全局的别名或者shell选项,影响所有用户
~/.bashrc :配置个人别名或者shell选项,影响一个用户

在系统创建新的用户的时候,系统会有一些用户无感知的行为,比如预先为这个新用户创建一些默认的“配置文件”,而默认配置的就是/etc/skel目录下的这几个隐藏文件,实际上就是将该目录下的隐藏文件复制到新用户的家目录下

/etc/skel下的初始化文件

每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。
一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取/.bash_profile文件,这样/.bashrc也就得到执行了,你的个性化设置也就生效了。

Linux 系统中很多 shell,包括bash,sh,zsh,dash 和 korn 等,不管哪种 shell 都会有一个 .bashrc 的隐藏文件,它就相当于 shell 的配置文件。

一般会有多个 .bashrc 文件,使用 find 命令可以查看。

.bash_profile和bai.bashrc的什么区别

/etc/profile:此文件为系统zhi的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者

[外链图片转存中…(img-A0Vsee9q-1654504287485)]

执行脚本的方式

  1. bash echo.sh
  2. ./echo.sh
    产生子bash去执行脚本echo.sh
  3. source echo.sh
  4. . echo.sh
    在当前bash里执行echo.sh

前两种方式都是产生一个子bash去执行脚本,后两种方式是在当前bash里面执行脚本

[root@lier lianxi]# cat echo.sh
#!/bin/bash

while true
do
	echo "hello,world!"
	sleep 1
	echo $$
done

# 查看当前进程的pid号
[root@lier lianxi]# echo $$
31229

[root@lier lianxi]# bash echo.sh 
hello,world!
40708

[root@lier lianxi]# ./echo.sh 
hello,world!
40755

[root@lier lianxi]# source echo.sh 
hello,world!
31229

[root@lier lianxi]# . echo.sh 
hello,world!
31229

diff

diff是用来一行一行的比较2个文本文件之间的差异的 different

/etc/passwd- shadow- group- 作用是起到备份的作用,当原文件不删除后,可以用来还原
它们里面的内容总是和原文件差一次操作

[root@master mail]# ls /etc/passwd*
/etc/passwd  /etc/passwd-
[root@master mail]# ls /etc/shadow*
/etc/shadow  /etc/shadow-
[root@master mail]# ls /etc/group*
/etc/group  /etc/group-

新建一个用户,再比较/etc/passwd和/etc/passwd-文件之间的差异

[root@master mail]# useradd siyuxiang
[root@master mail]# diff /etc/passwd /etc/passwd-
79d78
< siyuxiang:x:7799:7800::/home/siyuxiang:/bin/bash
[root@master mail]# cat /etc/passwd-|grep siyu
[root@master mail]# cat /etc/passwd|grep siyu
siyuxiang:x:7799:7800::/home/siyuxiang:/bin/bash
[root@master mail]# 

如何知道某个文本文件发生了变化(被改动了)?

1.diff
2.md5sum
[root@master mail]# md5sum feng.txt 
09c7820f9aa8c68cc27e48947e7139c3  feng.txt
[root@master mail]# vim feng.txt 
[root@master mail]# md5sum feng.txt 
f40d277489cf015a2ce91c1ab0c9214a  feng.txt
[root@master mail]# 
# diff比较两个文件的差异
[root@master mail]# useradd yangyongjie
[root@master mail]# diff /etc/passwd /etc/passwd-
80d79
< yangyongjie:x:7800:7801::/home/yangyongjie:/bin/bash
[root@master mail]# diff /etc/shadow /etc/shadow-
80d79
< yangyongjie:!!:19140:0:99999:7:::
[root@master mail]# 

# 恢复原来的文件
[root@master mail]# cp /etc/shadow- /etc/shadow

【拓展】

如果/etc/shadow 、/etc/passwd、/etc/group都被删了,怎么恢复?

启动营救模式,从备份文件中复制过来

营救模式:
cp /etc/shadow- /etc/shadow

放入系统光盘(镜像文件),默认镜像文件里有一个系统,利用这个系统进入虚拟机,然后读取原来系统磁盘里的数据,复制过去就可以了

步骤:
1.关闭虚拟机
2.放入镜像文件到光驱
3.设置开机启动顺序,将光盘启动调到第一位
设置BIOS里的启动顺序
BIOS是电脑主板里的系统,用来对硬件进行参数设置
basic input output system
boot–》调整cd-rom drive 到第1位
F10
4.选择troubleshooting : trouble 麻烦 shoot 射击 --》故障排除
rescue
1
chroot /mnt/sysimages 切换到原来系统的分区配置,进行挂载

mount

[外链图片转存中…(img-eGdc1LM5-1654504287486)]

如何产生5个随机字符?

1.使用随机数再加密md5sum产生不同的字符串,截取前5个字符

[root@node1 ~]# echo  $RANDOM|md5sum |cut -c 1-5
61d2e

2.使用mkpasswd命令

[root@node1 yum.repos.d]# mkpasswd -l 10 -c 2 -C 3 -d 2 -s 1
PaZ7p\fC5f

练习

写一个脚本创建20个用户,并给每个用户设置一个随机密码

#!/bin/bash


for i in {01..20}
do
        useradd user$i &>/dev/null
        x=$(mkpasswd -l 5 -c 0 -C 0 -s 0)
        echo user$x|passwd user$i --stdin &>/dev/null
        echo "user$i user$x" >>user_pwd.txt
done

实验

新建一个用户xuyunhe 家目录/hunan/yueyang uid 3366 gid yueyang 3366 shell /bin/bash comment “nongda”

# 1.修改/etc/group
yueyang:x:3366
# 2.修改/etc/passwd
xuyunhe:x:3366:3366:nongda:/hunan/yueyang:/bin/bash
# 3.修改/etc/shadow
xuyunhe:!!:19069::::::
# 4.新建家目录,复制初始化bash的脚本
[root@node1 ~]# mkdir -p /hunan/yueyang
[root@node1 ~]# cp /etc/skel/.bash*  /hunan/yueyang/

[root@node1 mail]# chown xuyunhe:yueyang /hunan/yueyang/
[root@node1 mail]# chmod  700 /hunan/yueyang/
[root@node1 mail]# ll -d /hunan/yueyang/
drwx------ 2 xuyunhe yueyang 62 528 16:00 /hunan/yueyang/
[root@node1 mail]# 

[root@node1 ~]# 
# 5.新建一个邮箱
[root@node1 ~]# cd /var/spool/mail/
[root@node1 mail]# ls
dengchao  duanyouxu  hejin  lilin  liuqingtian  liwenqian  wang
[root@node1 mail]# file duanyouxu
duanyouxu: empty
[root@node1 mail]# touch xuyunhe
[root@node1 mail]# ll
总用量 0
-rw-rw----. 1 dengchao    mail 0 36 11:36 dengchao
-rw-rw----. 1 duanyouxu   mail 0 36 11:38 duanyouxu
-rw-rw----  1 hejin       mail 0 37 10:44 hejin
-rw-rw----. 1 lilin       mail 0 33 15:07 lilin
-rw-rw----. 1 liuqingtian mail 0 36 12:01 liuqingtian
-rw-rw----. 1 liwenqian   mail 0 36 14:36 liwenqian
-rw-rw----  1 wang        mail 0 38 19:12 wang
-rw-r--r--  1 root        root 0 528 16:01 xuyunhe
[root@node1 mail]# chown  xuyunhe:mail xuyunhe 
[root@node1 mail]# ll xuyunhe 
-rw-r--r-- 1 xuyunhe mail 0 528 16:01 xuyunhe
[root@node1 mail]# chmod 660 xuyunhe 
[root@node1 mail]# ll xuyunhe 
-rw-rw---- 1 xuyunhe mail 0 528 16:01 xuyunhe
[root@node1 mail]# r 4 w 2 x 1 - 0

# 6.登陆验证

[root@node1 mail]# su - xuyunhe
上一次登录:六 528 16:04:30 CST 2022pts/0 上
[xuyunhe@node1 ~]$ pwd
/hunan/yueyang
[xuyunhe@node1 ~]$ mkdir xiaoxu
[xuyunhe@node1 ~]$ ll
总用量 0
drwxr-xr-x 2 xuyunhe yueyang 6 528 16:08 xiaoxu
[xuyunhe@node1 ~]$ 

手工模拟useradd命令创建一个新用户

[外链图片转存中…(img-bB6rFCMm-1654504287487)]

例如手工新建一个用户,用户名为zhouyu,家目录是/dongwu/sangzhi,uid是8896,组名是dongwu,gid为8895,shell为/bin/bash,注释为“wu guo dudu” ,密码为空

1.添加用户的组

# 新建组
[root@lier sangzhi]# vim /etc/group
[root@lier sangzhi]# tail -1 /etc/group
dongwu:x:8895:

2.添加用户信息

[root@lier ~]# vim /etc/passwd
[root@lier ~]# tail -1 /etc/passwd
zhouyu:x:8896:8895:wu guo dudu:/dongwu/sangzhi:/bin/bash

3.添加用户密码信息

[root@lier ~]# mkdir -p /dongwu/sangzhi
# 给用户配置密码
[root@lier ~]# vim /etc/shadow
[root@lier ~]# tail -1 /etc/shadow
zhouyu:!!:19140:0:99999:7::17671:

4.拷贝初始化文件到用户家目录

# 拷贝初始化文件
[root@lier ~]# cp /etc/skel/.bash* /dongwu/sangzhi/
[root@lier ~]# cd /dongwu/sangzhi
[root@lier sangzhi]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc

5.为用户添加用户名同名邮箱

[root@lier ~]# cd /var/spool/mail
[root@lier mail]# touch zhouyu

6.修改家目录和邮箱的所属主

# 修改邮箱的属主
[root@lier mail]# ll zhouyu
-rw-r--r--. 1 root root 0 64 03:54 zhouyu
[root@lier mail]# chown zhouyu:mail zhouyu
[root@lier mail]# ll zhouyu
-rw-r--r--. 1 zhouyu mail 0 64 03:54 zhouyu
# 给用户授权
[root@lier mail]# ll -d zhouyu
-rw-r--r--. 1 zhouyu mail 0 64 03:54 zhouyu
[root@lier mail]# chmod 660 zhouyu
[root@lier mail]# ll -d zhouyu
-rw-rw----. 1 zhouyu mail 0 64 03:54 zhouyu

# 修改家目录的属主
[root@lier dongwu]# id zhouyu
uid=8896(zhouyu) gid=8895(dongwu)=8895(dongwu)
[root@lier dongwu]# chown zhouyu:dongwu sangzhi
[root@lier dongwu]# ll -d sangzhi
drwxr-xr-x. 2 zhouyu dongwu 6 64 04:26 sangzhi

本文标签: 用户 Linux