用户与组管理

用户与组管理

欢迎来到 来到大浪涛天的博客

用户与组管理

1.组管理

1.1 组管理分类

组的概述:组相当于是给了一个容器,容器上标记了权限,容器上装着的用户就具有这个权限。每一个用户创建都会有一个属于自己的组叫做基本组,一般创建用户如果没有指定组时,系统会自己创建一个与用户名同名的组且成员只有他自己叫做私有组,所以基本组不一定是私有组,基本组和私有组之外的组叫做附加组。

1.1.1 私有组

私有组:当在创建一个新用户user时,若没有指定他所属于的组,linux就建立一个和该用户同名的私有组

1.1.2 标准组

标准组可以容纳多个用户,使用标准组时,建立新成员就必须指定组

1.1.3 /etc/group 格式

[root@localhost ~]# cat /etc/group |grep nfs

nfsnobody:x:65534:

第一列为组名,第二列为口令,第三列为组id,第四列为组成员

1.1.4 组管理命令

1.添加myuser1用户,同时myuser1用户属于mygroup组,注意mygroup组必须先存在。

useradd -g mygroup myuser1
2. 添加一个用户进入一个已经存在的组。

[root@localhost ~]# gpasswd -a test maiyat
Adding user test to group maiyat
[root@localhost ~]# id test
uid=1001(test) gid=1001(test) 组=1001(test),1000(maiyat)
  1. userdel 删除使用者帐号及相关档案,加上-r选项,使用目录下的档案一并移除.在其他位置上的档案也将一一找出并删除,其中涉及的档案为/etc/passwd ;/etc/shadow ;/etc/group。
[root@localhost home]# useradd test3
[root@localhost home]# pwd&&ls
/home
lost+found  maiyat  test  test1  test3
[root@localhost home]# grep test3 /etc/passwd&&grep test3 /etc/group
test3:x:1003:1003::/home/test3:/bin/bash
test3:x:1003:
[root@localhost home]# userdel -r test3
[root@localhost home]# pwd&&ls
/home
lost+found  maiyat  test  test1
[root@localhost home]#  grep test3 /etc/passwd&&grep test3 /etc/group
[root@localhost home]# 
  1. 查看某个用户属于哪个组。
[root@localhost home]# groups test1
test1 : maiyat
[root@localhost home]# id test1
uid=1002(test1) gid=1000(maiyat) 组=1000(maiyat)
  1. finger命令
    finger 用户名: 显示用户的相关信息,家目录,启动用户shell等
[root@localhost home]# finger maiyat
Login: maiyat                           Name: 
Directory: /home/maiyat                 Shell: /bin/bash
Never logged in.
No mail.
No Plan.

2. 用户管理

2.1 用户概述

用户是实现资源分派的核心要素,是计算机系统资源使用的入口。用户操作计算机是通过进程来操作的,进程是用户的代理,因此哪个用户来操作进程,该进程的权限就是用户具有的权限,当进程的权限和文件的权限相匹配则可以执行成功,当不匹配则弹出无权限。这个过程叫做安全上下文。用户只是告诉了计算机想要怎么办(点击或者运行命令,实际上就是产生了个进程来控制计算机),但具体怎么办则是由进程来完成的。

2.2 UID与GID

  • 管理员:UID=0
  • 系统用户(后台程序用户如daemon):UID=1-499
  • 普通用户:500-65535
  • 管理员组:0
  • 系统组:1-499
  • 用户组:500+

2.3 用户读取文件的权限解析:

tom:ls
rwx-rwx--x root root /bin/ls
进程:tom tom
对象: rwx-rw-r-- jerry tom a.txt

由于tom要执行ls命令,由于ls属组和属主都是属于root,因此只能以其他的x权限运行ls,但是当tom运行起了ls以后,产生了ls进程,由于进程只是用户的代理,所以这时候ls的属组和属主都是属于tom,tom去匹配a.txt的权限,由于属组可以匹配上,所以就以属组的权限来运行,(最先进行属主匹配,不行则属组,不行则其他,当匹配哪个成功就以哪个权限进行匹配,不在匹配其他的。

2.4 用户管理的相关配置文件:

  • /etc/passwd: 用户的帐号信息
  • /etc/shadow: 用户密码和相关的帐户设定
  • /etc/group: 组的帐号信息
  • /etc/gshaow: 组的密码信息

2.4.1 /etc/passwd文件详解

maiyat:x:1000:1000::/home/maiyat:/bin/bash
account:password:UID:GID:注释:directory:shell

2.4.2 /etc/shadow引发的加密方法小结

  • 对称加密,加密和解密使用同一个密钥,密钥分发困难。
  • 公钥加密:加密和解密使用一对儿密钥 安全但是慢,比对称慢上千倍,其中公钥公开分发给其他主机,私钥保密。
  • 单向加密:提取数据的惟一的特征码,明文取得密文,但是不能由密文取得明文。存在如下风险点:
  1. 定长输出;
  2. 不可逆;
  3. 雪崩效应:数据的微小改变就会造成特征码的完全不一样,md5sum 文件可以提取一个特征码

2.4.3 /etc/shadow 文件详解

maiyat:$6$6nM4SekL$DLVSpzZwvv7ozAPKGdau2UtOfgC.IERucQTU/wRQ7w7FCDqew4IRq/9sLcNcP0ebq4csnCpL.l/8QrNCUre4f0:17375:0:99999:7:::
1. login:登录名
2. encrypted password:加密后的密码,一般是md5加密,:$6加密方式,$aoBvfHrh加密杂质,随机生成,$xVawK9bmq5EM.ktJ1DM5XEc7hZPOFdgkL0XuCFYyQA3p4Ix0qN4fEb9X09duPbpghOGK2Q.k2SZhH8jkhuWd40,加密后的密码
3. change:距离上次修改密码的天数,是从1970年1月日到上次修改密码的天数,
5. minimum password age:密码的最低使用时间,即是两次连续修改密码的间隔,如果为0则不限制,
6. maximum password age:密码最长使用多长时间,到了多长时间就一定要修改密码,如果设置为9999999这是永不过期,
7. password warning period:密码过期前多少天开始警告
8. password inactivity period:密码锁定前不激活几天的警告,即是登录就让你要修改密码,不然不让你登录。过了这几天还没修改密码则自动锁定,自动锁定则是密码那里有两个!!
9. account expiration date:指定账户的过期时间,就是从建立就可以指定,比如指定这个账户两个月后过期,则到了两个月这个账户就自动过期
10. reserved field:保留字段,保留给将来使用。

2.5 用户管理命令

2.5.1 useradd命令

useradd -u 1000:为用户指定uid


[root@localhost ~]# useradd -u 1005 alibaba
[root@localhost ~]# tail -1 /etc/passwd
alibaba:x:1005:1005::/home/alibaba:/bin/bash

useradd -g 1000:为用户指定基本组,基本组必须事先存在

[root@localhost ~]# useradd -g 100 alibaba1
[root@localhost ~]# id alibaba1
uid=1006(alibaba1) gid=100(users) 组=100(users)

useradd -G 1000:为用户指定附加组,可以有多个


[root@localhost ~]# useradd -G test  alibaba2
[root@localhost ~]# id alibaba2
uid=1007(alibaba2) gid=1007(alibaba2) 组=1007(alibaba2),1001(test)

useradd -c 添加注释信息
useradd -d 指定路径(家目录在哪里)
useradd -s:当前可用的shell的路径


[root@localhost ~]# useradd -c maiyata -d /home/alibaba4 -s /bin/sh  alibaba3
[root@localhost ~]# finger alibaba3
Login: alibaba3                         Name: maiyata
Directory: /home/alibaba4               Shell: /bin/sh
Never logged in.
No mail.
No Plan.
[root@localhost ~]# 

useradd -r 添加一个系统用户(1-499)

[root@localhost ~]# useradd -r  alibaba4
[root@localhost ~]# id alibaba4
uid=498(alibaba4) gid=498(alibaba4) 组=498(alibaba4)
[root@localhost ~]# 

-m-k:如果没有家目录则强制生成家目录,并把家目录的框架文件从/etc/kel中复制过来
涉及到的几个重要的目录:

[root@localhost home]# cd /etc/skel
[root@localhost skel]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2
[root@localhost skel]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
[root@localhost skel]# which sh
/bin/sh

2.5.2 usermod命令

usermod:功能强大,选项和useradd差不多,基本上的东西都能改
usermod -u 修改uid

[root@localhost ~]# usermod -u 1000 maiyat
usermod:警告:/var/spool/mail/maiyat 不属于 maiyat
[root@localhost ~]# id maiyat
uid=1000(maiyat) gid=1000(maiyat) 组=1000(maiyat)
[root@localhost ~]#

usermod -g 修改gid

[root@localhost ~]# usermod -g 1001 maiyat
[root@localhost ~]# id maiyat
uid=1000(maiyat) gid=1001(test) 组=1001(test)
[root@localhost ~]# 

usermod -G 修改附加组,有副作用,如果修改了这个则原来的附加组会自动消失,-a -G,则是为用户追加附加组而不是之前的默认覆盖附加组

[root@localhost ~]# usermod -G 1005 maiyat
[root@localhost ~]# id maiyat
uid=1000(maiyat) gid=1001(test) 组=1001(test),1005(alibaba)
[root@localhost ~]# 
[root@localhost ~]# usermod -a -G 1000 maiyat
[root@localhost ~]# id maiyat
uid=1000(maiyat) gid=1001(test) 组=1001(test),1000(maiyat),1005(alibaba)
[root@localhost ~]# 

usermod -d -m:修改家目录必须和m的参数一起用,则之前家目录创建的文件会自动复制到新的家目录中去,这样用户还可以继续访问以前自己创建的文件
usermod -s 修改用户登录的shell
usermod -l 修改登录名
usermod -L 锁定用户账号
usermod -e 修改用户的过期时间
usermod -U 解锁账号

2.5.3 passwd命令

passwd -l 锁定用户
passwd -u 解锁用户
passwd -d 删除用户密码
passwd -n 最短使用天数
passwd -x 最长使用天数
eg: passwd -n 2 -x 50 Linux

2.5.4 change命令

chage -d :最近一次的修改时间
chage - E:过期时间
chage -I:非活动时间
chage -m:最短使用期限
chage -M:最长使用期限
chage -W;警告时间
原文地址:https://www.cnblogs.com/chacha51/p/13764861.html