【Linux】(18)用户和组的管理:新建一个用户背后发生了什么+如何不利用useradd手动新建用户

目录

一、用户和组

        1.1 用户和组的作用

        1.2 进程

        1.2.1 进程有三种最基本的状态

        1.2.2 查看系统的进程信息

        1.3 用户账户

        1.3.1 uid范围

        1.3.2 程序用户(ftp)

        1.3.3 ftp登录实操

        1.3.4 Windows和Linux之间传输文件

        1.4 useradd新建用户

        1.5 userdel删除用户

        1.5.1 【小问题】是否会删除这个用户在其他目录里新建的文件或文件夹

        1.6 usermod修改用户信息

        1.7 passwd

        1.8 和组有关的命令

        1.8.1 groupadd

        1.8.2 groupmod命令

        1.8.3 newgrp改变有效组

        1.9 Linux加密

        1.10 SELinux

        1.11 练习(last、lastlog)

二、新建一个用户背后的重要文件

        2.1 ⭐/etc/passwd

        2.1.1 用户的shell类型

        2.1.2 awk补充

        2.2 /etc/shadow

         2.3 /etc/group

         2.3.1 Linux组账号

         2.3.2 gpasswd

        2.3.3 查看组内有哪些成员

        2.4 /etc/login.defs

        2.5 ⭐/etc/skel

        2.5.1 .bash_profile

        2.5.2 .bashrc

        2.5.3 /etc/bashrc

        2.5.4 .bash_history

        2.5.5 私有变量

         2.5.6 执行脚本的方法

         2.5.7 ⭐(记)两种bash初始化的文件

        2.5.8 开机启动流程

 三、useradd命令在后台所作的工作

         3.1 手动新建用户

        3.1.1 步骤:


一、用户和组

用户user,每个用户有唯一的uid

组group,每个组有唯一的gid

一个组里可以有多个用户

用户也可以加入多个组,用户加入组之后,会拥有这个组的权限

[root@localhost ~]# id root
uid=0(root) gid=0(root) 组=0(root)

uid 是用户的id号==》相当于身份证号

gid 是组的id号==》一个组可以理解为一个社团

一个用户至少一个组,默认情况下用户组名和用户名相同,新建一个用户时,会同时新建一个同名的组。

uid和gid会在前一个用户的基础上+1

        1.1 用户和组的作用

用户和组是为Linux系统里的资源管控服务的

        资源管控:文件的访问、读取、执行等操作

用户的身份会嵌入到进程里,内核对进程进行限制

用户和组绑定进程,进程操作文件,操作文件时会通过pcb检查权限

        1.2 进程

进程:正在运行的程序

程序:存在在磁盘里的代码

它是计算机进行资源分配的基本单位

创建进程的两个步骤:1.向内核申请pcb空间;2.内核去查看内存里是否有空间存放程序代码。

时间片:cpu将1秒划分成很多固定的时间片段。

        进程 = PCB + 程序代码 + 程序产生的数据

        PCB 是进程控制块(process control block):数据结构,包括pid号,ppid号,euid,egid,程序代码在内存里的位置、优先级、程序的状态等信息==》内核管控进程唯一凭证

                euid:有效的uid         egid:有效的gid

        先创建pcb,再在内存里分配空间

进程的组成核心:进程控制块(PCB)==》一个数据结构

1、pid 进程唯一标识符

2、有效用户信息 -euid,egid(通常情况下就是uid,gid)

3、程序的状态

4、程序优先级

5、程序的上下文

RUID, 用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录后一个UNIX系统后就唯一确定了他的RUID.

EUID, 用于系统决定用户对系统资源的访问权限,通常情况下等于RUID。

SUID,用于对外权限的开放。跟RUID及EUID是用一个用户绑定不同,它是跟文件而不是跟用户绑定。

########看进程属于哪个用户#############
=====第一种
[root@localhost mail]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
=====第二种
[root@localhost mail]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
=====第三种
[sc@localhost ~]$ python3
Python 3.6.8 (default, Nov 16 2020, 16:55:22) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.geteuid()
1013
>>> os.getuid()
1013

        1.2.1 进程有三种最基本的状态

  1. 就绪(队列):创建进程的过程==》排队
  2. 运行:一个cpu核心,同时只能一个进程进去run
  3. 阻塞:有I/O请求时(阻塞队列在内存里)

I/O请求:读写文件、网络等(磁盘、网络里)

        1.2.2 查看系统的进程信息

  1. top 动态查看(按q退出)
  2. pa aux 静态查看

        1.3 用户账户

  1. 超级用户(root):安装好系统就有,不需要新建,默认存在
  2. 程序用户(System accounts):用来启动程序或者登录程序的用户==》很多默认就已经存在,或者安装程序时会自动新建
  3. 普通用户:useradd新建的用户(也可以用来启动程序)

        1.3.1 uid范围

  1. 超级用户的uid为0 ==》在Linux里本质上只认uid
  2. 程序用户1-999
  3. 普通用户1000-60000

用户默认属性设置文件/etc/login.defs

# 把一个普通用户变为root用户
# 实现的方法:修改用户的uid为0就可以了
[root@localhost ~]# useradd yitianming
[root@localhost ~]# id yitianming
uid=2005(yitianming) gid=2005(yitianming) 组=2005(yitianming)
[root@localhost ~]# vim /etc/passwd
yitianming:x:0:2005::/home/yitianming:/bin/bash

[root@localhost ~]# su - yitianming
上一次登录:五 4月  1 21:03:42 CST 2022从 192.168.255.1pts/0 上
[root@localhost ~]#               ==》uid=0,自动识别为root用户

        1.3.2 程序用户(ftp)

nginx和mysql是用来启动nginx和mysql服务的

ftp是用来登录ftp服务的

nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nginx

[root@localhost ~]# service nginx restart  ==》重启nginx
Redirecting to /bin/systemctl restart nginx.service
[root@localhost ~]# ps aux | grep nginx
root       4297  0.0  0.0  39308   932 ?        Ss   23:22   0:00 nginx: master process /usr/sbin/nginx
nginx      4298  0.0  0.0  39696  1820 ?        S    23:22   0:00 nginx: worker process
nginx      4299  0.0  0.0  39696  1556 ?        S    23:22   0:00 nginx: worker process
root       4303  0.0  0.0 112824   980 pts/0    S+   23:22   0:00 grep --color=auto nginx

ftp服务

ftp是匿名用户,不需要密码就可以登录

本地用户(useradd新建的用户):需要密码

【注】centos8里vsftpd服务默认不允许匿名用户登陆

1. 使用匿名用户(ftp)登陆的话需要,修改/etc/vsftpd/vsftpd.conf里的配置 ==》anonymous_enable=YES ==》通过/anonymous查找

2. 修改完配置文件重启vsftpd服务

3. 登陆上去之后,默认读取系统中ftp这个用户的家目录文件==》ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

        1.3.3 ftp登录实操

[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# ps aux | grep ftp
root       4355  0.0  0.0  53292   576 ?        Ss   23:24   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       4359  0.0  0.0 112824   976 pts/0    S+   23:24   0:00 grep --color=auto ftp
[root@localhost ~]# cat /etc/passwd|grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 ==》不能ssh远程登陆系统
# ssh方式登陆的时候会去/etc/passwd文件里检查用户的shell,如果是nologin就不允许登录
# ftp方式登录时,也会去/etc/passwd文件里检查用户是否存在
[root@localhost ~]# yum install ftp lftp -y  ==》安装客户端命令ftp和lftp
[root@localhost ~]# ftp 192.168.255.132 ==》登录
Connected to 192.168.255.132 (192.168.255.132).
220 (vsFTPd 3.0.2)
Name (192.168.255.132:root): ftp
331 Please specify the password.
Password:  ==》直接回车
230 Login successful.  ==》表示登录成功
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,255,132,123,99).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Jun 09  2021 pub   ==》看到pub文件夹
226 Directory send OK.
ftp> quit  ==》退出

上述代码ls看到的pub和下面代码是一样的

[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# ls
pub
[root@localhost vsftpd]# ftp 192.168.255.132  ==》此ftp表示ftp客户端,登录ftp服务
Name (192.168.255.132:root): ftp
  ==》这个ftp表示ftp用户,指使用匿名用户登录
230 Login successful.   ==》出现这个,表示登陆成功
ftp> ls
421 Timeout.
Passive mode refused.
ftp> ls
Not connected.  ==》长时间没有操作掉线了
ftp> quit  ==》退出ftp服务
ftp> put vsftpd.conf
local: vsftpd.conf remote: vsftpd.conf
227 Entering Passive Mode (192,168,255,132,240,2).
550 Permission denied.    ==》权限不够

        ftp常用命令:

上传文件:put

下载文件:get

查看: ls

切换路径:cd

        1.3.4 Windows和Linux之间传输文件

  1. ssh ==》xftp
  2. ftp ==》使用本地用户登录

        1.4 useradd新建用户

-g 主要组(主业)

-G 次要组(副业)

groupadd 新建组

groupdel 删除组

[root@localhost ~]# groupadd mingjiao   ==》新建组
[root@localhost ~]# groupadd wudang
[root@localhost ~]# useradd -g mingjiao -G wudang zhangwuji
[root@localhost ~]# id zhangwuji
uid=2005(zhangwuji) gid=2006(mingjiao) 组=2006(mingjiao),2007(wudang)
[root@localhost ~]# cat /etc/passwd |grep zhangwuji
zhangwuji:x:2005:2006::/home/zhangwuji:/bin/bash

-d 指定家目录

-u 指定uid号

[root@localhost mail]# useradd -g mingjiao -G wudang -d/guangminding -u 90000 zhangwuji
[root@localhost mail]# id zhangwuji
uid=90000(zhangwuji) gid=2006(mingjiao) 组=2006(mingjiao),2007(wudang)

-c 用户描述信息

-s 指定用户登陆的bash

[root@localhost mail]# useradd -g mingjiao -G wudang -d/guangminding -u 90000 -s /sbin/nologin -c "mingjiao master" zhangwuji
[root@localhost mail]# cat /etc/passwd | grep zhangwuji
zhangwuji:x:90000:2006:mingjiao master:/guangminding:/sbin/nologin

        1.5 userdel删除用户

 -r 删除用户的时候,把用户的家目录和邮箱都删除(新建用户时会自动创建邮箱)

[root@localhost ~]# userdel -r zhangwuji
[root@localhost ~]# cd /var/spool/mail   ==》用户邮箱的所在位置

【不使用-r命令会产生问题】

 【解释】家目录文件的uid和gid还是上一个hutianying的,并没有更新为新建的这个hutianying的uid和gid(相当于遗留。由于该文件的uid和gid和hutianyi用户的uid和gid不同,所以无法删除,可以进入到相应的目录强制删除

        1.5.1 【小问题】是否会删除这个用户在其他目录里新建的文件或文件夹

答:不会删除

[root@localhost lianxi]# id lihua
uid=1234(lihua) gid=1234(lihua) 组=1234(lihua)
[root@localhost lianxi]# su - lihua
[lihua@localhost lianxi]$ cd /tmp
[lihua@localhost tmp]$ mkdir China
[lihua@localhost tmp]$ ll
总用量 0
drwxrwxr-x  2 lihua lihua  6 4月   2 18:14 China
[lihua@localhost tmp]$ exit
登出
[root@localhost lianxi]# userdel -r lihua
[root@localhost lianxi]# ll /tmp
总用量 0
drwxrwxr-x  2 1234 1234  6 4月   2 18:14 China
[root@localhost lianxi]# useradd -u 1234 liming
[root@localhost lianxi]# ll /tmp
总用量 0
drwxrwxr-x  2 liming liming  6 4月   2 18:14 China   ==》本质上记录的是uid号

        1.6 usermod修改用户信息

 -u 修改用户的uid号

[root@localhost ~]# cat /etc/passwd |grep shijunhao
shijunhao:x:1011:1011::/home/shijunhao:/bin/bash
[root@localhost ~]# usermod -u 7890 shijunhao
[root@localhost ~]# cat /etc/passwd |grep shijunhao
shijunhao:x:7890:1011::/home/shijunhao:/bin/bash
# 直接用vim修改/etc/passwd文件也一样

-L 禁用用户(lock)不能ssh登录Linux系统(但可以用su切换)

-S 锁定密码

[root@localhost ~]# echo 123 |passwd shijunhao --stdin
更改用户 shijunhao 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# cat /etc/shadow |grep shijunhao
shijunhao:$6$QUhjGcu3$FocmosHB3bFCVb2H4pmfnPZ8CbBuSdv3nNbf8OZ58R9bDDVqehIMCDTl2Eef0xo9VV9z6iQmZhHhXcDP4nn5A/:19084:0:99999:7:::
[root@localhost ~]# usermod -L shijunhao
[root@localhost ~]# passwd -S shijunhao
shijunhao LK 2022-04-02 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# cat /etc/shadow |grep shijunhao
shijunhao:!$6$QUhjGcu3$FocmosHB3bFCVb2H4pmfnPZ8CbBuSdv3nNbf8OZ58R9bDDVqehIMCDTl2Eef0xo9VV9z6iQmZhHhXcDP4nn5A/:19084:0:99999:7:::
[root@localhost ~]# usermod -U shijunhao  ==》解锁

【补充】/etc/shadow

        !! 表示用户没有设置没密码

        * 也是表示没有设置密码

        ! 在该文件里,密码前面出现一个 ! 表示用户被禁用 ==》所以也可以直接修改shadow文件

        1.7 passwd

密码复杂性:

    1. 密码长度
    2. 密码需要包含数字、字符串大小写、特殊符号其中的几种
    3. 不是回文(左右读相同)123321
[root@localhost ~]# useradd lihua
[root@localhost ~]# passwd lihua
更改用户 lihua 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:

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

-d 清除密码==》本质上是去shadow文件里删除密码字段的内容

空密码是不允许ssh远程登陆的,但是可以本地登录

[root@localhost ~]# cat /etc/shadow |grep lihua
lihua:$6$4iDG/qeM$DOCpN7ZTakny7ZX2ei92xEXPPOKyxkugnomPynCMfGEDMqZPB98CGX6yKITLZKb9cjzkTJF2iG3boxu9IomO1.:19084:0:99999:7:::
[root@localhost ~]# passwd -d lihua
清除用户的密码 lihua。
passwd: 操作成功
[root@localhost ~]# cat /etc/shadow |grep lihua
lihua::19084:0:99999:7:::

-l 锁定用户

[root@localhost ~]# passwd -l lihua
锁定用户 lihua 的密码 。
passwd: 操作成功
[root@localhost ~]# cat /etc/shadow |grep lihua
lihua:!!:19084:0:99999:7:::

【注:区别】usermod 禁用用户,在shadow文件里密码字段加一个!

                        passwd 禁用用户,在shadow文件里密码字段加两个!

-S 产看用户的账户状态

[root@localhost ~]# passwd -S lihua
lihua LK 2022-04-05 0 99999 7 -1 (密码已被锁定。)

        1.8 和组有关的命令

        1.8.1 groupadd

新建组

格式:groupadd [-g GID] 组帐号名

删除组

groupdel命令

格式:groupdel 组帐号名

[root@localhost ~]# groupadd -g 5000 sanle
[root@localhost ~]# cat /etc/group |grep sanle
sanle:x:5000:
[root@localhost ~]# groupdel sanle
[root@localhost ~]# cat /etc/group |grep sanle

        1.8.2 groupmod命令

用途:设置组名和组id

格式:groupmod [选项]... 组帐号名

常用命令选项

        -n:修改组名

        -g:修改组id

[root@localhost ~]# groupadd -g 5000 sanle
[root@localhost ~]# cat /etc/group |grep sanle
sanle:x:5000:
[root@localhost ~]# groupmod -n sanle1 sanle  ==》将sanle组名改为sanle1
[root@localhost ~]# cat /etc/group |grep sanle1
sanle1:x:5000:

        1.8.3 newgrp改变有效组

用户必须是要改变组的成员

有效组?

        新建文件或者文件夹的时候,使用的gid

        gid使用哪个组,哪个就是有效组

[root@localhost ~]# id sanle
uid=2012(sanle) gid=5570(sc) 组=5570(sc),5000(sanle1)
[root@localhost ~]# su - sanle
[sanle@localhost ~]$ touch a.txt
[sanle@localhost ~]$ newgrp sanle1
[sanle@localhost ~]$ touch b.txt
[sanle@localhost ~]$ ll
总用量 0
-rw-r--r-- 1 sanle sc     0 4月   9 20:36 a.txt
-rw-r--r-- 1 sanle sanle1 0 4月   9 20:37 b.txt

        1.9 Linux加密

默认密码采用SHA512算法

哈希算法(Hash) ==》散列值求取

        把任意长度的输入,映射成固定长度的输出,该输出就是散列值

        是一种单向加密技术

hash 算法: md5 sha1 sha2 sha256 sha512

[root@localhost ~]# cat /etc/shadow |grep lihua
lihua:$6$t8DknEXN$ZQ7JE6YixE3hpa.vTrqKoM3erinF267AKzT.en33JFgMePbrijdKQOU5xg21IqXFip4pEsVsRepuvRnB5vTZx0:19091:0:99999:7:::

密码字段: $加密算法id$盐值$真正的密文

加密底层使用内核的crypt函数实现

盐值(随机产生)用于防止撞库

撞库:因为同一串字符产生的密文相同,把常用的密码密文放在一个数据库里,一个一个去比较,如果没有盐值很容易被撞出来。

#通过python使用crypt:利用密文和盐值得到加密后的密码
>>> import crypt
>>> crypt.crypt('123456','$6$t8DknEXN')
'$6$t8DknEXN$ZQ7JE6YixE3hpa.vTrqKoM3erinF267AKzT.en33JFgMePbrijdKQOU5xg21IqXFip4pEsVsRepuvRnB5vTZx0'

        1.10 SELinux

是Linux操作系统里的一个安全相关子系统,但规则过于繁琐。

关闭selinux只能通过修改配置文件

setenforce 只能设置两种

        0 宽容模式

        1 强制模式

[root@localhost ~]# getenforce  ==》获取当前SELinux的状态
Enforcing  ==》强制模式,按照规则来
[root@localhost ~]# setenforce 0   ==》设定为宽容模式(临时设置)
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# vim /etc/selinux/config   ==》修改配置文件,重启主机后生效
SELINUX=disabled
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# reboot
#重新连接
[root@localhost ~]# getenforce
Disabled

        1.11 练习(last、lastlog)

  1. id 用户名
  2. usermod -L 用户名

        passwd -l 用户名

  1. id
  2. 查看正在登录 w

        last 记录最近登录系统的用户

        lastlog 会记录每一个用上一次登陆的时间

二、新建一个用户背后的重要文件

/etc/passwd 存放用户信息

/etc/shadow 存放用户密码

/etc/passwd- 和/etc/shadow-是passwd和shadow备份文件,总是和源文件少一次操作(可以是新建也可以是删除)

创建用户后,会修改8个文件:

        /etc/passwd;/etc/shadow;/etc/passwd-;/etc/shadow-;/etc/group;/etc/gshadow;/etc/group-;/etc/gshadow-

        2.1 ⭐/etc/passwd

【一定要知道每个字段的含义】

sc:x:1013:1013::/home/sc:/bin/bash

使用冒号 : 分割

字段1: 用户名

字段2: 密码占位符,通常为"x"或者"*" (因为这个文件谁都可读,所以真正的密码存放在/etc/shadow)

[root@localhost mail]# su - sc
上一次登录:六 3月 26 17:11:29 CST 2022pts/1 上
[sc@localhost ~]$ less /etc/passwd
[sc@localhost ~]$ less /etc/shadow
/etc/shadow: 权限不够

用户登录时验证密码:

 字段3: 用户id(uid)

字段4: 用户所属基本组id(一个用户可以加入很多组,这里只存基本组id)

字段5: 用户描述信息(没有添加时为空)

字段6: 家目录

字段7: 登陆shell的信息

        【一个小例子】

# 找出系统中uid大于1000的用户,显示出它的名字,uid,家目录,shell
[root@localhost mail]# awk -F ':' '$3>1000 {print $1,$3,$6,$7}' /etc/passwd

        2.1.1 用户的shell类型

[root@localhost ~]# useradd -s /sbin/nologin liuxiang123   ==》-s就是指定用户的shell

[root@localhost ~]# cat /etc/passwd|grep liuxiang123
liuxiang123:x:1015:1015::/home/liuxiang123:/sbin/nologin
[root@localhost ~]# su - liuxiang123  ==》本地切换登录
This account is currently not available.

远程登录

 /sbin/nologin 这个用户不能登录系统。su(本地切换登录)和ssh(远程登陆)都不可以。

/bin/bash 默认的用户shell(正常的shell)

/sbin/halt 登录就关机

/sbin/sync sync是将内存里的缓存刷新到磁盘

        2.1.2 awk补充

~ 内容匹配 ==》模糊匹配

例题:查找uid大于1000并且用户名里包含li,shell使用的是bash的用户信息,最终输出用户名、uid、shell这3个字段

[root@localhost ~]# cat /etc/passwd|awk -F: '$3>1000 && $1 ~ /li/ && $7 ~ /bash/ {print $1,$3,$7}'
lilanqing 1001 /bin/bash
lihua 1008 /bin/bash
liangluyao 1010 /bin/bash
lihua321 1012 /bin/bash
[root@localhost ~]# cat /etc/passwd|egrep ".*li.*bash"|awk -F: '$3>1000{print $1,$3,$7}'
lilanqing 1001 /bin/bash
lihua 1008 /bin/bash
liangluyao 1010 /bin/bash
lihua321 1012 /bin/bash

        2.2 /etc/shadow

用来存放用户密码

 上次修改密码的时间:是距离1970年1月1日的天数

         2.3 /etc/group

 组成员列表:表示这个成员的次要组有adm

[root@localhost 0402]# useradd -G wudang zhangheng
[root@localhost 0402]# id zhangheng
uid=2004(zhangheng) gid=2004(zhangheng) 组=2004(zhangheng),2007(wudang)
[root@localhost 0402]# cat /etc/group |grep wudang
wudang:x:2007:zhangheng

有效组:新建文件或者文件夹的时候,使用的gid。gid使用的哪个组,那个组就是有效组。

euid egid 有效的uid 有效的gid

        因为一个用户可以同时属于多个组,但是用户只能有一个有效组(用户gid对应的组)

 此时id看到的gid对应的组发生变化

         2.3.1 Linux组账号

         2.3.2 gpasswd

 【示例】

 gpasswd可以将用户添加到很多组

usermod只能有一个次要组

        2.3.3 查看组内有哪些成员

######查看组中有哪些成员
[root@mysql-binary ~]# cat group_member.sh 
#!/bin/bash

# 位置变量:bash group_member.sh sc1 执行脚本时后面传入的第一个参数(sc1)赋给group_name
group_name=$1
# `cmd` 表示执行cmd并且将结果赋值给变量
# -v 传变量,将外部变量传入awk命令里使用
# $3,$4为gid和把这个组作为附属组的用户名
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
# ($group_msg) 表示将group_msg放到一个数组里
group_lst=($group_msg)
# 取数组里的第一个值
group_id=${group_lst[0]}
group_user_1=${group_lst[1]}
# 得到将该组作为主要组的用户 
# tr "\n" "," 表示用,替换\n
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

        2.4 /etc/login.defs

 

        2.5 ⭐/etc/skel

(初始化配置文件)

新建用户用户时,家目录的默认文件都是从/etc/skel目录下拷贝过来的

 

        2.5.1 .bash_profile

用户每次登录时执行,去执行.bashrc,输出PATH变量为全局变量

        2.5.2 .bashrc

每次进入新的bash环境时执行,会执行/etc/bashrc

        2.5.3 /etc/bashrc

全局配置,只有root用户可以修改

定义了很多函数、环境变量、别名等

        2.5.4 .bash_history

默认保存1000条命令

当用户exit注销的时候,会将再内存保存的历史命令写到.bash_history

当用户下次登录时会加载.bash_history里的历史命令到内存

在退出前使用history -c会清除保存在内存里的历史命令

        2.5.5 私有变量

公有变量(环境变量)回传给子进程

export 将变量输出为全局变量(公有变量)

export meinv 将meinv变为全局变量

         2.5.6 执行脚本的方法

         2.5.7 ⭐(记)两种bash初始化的文件

安装软件,让所有的用户的PATH里都田间软件的sbin目录的路径:

推荐加到/etc/bashrc(这样直接敲一个bash也可以)

        2.5.8 开机启动流程

 三、useradd命令在后台所作的工作

         3.1 手动新建用户

        3.1.1 步骤:

1. 修改/etc/passwd,在末尾追加

        lihua:x:5566:5566::/home/lihua:/bin/bash

2. 修改/etc/shadow,在末尾追加

        lihua:!!:19083:0:99999:7:::

3. 修改/etc/group,在末尾追加

        shanxi:x:5566:

4. 新建家目录

        mkdir /home/lihua

5. 复制/etc/skel目录下的环境变量配置文件

        [root@localhost skel]# cp /etc/skel/.bash* /home/lihua

6. 创建邮箱文件

        [root@localhost skel]# touch /var/spool/mail/lihua

7. 验证lihua用户是否可以su切换登录

[root@localhost ~]# su - lihua
[lihua@localhost ~]$ pwd
/home/lihua
[lihua@localhost ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc
[lihua@localhost ~]$ mkdir lihua
mkdir: 无法创建目录"lihua": 权限不够   #因为lihua这个目录是root用户创建的,所以这个文件到拥有者和组都是root
[root@localhost ~]# cd /home
[root@localhost home]# ll
总用量 0
drwxr-xr-x 2 root root       62 4月   3 20:56 lihua

拥有者:属主user

属组:group

过户:将文件的属组或属主修改为别的用户或组

8. 使用root用户去/home/lihua文件夹的所有者为lihua,组为shanxi

        chown -R lihua:shanxi /home/lihua

        前面写用户名,后面写组名,中间用冒号:隔开

-R 递归修改目录里的所有文件和文件夹的所有者

[lihua@localhost ~]$ chown lihua:shanxi /home/lihua
chown: 正在更改"/home/lihua" 的所有者: 不允许的操作  #只有root用户可以使用这条命令
[lihua@localhost ~]$ exit
登出
[root@localhost home]# chown -R lihua:shanxi /home/lihua
[root@localhost home]# ll -d /home/lihua
drwxr-xr-x 2 lihua shanxi 62 4月   3 20:56 /home/lihua

9. 修改邮箱的所有者

        进入/var/spool/mail目录后,输入chown lihua:mail lihua

[root@localhost home]# cd /var/spool/mail
[root@localhost mail]# chown lihua:mail lihua
[root@localhost mail]# ll
总用量 4716
-rw-------  1 lihua mail   15844 4月   3 21:11 lihua

10. 修改权限,只有用户本身具有家目录的读写执行权限,其他人和组都没有任何权限

        chmod 700 /home/lihua

[root@localhost home]# ll
总用量 0
drwxr-xr-x 2 lihua shanxi     62 4月   3 20:56 lihua
# 这里别的用户也可以读和执行lihua的家目录
[root@localhost home]# chmod 700 /home/lihua
[root@localhost home]# ll
总用量 0
drwx------ 2 lihua shanxi     62 4月   3 20:56 lihua
drwx------ 2  2005 yitianming 83 4月   1 23:03 yitianming

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值