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 5月 21 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
上一次登录:五 5月 6 16:31:33 CST 2022pts/0 上
[liyili@lier ~]$
[root@lier 524]# su - lwq
上一次登录:五 5月 6 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
上一次登录:五 5月 6 16:30:09 CST 2022pts/0 上
[lwq@lier ~]$ su - liyili
密码:
上一次登录:五 5月 6 16:29:10 CST 2022pts/0 上
[liyili@lier ~]$
[root@lier 524]# su - lwq
上一次登录:五 5月 6 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 3月 20 15:50 passwd.xz
-rw-r--r--. 1 root root 872 3月 20 15:50 passwd.zip
-rw-------. 1 root root 1963 3月 21 00:10 sshd_config.gz
ll -d 是查看指定文件、文件夹的信息
[root@lier lianxi]# ll -d 410
drwxr-xr-x. 2 root root 60 3月 21 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
上一次登录:二 5月 24 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
上一次登录:五 5月 6 11:34:09 CST 2022pts/4 上
This account is currently not available.
用户类型:
1.超级用户 root 0 --》皇上
2.程序用户 用来启动程序使用的,例如mysql这个用户 ssh,ftp,mail,halt --》公公,宫女 --》不能登录系统
给他做个手术 -s /sbin/nologin3.系统用户 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
上一次登录:二 5月 24 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)]
执行脚本的方式
- bash echo.sh
- ./echo.sh
产生子bash去执行脚本echo.sh - source echo.sh
- . 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 5月 28 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 3月 6 11:36 dengchao
-rw-rw----. 1 duanyouxu mail 0 3月 6 11:38 duanyouxu
-rw-rw---- 1 hejin mail 0 3月 7 10:44 hejin
-rw-rw----. 1 lilin mail 0 3月 3 15:07 lilin
-rw-rw----. 1 liuqingtian mail 0 3月 6 12:01 liuqingtian
-rw-rw----. 1 liwenqian mail 0 3月 6 14:36 liwenqian
-rw-rw---- 1 wang mail 0 3月 8 19:12 wang
-rw-r--r-- 1 root root 0 5月 28 16:01 xuyunhe
[root@node1 mail]# chown xuyunhe:mail xuyunhe
[root@node1 mail]# ll xuyunhe
-rw-r--r-- 1 xuyunhe mail 0 5月 28 16:01 xuyunhe
[root@node1 mail]# chmod 660 xuyunhe
[root@node1 mail]# ll xuyunhe
-rw-rw---- 1 xuyunhe mail 0 5月 28 16:01 xuyunhe
[root@node1 mail]# r 4 w 2 x 1 - 0
# 6.登陆验证
[root@node1 mail]# su - xuyunhe
上一次登录:六 5月 28 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 5月 28 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 6月 4 03:54 zhouyu
[root@lier mail]# chown zhouyu:mail zhouyu
[root@lier mail]# ll zhouyu
-rw-r--r--. 1 zhouyu mail 0 6月 4 03:54 zhouyu
# 给用户授权
[root@lier mail]# ll -d zhouyu
-rw-r--r--. 1 zhouyu mail 0 6月 4 03:54 zhouyu
[root@lier mail]# chmod 660 zhouyu
[root@lier mail]# ll -d zhouyu
-rw-rw----. 1 zhouyu mail 0 6月 4 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 6月 4 04:26 sangzhi
版权声明:本文标题:Linux用户和组 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726361362h944707.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论