Linux用户和组


[知识点拓展]

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
### 回答1: Linux用户管理是指在Linux系统中对用户进行管理和配置的过程。通过用户管理,可以实现对系统资源的访问控制和权限管理,保障系统的安全性和稳定性。 在Linux系统中,每个用户都有一个唯一的用户名和用户ID(UID),用于标识该用户在系统中的身份。同时,每个用户还可以属于一个或多个用户用户也有唯一的名和ID(GID),用于管理用户的权限和资源访问。 Linux用户管理主要包括以下内容: 1. 用户管理:包括创建、修改、删除用户账号,设置用户密码和权限等。 2. 管理:包括创建、修改、删除用户,将用户添加到中,设置权限等。 3. 权限管理:包括设置文件和目录的访问权限,控制用户对系统资源的访问权限等。 4. 账号锁定和解锁:可以通过锁定用户账号来保护系统的安全性,防止非法访问和攻击。 总之,Linux用户管理是Linux系统中非常重要的一部分,对于系统的安全性和稳定性起着至关重要的作用。 ### 回答2: Linux是一个开源的操作系统,它允许用户自由配置和管理系统各个方面。其中,用户Linux系统中的两个非常重要的概念,对于安全性和权限控制有着至关重要的作用。 在Linux系统中,每个用户都有一个唯一的用户名和UID(User ID),同时还可以属于一个或多个用户用户是一拥有某些共同权限的用户的集合。在Linux中,可以通过一些命令来管理用户用户,如useradd、userdel、groupadd、groupdel等命令。 用户管理是指Linux系统管理员通过控制用户的权限和访问权限来保护系统安全。在Linux系统中创建一个新用户可以使用useradd命令,通过指定用户名、密码、UID等参数完成用户创建。除了创建用户还可以修改用户信息、查看用户信息等操作。可以使用usermod命令来修改用户信息,比如修改用户名、密码等。可以使用userdel命令来删除用户管理是指Linux系统管理员通过创建用户以简化用户管理和控制访问权限。在Linux系统中可以通过groupadd命令创建一个新用户,然后在创建新用户时,可以指定用户属于哪个用户。可以通过gpasswd命令来修改用户的密码、添加或删除用户成员等。用户的权限也可以通过chmod命令来设置。 在实际使用中,Linux用户管理可以帮助管理员完成对系统的安全性和文件权限的控制,从而保护系统的完整性和保密性。同时对用户权限进行合理划分,能够有效防范内部攻击和恶意操作。总之,合理的用户管理是保证Linux系统安全性和完整性的关键所在。 ### 回答3: Linux操作系统作为开源操作系统的代表,它采用了强大的用户管理机制来维护系统的安全性和灵活性。 在Linux中,每个用户都具有唯一的标识符和权限,这样可以控制每个用户可以访问什么和拥有哪些权限。以下是关于Linux用户管理的更详细说明。 1. 用户管理 Linux操作系统通过创建用户来分配系统资源和限制用户访问的权限。在Linux中,用户登录到系统的实体,每个用户都拥有独立的家目录和特定的登录名。 Linux系统中包含两种类型的用户: - 一般用户:这些用户拥有系统的普通权限。 - 系统用户:这些帐户是Linux中用于运行系统程序和服务的帐户。 在Linux中创建新用户的命令是“useradd”,创建新用户的同时可以指定该用户的家目录、密码、等信息。在创建用户后,可以使用命令“passwd”来设置用户的密码。可以使用命令“usermod”来修改用户信息,例如可以修改用户的密码、家目录、等信息。要删除用户,可以使用“userdel”命令。 2. 管理 Linux中的一个概念,每个用户都必须属于一个或多个。操作系统将所有信息存储在“/etc/group”文件中。Linux系统中有两种类型的: - 一般:这些用于用户并控制访问权限。 - 系统:这些用于管理系统服务和进程。 在Linux中创建新的命令是“groupadd”,创建新的同时可以指定该的GID和其他信息。在创建后,可以使用命令“groupmod”来修改的信息,例如可以修改的名称或GID。要删除,可以使用“groupdel”命令。通过将用户加入中,可以控制用户对文件和目录的访问权限。这种访问权限在Linux文件系统中称为“文件访问控制列表”(ACL)。 总之,Linux用户管理机制是系统的关键部分,能够提供安全和灵活性。正确管理用户可以帮助管理员保护系统安全,并允许用户获得所需的访问权限。掌握Linux用户管理的技能,将有助于管理员更好地管理和维护Linux系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值