linux 系统中的用户管理

  • Post author:
  • Post category:linux





1.用户存在的意义

系统资源是有限的,如何合理分配系统资源?

在这个问题解决时必须要有连个资源配合

1.身份 account(用户名)

2.授权 author

3.认证 auth (密码)

3A机制,3A机制组成系统中最底层的安全架构



2、用户组存在意义

用户组是一个逻辑容器

对用户进行归类和统一授权



3、用户及用户组在系统中的存在方式

用户就是/etc/passwd 文件中的一行字符,用户属性

用户组存在的方式就是/etc/group 文件中的一行字符,用户组的属性

/etc/shadow 用户认证属性

用户存放方式就是文件里的字符串加字符串指定的系统其他文件



4、用户的查看

命令 用户
whoami ##查看当前用户
id ##查看用户id信息 (后面跟的谁就是看谁,不跟就是看自己)
-u ##查看用户的用户id
-g ##查看用户主组id
-G ##查看用户所有的组的id
-n ##显示名称

-nG -ng -nu 显示对应的名称而不再显示数字

[root@foundation50 Desktop]# whoami
root
[root@foundation50 Desktop]# id -u westos  
1000
[root@foundation50 Desktop]# id -g westos 
1000
[root@foundation50 Desktop]# id -G westos 
1000 72
[root@foundation50 Desktop]# id -Gn westos 
westos tcpdump

用户id范围:

0-65535

0: Linux超级用户ID

1-999: Liunx系统自用ID

1000-65535: 用户级ID

以上ID设定规则都被记录在/etc/login.defs



5、用户切换

su – username

— 表示切换用户环境,不加-表示只切换用户不切换环境

注意:在作用户切换时当使用完毕身份及时退出,不要在一个shell反复执行su命令

在一个shell中反复执行su命令会导致环境错乱

gnome-session-quit ==force 图形命令用户切换



6 、用户涉及到的配置文件

/etc/passwd ##用户身份信息文件

7列:#用户名称:用户密码(密码放在这不安全):用户id:主组id:用户说明:用户家目录:用户默认shell
在这里插入图片描述

/etc/group ##组身份信息文件

#组名称:组密码:组id:组的附加成员有那些

在这里插入图片描述

/etc/skel/.* ##用户环境配置文件模板 (在建立用户时会把这个文件的 信息复制到自己的家目录中去)

/etc/shadow ##用户认证信息文件(密码以及密码的期限等)

/home/username ##用户家目录 (进入系统时默认所在位置)

/var/spool/mail/username ##用户邮箱文件那个用户就是那个名称



7、监控用户建立的命令

[root@foundation50 Desktop]# watch -n 1 tail -n 3 /etc/passwd /etc/group 
watch是监控命令,-n 1的意思是隔一秒更新一次结果。
Every 1.0s: tail -n 3 /etc/passwd...  foundation50.ilt.example.com: Mon Aug  9 22:13:30 2021
[root@foundation50 Desktop]# watch -n 1 "tail -n 3 /etc/passwd /etc/group ;ls -l /home"   监控 多个命令用分号隔开
==> /etc/passwd <==
tcpdump:x:72:72::/:/sbin/nologin
westos:x:1000:1000::/home/westos:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

==> /etc/group <==
tcpdump:x:72:westos
westos:x:1000:
apache:x:48:



8、用户和用户组的建立及删除

命令 用途
useradd username ##用户建立
-u id username ##指定uid
userdel username 删除用户,则只会删除用户的信息,并不会删除用户的家目录(系统配置文件)
userdel -r username 删除用户并且删除用户系统配置文件
groupadd username 组的建立
groupdel username 组的删除
groupadd -g id 指定组id,切记指定组id时用户不能存在,若存在需要删除用户重新建立
[root@foundation50 Desktop]# useradd linux 
[root@foundation50 Desktop]# userdel -r linux
[root@foundation50 Desktop]# groupadd linux
[root@foundation50 Desktop]# groupdel linux
[root@foundation50 Desktop]# groupadd -g 666 linux
[root@foundation50 Desktop]# groupadd -g 888 linux    
groupadd: group 'linux' already exists   ##linux已经存在则需要删除
[root@foundation50 Desktop]# groupdel linux    
[root@foundation50 Desktop]# groupadd -g 888 linux  删除后可以指定

id范围 表示名称
0 表示超级用户
1-200 系统预留id
01-999 系统用户
1000-60000 用户级用户
etc/login.defs 记录用户建立的默认规则
命令 用途

useradd

username
用户建立
-u id username 指定uid
-g id username 指定组id
-G id username 指定附加组id
-d dir username 指定用户家目录
-M username j建立用户时不指定用户家目录
-c word username 指定用户说明
-s shell username 指定用户shell
[root@foundation50 Desktop]# useradd -u 666 linux  指定uid
[root@foundation50 Desktop]# userdel -r linux  
[root@foundation50 Desktop]# useradd -g 666 linux  指定组id时组必须存在
useradd: group '666' does not exist
[root@foundation50 Desktop]# groupadd -g 666 linux   建立组
[root@foundation50 Desktop]# useradd -g 666 linux   指定组id
[root@foundation50 Desktop]# useradd -G 72 linux  指定附加组
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump)
[root@foundation50 Desktop]# userdel -r linux 
[root@foundation50 Desktop]# useradd -G 72,1000 linux  可以指定多个附加组
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump),1000(westos)
[root@foundation50 Desktop]# userdel -r linux 
[root@foundation50 Desktop]# useradd -c 'linux user' linux  指定用户说明
[root@foundation50 Desktop]# userdel -r linux 
[root@foundation50 Desktop]# useradd  -M linux    不指定家目录
[root@foundation50 Desktop]# userdel -r linux 
userdel: linux home directory (/home/linux) not found
[root@foundation50 Desktop]# useradd  -d /home/haha  linux  指定家目录
[root@foundation50 Desktop]# userdel -r linux  
[root@foundation50 Desktop]# useradd -s /sbin/nologin linux  指定用户shell   /sbin/nologin表示不可登陆shell
[root@foundation50 Desktop]# su -linux
This account is currently not available.
[root@foundation50 Desktop]# userdel -r linux 
[root@foundation50 Desktop]# cat /etc/shells  查看系统中有哪些shell
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash



9、用户和用户组的管理

命令 用途
usermod usermod
-l 更改用户名称
-u 更改用户id
-g 更改组id
-G 更改用户附加组身份
aG 添加用户附加组身份
-c 更改用户说明
-d #更改家目录指向字符,但是真实的目录名称并不改变 ( -d 更改的是/etc/passwd 家目录中的指向字符,但是真实目录名称并不会改变)
-md #更改家目录指向字符同时更改家目录名称 (md 两个字符不能互换)
-s #更改默认shell
-L #冻结账号
-U #解锁
[root@foundation50 Desktop]# groupmod -g 666 linux  更改用户组id
[root@foundation50 Desktop]# groupmod -g 1001 linux
[root@foundation50 Desktop]# useradd linux   
[root@foundation50 Desktop]# usermod -l redhat linux   更改用户名
[root@foundation50 Desktop]# usermod -l linux redaht     更改用户名
usermod: user 'redaht' does not exist
[root@foundation50 Desktop]# usermod -l linux redhat   
[root@foundation50 Desktop]# usermod -u 666 linux    更改用户id
[root@foundation50 Desktop]# usermod -u 1001 linux  
[root@foundation50 Desktop]# usermod -g 1000 linux   更改组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1000(westos) groups=1000(westos)
[root@foundation50 Desktop]# usermod -g 1001 linux
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux)
[root@foundation50 Desktop]# usermod -G 1000 linux   更改附加组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),1000(westos)
[root@foundation50 Desktop]# usermod -G 72 linux 更改附加组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump)
[root@foundation50 Desktop]# usermod -aG 1000 linux  添加附加组id
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),72(tcpdump),1000(westos)
[root@foundation50 Desktop]# usermod  -G "" linux  清空所有附加组
[root@foundation50 Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux)
[root@foundation50 Desktop]# usermod -c "linux user" linux   更改用户说明
[root@foundation50 Desktop]# usermod -c "" linux   清空用户说明
[root@foundation50 Desktop]# usermod -d /home/lee linux    更改用户家目录指向 ,而不是更改家目录文件名称
[root@foundation50 Desktop]# usermod -d /home/linux linux 
[root@foundation50 Desktop]# usermod -md /home/lee linux 即更改家目录指向,也更改家目录文件名词
[root@foundation50 Desktop]# usermod -md /home/linux linux
[root@foundation50 Desktop]# usermod -s /sbin/nologin linux  更改用户的shell
[root@foundation50 Desktop]# usermod -s /bin/bash linux



10、用户认证信息管理

/etc/shadow

在这里插入图片描述

命令 功能
/dev/random 加密字符串设备



10、1更改密码

超级用户改密码

1、 passwd lee        ##只有root可以执行   
2、超级用户可以用非交互式改密码:
 “echo 123 | passwd --stdin lee”    (stdin  表示采集标准 输入给 lee)
3、超级用户也可以 如下改密码:
   passwd  << EOF
    lee
    lee
    EOF
    

普用用户改密码

[lee@foundation50 Desktop]$ passwd   普通用户修改密码只能修改自己用户密码
Changing password for user lee.
Current password:        需要输入原始密码
New password:             密码必须是8位以上并且是数字加字符无序的组合
Retype new password: 
passwd: all authentication tokens updated successfully.



11、查看密码状态

命令 功能
passwd -S lee 查看密码状态
root@foundation50 Desktop]# passwd -S lee
lee PS 2021-08-11 0 99999 7 -1 (Password set, SHA512 crypt.)



12、冻结账号和解锁账号

命令 功能
usermod -L lee 冻结账号
usermod -U lee 解锁账号
passwd -l lee 冻结账号
passwd -u lee 解锁账号
[root@foundation50 Desktop]# usermod -L lee  加密字符串前面加一个!
[root@foundation50 Desktop]# usermod -U lee
[root@foundation50 Desktop]# passwd -l lee  加密字符串前面加一个!!
Locking password for user lee.
passwd: Success
[root@foundation50 Desktop]# passwd -u lee
Unlocking password for user lee.
passwd: Success



13、密码删除

命令 用户
passwd -d lee 密码删除
[root@foundation50 Desktop]# passwd -d lee
Removing password for user lee.
passwd: Success



14 、密码使用天数

从1970-1-1算其到今天的时间

命令
passwd -e lee 修改默认使用时间为0 (用户在登陆系统完成认证之后,被强制的修改一次密码,否则登陆不了系统.)
chage -d 0 lee ##账号必须改密码才能登陆系统, ( passwd -e 只能修改为0, 而 chage -d 0 可以修改为其他指定都行,但是意义不大,一般都是0)
[root@foundation50 Desktop]# passwd -e lee  只能修改为0 ,修改后必须强制修改一次密码,否则无法登陆
Expiring password for user lee.
passwd: Success
[root@foundation50 Desktop]# chage -d 11 lee   可以修改为除了0的其他数字 ,但是意义不大
[root@foundation50 Desktop]# chage -d 0 lee  



15、 密码最短有效期

命令 功能
passwd -n 1 lee 密码最短有效期
chage -m 1 lee 密码最短有效期
[root@foundation50 Desktop]# passwd -n 1 lee  设置密码最短有效期
Adjusting aging data for user lee.
passwd: Success
[root@foundation50 Desktop]# su -- lee
[lee@foundation50 Desktop]$ passwd  
Changing password for user lee.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[lee@foundation50 Desktop]$ passwd
Changing password for user lee.
Current password: 
You must wait longer to change your password    至少需要等24小时后才能修改密码
passwd: Authentication token manipulation error
[root@foundation50 Desktop]# chage -m 0 lee  设置密码最短有效期



16、 密码最长有效期

命令 用户
passwd -x 30 lee 密码最长有效期
chage -M 40 lee 密码最长有效期
[root@foundation50 Desktop]# chage -M 40 lee
[root@foundation50 Desktop]# passwd -x 30 lee
Adjusting aging data for user lee.
passwd: Success



17、 警告期

命令 用户
passwd -w 2 lee 警告期
chage -W 7 lee 警告期
[root@foundation50 Desktop]# passwd -w 2 lee
Adjusting aging data for user lee.
passwd: Success
[root@foundation50 Desktop]# chage  -W 7 lee



18、 非活跃天数

命令 用户
passwd -i 1 lee 非活跃天数
chage – I 2 lee 非活跃天数
[root@foundation50 Desktop]# passwd -i 1 lee
Adjusting aging data for user lee.
passwd: Success
[root@foundation50 Desktop]# chage -I 2 lee



19、 账号到期时间

命令 用户
chage – E “2020-11-11” lee 账号到期时间
[root@foundation50 Desktop]# chage -E "2020-11-11" lee

练习:

在这里插入图片描述

答案:

在这里插入图片描述



20 、用户权力下放

在系统中普通用户时无法执行系统管理命令的

如果需要普通用户执行系统管理动作那么需要oot用户来进行授权

命令 功能
hoStname 查看当前系统的主机名
which 查看命令绝对路径
命令 用户
普通用户授权方式 “sudo” 可以使普通用户使用指定的用户身份来运行命令


授权方法:visudo

命令 功能
visudo 此命令作用是编辑/etc/sudoers并提供语法检测(之前讲到的 vim 可以编辑,但是不会提示语法报错) 语法检测只能确保语法正确,不能表示设定是合理的或者单词拼写错误。退出时提示错误,按e 继续进行编辑。

在文件的100行左右 ##代码规范性 ****ALL (全部,但是很危险)

  username       hostname=(newusername)          [NOPASSWD:] /command, /command1

    #lee用户    在linux.wesots.com主机=(用超级用户身份)            执行useradd命令
     lee           linux.westos.com=(root)                   /usr/sbin/useradd
#westos用户     在linux.wesots.com主机   使用超户      免密    执行useradd 和 userdel
    westos          linux.wesots.com = (root)   NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
[root@foundation50 Desktop]# useradd westoslinux   建立用户
[root@foundation50 Desktop]# echo westos | passwd --stdin westoslinux 修改密码
Changing password for user westoslinux.
passwd: all authentication tokens updated successfully.
[root@foundation50 Desktop]# hostname  查看主机名
foundation50.ilt.example.com
[root@foundation50 Desktop]# visudo  编辑/etc/sudoers并提供语法检测
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
westoslinux foundation50.ilt.example.com=(root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel
[root@foundation50 Desktop]# su -- westoslinux 登陆普通用户
[westoslinux@foundation50 Desktop]$ sudo  useradd linux   可以建立用户
Creating mailbox file: File exists
[westoslinux@foundation50 Desktop]$ id linux
uid=1002(linux) gid=1002(linux) groups=1002(linux)
[westoslinux@foundation50 Desktop]$ sudo userdel -r linux   普通用户删除
userdel: /var/spool/mail/linux not owned by linux, not removing



版权声明:本文为qq_43114229原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。