linux基础day10

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础day10相关的知识,希望对你有一定的参考价值。

linux用户管理

什么是用户

用户指的是能够正常登录Linux或windows系统

那Linux与windows系统的用户有什么区别?

本质都是登录系统的,只不过Linux支持多用户同时登录,windows默认不支持,但是修改 组策略 的情

况下也是可以多用户登录的

用户的作用

1)登录用户
2)用户用来运行程序
3)每一个目录或者文件,都有指定的用户权限
4)程序的运行用户要与程序调用的用户目录权限相同

/etc/passwd

# 存放用户信息的文件
yl:x:1001:1001:666:/home/yl:/bin/bash

第一列 用户名
第二列 密码的占位符
第三列 用户的id UID root 0
第四列 用户组的id gid root 0
第五列 对用户的描述(没有描述就是空着的)
第六列 用户的家目录
第七列 用户登陆的bash

## 创建用户并添加描述
useradd -c 描述 用户名
## 修改用户描述
usermod -c 描述 用户名

/etc/shadow

# 存放用户密码的文件
root:$6$gaOrKqcOSdoCwqmP$kgUXmNfDhnutBo2dhERFpdrob/W6J9Mp2NEITDf4omW9H0I6stMSIKbzLC3dEAYeiUh4mA.yAAgAyntSq9EJU.::0:99999:7:::

第一列 用户名
第二列 加密后的密码,!!/*代表没有密码
第三列 上一次更改密码的时间,是从1970年开始算
第四列 密码最少使用天数 0代表无限
第五列 密码最长使用天数 99999代表无限
第六列 密码到期前7天,提示需要修改密码
第七列 密码过期后n天强制更改密码
第八列 账户失效时间,也是从1970年开始算
第九列 为空

用户UID 系统中约定的含义
超级管理员(拥有最高权限)
1-200 系统用户,由系统分配给系统进程使用
201-999 系统用户,用来运行服务账户,不需要登陆系统(动态分配)
1000+ 常规普通用户
chage

-d //设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m //设置用户两次改变密码之间使用"最小天数"
-M //设置用户两次改变密码之间使用"最大天数"
-W //设置密码更改警告时间 将过期警告天数设为“警告天数”
-I //设置密码过期天数后, 密码为失效状态
-E //设置用户过期时间, 账户失效后无法登陆
-l //显示用户信息
//修改时间为2014年08月31日,和图中时间匹配,方便后续验证
[root@zls ~]# date -s 20140831
Sun Aug 31 00:00:00 CST 2014
[root@zls ~]# date
Sun Aug 31 00:00:01 CST 2014
[root@zls ~]# useradd zls1
[root@zls ~]# echo "123" |passwd --stdin zls1
[root@zls ~]# tail -1 /etc/shadow
zls1:!!:16312:0:99999:7:::
//设置最近一次修改密码时间
[root@zls ~]# chage -d "2014-09-01" zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:0:99999:7:::
//设置最短使用密码时间
[root@zls ~]# chage -m 2 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:99999:7:::
//设置密码最长使用时间
[root@zls ~]# chage -M 15 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:7:::
//设置密码警告时间
[root@zls ~]# chage -W 6 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:::
[root@zls ~]# chage -W 7 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:7:::
//设置密码过期时间
[root@zls ~]# chage -I 5 zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:5::
//设置用户过期时间
[root@zls ~]# chage -E "20115-08-31" zls1
[root@zls ~]# tail -n1 /etc/shadow
zls1:!!:16314:2:15:6:5:6627567:
[root@zls ~]# chage -l zls1
Last password change : Sep 01, 2014 //最近一次更改密码时间
Password expires : Sep 16, 2014 //密码过期时间
Password inactive : Sep 21, 2014 //密码失效时间
Account expires : Aug 31, 2015 //用户失效时间
Minimum number of days between password change : 2 //密码最短使用时间
Maximum number of days between password change : 15 //密码最长使用时间
Number of days of warning before password expires : 7 //密码过期前警告天数
//如何验证,只调整时间为如下进行验证:
1.验证普通用户是否能修改密码, 不需要调整时间。
2.普通用户登陆系统后, 会提示警告密码还剩多少天过期
[root@zls ~]# date -s "2014-09-12"
3.普通用户登陆系统后, 强制要求修改密码
[root@zls ~]# date -s "2014-09-18"
4.普通用户登陆系统后, 提示账户已过期
[root@zls ~]# date -s "2014-09-23"

用户管理

  • # 添加用户
    useradd/adduser 
    
    # 语法
    useradd 选项 参数 用户名
    
    # 选项
    -u # 指定用户的uid(必须是没用过的)
    useradd -u 1008611 lll
    lll:x:1008611:1003::/home/lll:/bin/bash
    
    -g # 指定用户的组
    useradd -g ljy kkk
    kkk:x:1003:1000::/home/kkk:/bin/bash
    
    -G # 指定用户的附加组,用逗号隔开添加多个组(查看是否有多个组就id这个用户)
    useradd -G ljy,yl jjj
    uid=1004(jjj) gid=1004(jjj) groups=1004(jjj),1000(ljy),1001(yl)
    
    -d # 指定用户的家目录
    useradd -d /tmp/omg hhh
    hhh:x:1005:1005::/tmp/omg:/bin/bash
    
    -c # 创建用户并添加注释
    useradd -c 注释 用户名
    yl:x:1001:1001:666:/home/yl:/bin/bash
    
    -M # 不创建家目录(配合创建运行系统服务的用户)
    useradd -M ggg
    ggg:x:1006:1006::/home/ggg:/bin/bash(虽然显示在home底下,但在home下没有这个用户)
    
    -s # 指定用户默认shell
    useradd -s /sbin/nologin fff
    fff:x:1007:1007::/home/fff:/sbin/nologin
    
    # 一般用不到
    -r 创建系统账户,没有家目录
    -a 附加组,都留下,配合-G,追加
    
  • # 删除用户
    userdel
    
    -r 删除用户的同时删除用户的家目录
    
    # 用法
    userdel -r 用户名
    
  • # 修改用户(必须是存在的用户)
    usermod
    
    # 选项
    -u # 修改用户的uid
    usermod -u 1080 fff
    fff:x:1080:1007::/home/fff:/sbin/nologin
    
    -g # 修改gid(gid组必须存在)
    usermod -g 1003 fff
    fff:x:1080:1003::/home/fff:/sbin/nologin
    
    -G # 修改附加组(组必须存在)
    usermod -G hhh,ggg fff
    [root@localhost ~]# id fff
    uid=1080(fff) gid=1003(lll) groups=1003(lll),1005(hhh),1006(ggg)
    
    -c # 修改注释信息
    usermod -c niubi fff
    fff:x:1080:1003:niubi:/home/fff:/sbin/nologin
    
    -s # 修改用户的登录shell
    usermod -s /bin/bash fff
    fff:x:1080:1003:niubi:/home/fff:/bin/bash
    
    -m # 迁移家目录(要配合-d)
    usermod -d /home/gmo -m fff
    fff:x:1080:1003:niubi:/home/gmo:/bin/bash
    
    -d # 修改家目录
    usermod -d /opt/mog fff
    fff:x:1080:1003:niubi:/opt/mog:/bin/bash
    
    -l # 修改用户的登录名
    usermod -l ddd fff
    ddd:x:1080:1003:niubi:/home/gmo:/bin/bash
    
    # 忘了他
    -L 锁定用户
    -U 解锁用户
    
    ## 创建用户会默认创建和用户同名的组
    
  • # 查找
    1) id 
    [root@localhost ~]# id jjj
    uid=1004(jjj) gid=1004(jjj) groups=1004(jjj),1000(ljy),1001(yl)
    
    2) cat /etc/passwd
    

拓展

finger(用于查找并显示用户信息)

[root@localhost ~]# finger ddd
Login: ddd            			Name: niubi
Directory: /home/gmo                	Shell: /bin/bash
Never logged in.
No mail.
No Plan.

chfn (英文全称是“change finger”,即用来改变finger命令显示的信息。)
[root@localhost ~]# chfn ddd
Changing finger information for ddd.
Name [niubi]: niubi
Office []: heiheihei
Office Phone []: 110
Home Phone []: 120

Finger information changed.

[root@localhost ~]# finger ddd
Login: ddd            			Name: niubi
Directory: /home/gmo                	Shell: /bin/bash
Office: heiheihei, 110			Home Phone: 120
Never logged in.
No mail.
No Plan.

who(识别当前登录的用户)
[root@localhost ~]# who
root     tty1         2023-03-20 16:34
root     pts/0        2023-03-20 19:49 (10.0.0.1)

linux基础day11

用户管理拓展

用户创建流程

# 过滤用户登录配置文件不包含以#开头及空行的内容
[root@localhost ~]# cat /etc/login.defs |grep -vE ^#|^$
MAIL_DIR	/var/spool/mail
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 

/etc/login.defs文件讲解

# 过滤用户登录配置文件包含以大写字母开头的内容
[root@localhost ~]# grep ^[A-Z] /etc/login.defs
# 创建用户的时候会创建用户相关邮件所在的路径
MAIL_DIR	/var/spool/mail
# 密码最长使用天数
PASS_MAX_DAYS	99999
# 密码最少使用天数
PASS_MIN_DAYS	0
# 密码最少长度
PASS_MIN_LEN	5
# 密码到期前7天会提醒
PASS_WARN_AGE	7
# 普通用户最小UID 1000
UID_MIN                  1000
# 普通用户最大UID 60000
UID_MAX                 60000
# 系统用户最小UID 201
SYS_UID_MIN               201
# 系统用户最大UID 999
SYS_UID_MAX               999
# 普通用户最小GID 1000
GID_MIN                  1000
# 普通用户最大GID 60000
GID_MAX                 60000
# 系统用户最小GID 201
SYS_GID_MIN               201
# 系统用户最大GID 999
SYS_GID_MAX               999
# 创建家目录
CREATE_HOME	yes
# umask
UMASK           077
# 创建用户的时候,同时创建该用户的同名用户组
USERGROUPS_ENAB yes
# 密码加密格式 SHA512
ENCRYPT_METHOD SHA512 

/etc/default/useradd

## USERGROUPS_ENAB	no的情况下才会读取以下配置文件

# useradd defaults file
# 组的GID 100
GROUP=100
# 家目录的位置
HOME=/home
# 账号过期后都不会停止使用 -1=不开启
INACTIVE=-1
# 账号不过期
EXPIRE=
# 创建用户的默认shell
SHELL=/bin/bash
# 普通用户的环境变量存储位置
SKEL=/etc/skel
# 创建用户时,是否创建邮件文件
CREATE_MAIL_SPOOL=yes

用户密码管理

passwd

# 给当前登录用户设置密码
passwd

# 给普通用户设置密码
passwd user(用户名)

# root用户设置密码可以无视密码长度
# 普通用户设置密码必须遵守8位数

# 交互
类似挤牙膏,动一下挤一下

# 免交互
可以免除交互,不需要一个个点

# 安装expect(自动化交互套件)
yum install -y expect

# 生成密码
mkpasswd -l 10 -d 3 -c 4 -C 2 -s 1

-l 密码长度
-d 密码数字个数
-c 小写英文个数
-C 大写英文个数
-s 特殊符号

组的基本管理

# 组信息
/etc/group

ggg:x:1006:fff

第一列 用户名
第二列 密码占位符
第三列 组的gid
第四列 附加组,基本成员不显示
# 组密码信息
/etc/gshadow

ggg:!::fff
第一列 组名
第二列 组密码 !为空
第三列 组管理员
第四列 仅显示附加组成员,不显示基本成员

group管理

# 添加组
groupadd

# 语法
groupadd 选项 参数

# 选项
-g 指定gid
groupadd -g 555 qqq
qqq:x:555:

-r 创建系统组
# 创建系统组,gid从201-999
[root@localhost ~]# groupadd -r sys_group
[root@localhost ~]# tail -1 /etc/group
sys_group:x:996:

# 修改组的信息
groupmod

# 语法
groupmod 选项 参数

# 选项
-n 修改组名
groupmod -n lollol lol
-g 修改原有组的gid
groupmod -g 777 lol

# 参数
组名:指定要修改的工作的组名。

# 删除组,可以删除没有用户作为主组的组,如果只是附加组,删除时不会提示
groupdel

# 语法
groupdel 参数

# 参数
组:要删除的工作组名。

cat /etc/group

使用 gpasswd 设置组密码[了解即可]

[root@zls ~]# groupadd devops
[root@zls ~]# gpasswd devops
Changing the password for group devops
New Password:
Re-enter new password:

使用 newgrp命令切换基本组身份[了解即可]

//检查账户信息
[root@docker ~]# useradd zls
[root@docker ~]# id zls
uid=1069(zls) gid=5005(zls) groups=5005(zls)
//切换普通用户
[root@docker ~]# su - zls
//创建新文件,并验证权限
[zls@docker ~]$ touch file_roots
[zls@docker ~]$ ll
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots
//切换组信息
[zls@docker ~]$ newgrp devops
Password:
//建立文件,检查权限
[zls@docker ~]$ touch file_test
[zls@docker ~]$ ll
total 0
-rw-rw-r-- 1 zls zls 0 Jun 13 10:06 file_roots
-rw-r--r-- 1 zls devops 0 Jun 13 10:08 file_test

修改命令提示符

vim /etc/motd
/**
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣴⣶⣶⣶⣶⣶⠶⣶⣤⣤⣀⠀⠀⠀⠀   
⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⠁⠀⢀⠈⢿⢀⣀⠀⠹⣿⣿⣿⣦⣄⠀⠀  
⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⠿⠀⠀⣟⡇⢘⣾⣽⠀⠀⡏⠉⠙⢛⣿⣷⡖⠀ 
⠀⠀⠀⠀⠀⣾⣿⣿⡿⠿⠷⠶⠤⠙⠒⠀⠒⢻⣿⣿⡷⠋⠀⠴⠞⠋⠁⢙⣿⣄ 
⠀⠀⠀⠀⢸⣿⣿⣯⣤⣤⣤⣤⣤⡄⠀⠀⠀⠀⠉⢹⡄⠀⠀⠀⠛⠛⠋⠉⠹⡇ 
⠀⠀⠀⠀⢸⣿⣿⠀⠀⠀⣀⣠⣤⣤⣤⣤⣤⣤⣤⣼⣇⣀⣀⣀⣛⣛⣒⣲⢾⡷ 
⢀⠤⠒⠒⢼⣿⣿⠶⠞⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⣼⠃ 
⢮⠀⠀⠀⠀⣿⣿⣆⠀⠀⠻⣿⡿⠛⠉⠉⠁⠀⠉⠉⠛⠿⣿⣿⠟⠁⠀⣼⠃⠀ 
⠈⠓⠶⣶⣾⣿⣿⣿⣧⡀⠀⠈⠒⢤⣀⣀⡀⠀⠀⣀⣀⡠⠚⠁⠀⢀⡼⠃⠀  
⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣷⣤⣤⣤⣤⣭⣭⣭⣭⣭⣥⣤⣤⣤⣴⣟⠁    
*/
# 保存退出
:wq

# 资源网址
https://www.bootschool.net/ascii-art/cartoons?pageNO=2

以上是关于linux基础day10的主要内容,如果未能解决你的问题,请参考以下文章

1day_C基础

Linux基础系列-Day2

linux基础day07:linux文件管理03

Linux基础-12day-Linux系统软件管理

linux基础day06:文件管理02

Linux基础-18day-Linux系统磁盘管理