linux中用户与用户组命令的使用方法-创新互联

linux的用户和用户组

用户是必须的吗?

十余年专注建站、设计、互联网产品按需定制服务,业务涵盖品牌网站建设成都做商城网站、成都微信小程序、软件系统开发、重庆APP开发等。凭借多年丰富的经验,我们会仔细了解每个客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联更提供一系列网站制作和网站推广的服务,以推动各中小企业全面信息数字化,并利用创新技术帮助各行业提升企业形象和运营效率。
用户:标识计算机上的资源的归属
密码:对用户的身份做验证

登录的时候计算机如何做身份验证?

在计算机内部预先有一个数据库,在数据库中保存用户名和对应的密码,用户登录时候通过比对数据库来检查用户和密码是否正确

什么是数据库?
用来保存数据的文件,数据库管理软件(oracle mysql sqlserver db2)

保存账号和密码的数据库文件

/etc/passwd  <<<< 保存系统中的全部的用户名
/etc/shadow  <<<< 保存各个用户的密码
/etc/group   <<<< 保存系统中的全部用户组名
/etc/gpasswd  <<<< 保存各个用户组的密码

windows下新建用户

计算机-管理-本地用户和组-用户-新建 (用户名 密码)
计算机-管理-本地用户和组-组-新建(用户组)添加用户
windows下有用户和组,linux中同样有用户和,linux中一个用户也可以同属多个组,100个用户授权的话需要授权100次,直接把用户加到组中,直接授权组

用户和用户组

用户:登录系统的用户名
用户组:多个用户的合集

用户组的作用

方便为多个用户批量授权

用户身份标识

计算机为每一个用户设置一个唯一的数字,当计算机识别用户的时候,通过
该数字来识别的,数字就是UID(User IDentifier)

用户组身份标识

GID

注意:为用户赋权的时候,其实是针对uid赋权的
例子:zs--uid=601
赋权:zs可以访问文件a.txt
本质:让uid为601的用户可以访问a.txt

/etc/passwd文件详解

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

文件的作用
这个文件中保存了系统中的全部用户,每行是一个用户
每个用户的信息包括7部分,如下
第一段:用户名
第二段:用户密码占位符,为了安全将密码放在另外一个文件中
(/etc/shadow)
第三段:用户的UID
第四段: 用户所在组的GID(该组是用户的基本组)
第五段:用户的描述信息(可以随便写)
第六段:用户的家目录
第七段:用户的shell类型
   常见的shell类型
   1:/bin/bash <<<< 默认是该shell的时候,可以登录系统
   2:/sbin/nologin  <<<该shell的用户是无法登录系统的
例子:统计有多少用户
   [root@localhost ~]# cat /etc/passwd | wc -l
例子:统计当前系统中有多少用户可以登录系统
   [root@localhost ~]# grep "/bin/bash$" /etc/passwd
   root:x:0:0:root:/root:/bin/bash
   zhangsan:x:500:500::/home/zhangsan:/bin/bash
   lisi:x:502:502::/home/lisi:/bin/bash
   zs:x:503:503::/home/zs:/bin/bash
   [root@localhost ~]# grep "/bin/bash$" /etc/passwd |wc -l
   4

用户的分类

管理员
   UID 0 
   特点:默认只有一个,就是root root不受任何权限的约束
系统用户
   UID 1-499
   特点:在安装完成linux之后或者安装了某个程序执行自动生成
   的用户,这类用户是默认情况不能登录系统的,这类用户存在的
   目的是为了运行特定的服务(程序、进程)
   默认系统用户也没有家目录
普通用户
   UID 500+
   特点:需要运行命令 useradd来创建
   普通用户的权限非常小,通常仅仅能在自己的家目录下进行操作
   该类用户的家目录/home下和用户同名的目录

用户组的分类

用户的基本组(用户的主组)
   在/etc/passwd中第四个字段(GID)所指向的组就是用户的基本组
用户的附件组
注意:一个用户可以属于多个组。同一时间,只能有一个是主组,其他的就是附加组,除了主组之外的其他组就是该用户的附加组

补充:在用useradd创建普通用户的时候,默认情况下,会创建一个组,组名和用户名
相同,该组默认就是该用户的基本组(主组)   
useradd bajie
tail /etc/passwd
cat /etc/group

补充:linux的文件属性
属主:文件的属主(谁创建的文件,文件的属主就是谁)
属组:设置文件对于一个特定用户组所具有的权限,这个组就是该文件的属组
注意:属组、属主默认都只有一个
如果一个用户既不是属主,也不是属组的组内用户,那么该用户就是"其他用户"

三类用户

属主
属组的组内用户
其他用户

创建用户

useradd命令
   作用:新建用户
   格式:useradd [options]用户名
   选项:
     -c "string" 设置新用户的描述信息
     -d "/path/to/dir" 设置用户的家目录
     -e 月月/日日/年年:指定账号的过期日期
     -g GID:指定用户的主组ID号或名称
     -G GID,GID,GID:指定用户的附加组的ID号或名称
     -m 在创建用户的时候,如果用户家目录不存在,则自动创建(该选项
     自动使用)
     -M 不自动创建用户家目录
     -r 创建系统用户
       用此选项创建的用户有以下特点
         1、默认用户无家目录
         2、默认用户uid<500
         3、默认用户的shell是bash
         4、用户可以登录系统
     -s shType:指定用户的shell类型
       常用的shell
         /bin/bash
         /sbin/nologin
     -u UID 指定用户的uid
     -u UID -o 指定让新用户使用一个现有的ID
   [root@localhost ~]# useradd -c "i am tom" tom
   [root@localhost ~]# tail /etc/passwd
   tom:x:505:505:i am tom:/home/tom:/bin/bash

   useradd zhangsan  创建用户zhangsan
   tail /etc/passwd  查看用户是否存在
   id 用户名      可以查看用户是否存在

例子:新建用户jerry,要求主组为gp01,附加组为gp02 和gp03
   [root@localhost ~]# useradd -g gp01 -G gp02,gp03 jerry
   [root@localhost ~]# tail /etc/passwd
   [root@localhost ~]# tail /etc/group

例子:创建一个用户kity,要求将其创建为系统用户(无家目录,uid<500,不能登录系统)
   useradd -r -s /sbin/nologin kity

例子:新建用户2222并指定UID为600
   useradd -u 600 2222
   tail /etc/passwd
   lll:x:507:509::/home/lll:/bin/bash
   2222:x:600:600::/home/2222:/bin/bash

例子:新建用户dog,要求其uid为660,主组为gp02,附加组为gp01,gp03,家目录在/tmp/dog,指定shell类型为bin/bash
   useradd -u 660 -g gp02 -G gp01,gp03 -d /tmp/dog -s /bin/bash dog

groupadd命令
   作用:新建用户组
   格式:groupadd [选项]组名
   选项:-g:指定用户组的组id
   [root@localhost ~]# groupadd gp01 
   [root@localhost ~]# groupadd gp02
   [root@localhost ~]# groupadd gp03
   [root@localhost ~]# tail /etc/group
   gp01:x:506:
   gp02:x:507:
   gp03:x:508:

id命令

作用:显示指定用户的id信息
格式:id[选项]用户名
选项:
   -u:显示用户的UID
   -g:显示用户的主组的ID
   -G:显示用户的全部租的ID列表

   id -g hhhhh 
   useradd 
   [root@localhost ~]# useradd -u 670 -g gp01 -Ggp02,gp03 hhhhh
   [root@localhost ~]# id hhhhh
   uid=670(hhhhh) gid=506(gp01) groups=506(gp01),507(gp02),508(gp03)
   [root@localhost ~]# id -G hhhhh
   506 507 508
   [root@localhost ~]# id -g hhhhh
   506
   [root@localhost ~]# id -u hhhhh
   670

passwd命令

作用:修改用户的密码(给用户设置密码)
格式:passwd[选项]用户名
注意:
   1:passwd 用户 修改指定用户的密码
   2:passwd 修改当前用户的密码
   3:默认情况只有root用户,才能修改其他用户的密码,普通用户只能修改自己的密码
   选项:
   -l:锁定用户(只有root才能进行锁定操作)
   -u:解锁用户
   --stdin:从表示输出来读取内容,为用户设置密码(shell脚本中使用)

影子文件 /etc/shadow

作用:保存密码
root:$6$HhL6V5BM$f29xu.FUgGnQqNtmqLGAyOy/fLMlF/JepDTfgoaqvC4.b7wiVmMc7i3HRDMVNdYQACOK9d3.wsgbZi1hPAEoj/:17997:0:99999:7:::
第一个字段:login name :系统中存在的用户名
第二个字段:encrypted password :这里存放的是加密后的密码(单向加密)
     1:如果密码段中出现!或*,那么就不能用此密码登录系统
     2:如果密码段为空,则表示空密码,但是系统往往禁止使用空密码登录
     3:如果密码开头是*,表示密码被锁定了

第三个字段:date of last password change:密码上次修改的日期,这里所写的是举例
     1970-1-1所经过的天数。
     (1)如果该字段为0,会要求用户在下次登录的时候修改密码
     (2)该文件不能为空
第四个字段:minimum password  age ,两次修改密码的最短时间
     1、为空或者为0,表示没有最短时间限制

第五个字段:maximum password age:密码的最长有效期
     1、如果字段为空或者99999,表示不限制最长有效期
     2、如果最长时间小于最短时间,则禁止该用户修改密码
第六个字段:password warning period
     指定在密码到期前N天发送报警信息
     1、如果为0,表示不会自动发送报警信息
     2、在此期间内,用户可以正常登陆系统
第七个字段:password inactivity period:密码的非活动时间
     1、在此期间登陆系统的时候,必须先修改密码才能登陆系统。
     2、如果在此阶段仍然没有修改密码,那么就真的登陆不上了(找管理员处理)
第八个字段:account expiration date:用户的过期日期
     1、表示方式也是用距离1970.1.1所经过的天数
     2、该字段为空,表示该字段永不过期
     3、0表示用户被禁用

第九个字段:reserved field :尚未使用

注意:
密码过期:修改密码可以继续使用
账户过期:账户再也不能登录系统

/etc/passwd <<<用户基本信息 ,useradd新建用户,用户的信息保存在这里
/etc/group  <<<用户组信息,groupadd新建用户组,用户组的信息保存在这里。
/etc/shadow <<<用户的密码文件,passwd的时候,其实就是修改这个文件中的内容

userdel命令

作用:删除用户
   格式: userdel [options] 用户名
   选项:
   -r :在删除用户的同时,删除用户的家目录

chsh命令

作用:修改用户的shell类型
格式:chsh[-s type]username
(本质上就是修改/etc/passwd中的内容)

chfn命令

作用:修改用户的注释信息

usermod命令

作用:修改用户的基本信息(/etc/passwd)
格式:usermod [options]username
选项:
   -g GID:修改基本组
   -G GID: 修改附加组
   -u UID:修改uid值
   -C string:修改用户的描述
   -d /path/dir:修改用户的家目录
   -s SHELL:修改用户的shell类型
   -l newName:修改用户的名称
   -L 锁定用户
   -U 解锁用户

su命令

作用:切换用户
格式:[options]用户
选项
   -[l]:切换用户,并且继承用户的环境变量
   -c 命令:在不切换用户情况下,以指定用户的身份来执行命令

注意:

su切换用户后返回,需要执行命令exit

例子:以root身份执行mkdir命令

$ su - -c "mkdir /abc1" root

生产环境的注意事项:

在生产环境中,如果员工离职,通常是禁用用户,在短时间内是不会删除用户的,更不会删除用户的家目录以及家目录中的文件。

禁用用户

修改shell类型/sbin/nologin
在密码前加上!
设置账户的过期时间为0(密码文件的第八段)

权限

r:读  可以执行cat、head、more、less等命令读取文件中的内容,也可以用vi打开并读取文件中的内容
w:写  可以用vi或者重定向等操作文件中写入内容或者修改其中的内容
x:执行 可以执行文件(把程序转换成进程)

目录的权限

r:可以执行ls命令来查看目录下的文件有哪些
w:可以在目录下执行文件的创建和删除等操作
x:可以执行cd命令

用户的角色有三类

属主用户(u)user
属组用户(g)group
其他用户(o)other
全部用户(a)all

文件的权限位一共有10位
第一位:表示文件的类型

-:一般文件
d:目录
l:链接文件
s:套接字文件
第二到第四位:表示文件的属主所具有的权限
第五到第七位:表示文件的属组的组内用户所具有的权限
第八到第十位,表示系统中的其他用户所具有的权限
注意:
1、每一类用户的权限的顺序都是:读权限、写权限、执行权限
2、如果用户有对应的权限,就出现字符,如果没有对应的权限就用-表示。

例子:[root@localhost tmp]# ls -l 1.txt 
    -rw-r--r-- 1 root bin 149 Apr 16 18:22 1.txt
文件的属主权限:可读可写
文件的属组用户权限:只读权限
其他用户的权限:只读权限

chown命令

作用:修改文件的属主
格式:chown userName [-R]fileNAme
选项: -R 在修改目录的时候,将目录和目录中的文件都一并修改
例子:将文件a.txt的属主改为zhangsan
chown zhangsan a.txt

例子:将目录yunwei和yunwei中的文件的属主都修改为zhangsan
chown -R zhangsan yunwei

chgrp命令

作用:修改文件的属组
例子:将文件a.txt的属组改为tom
chgrp tom a.txt
例子:将文件a.txt的属主改为zhangsan ,属组改为tom
chown zhangsan.tom a.txt 
或者
chown zhangsan:tom a.txt
注意:
修改属主或者属组的时候,那个用户名和组名是存在的,否则报错。

chmod命令

作用:修改文件的权限
格式:chmod 权限  -R fileName
选项:-R 
方式:
   +:增价某项权限
   -:去除权限
   =:将权限修改为指定的类型(和原来的权限无关)

例子:修改文件a.txt的权限
去除属主的写权限
将属组的权限设置为读和写
给其他用户添加写权限
chmod u-w,g=rw,0+w a.txt

例子:给全部用户都添加上执行权限
chmod ugo+x a.txt
或者
chmod a+x a.txt
或者
chmod +x a.txt

例子:去除其他用户的全部权限
chmod o=  a.txt
chmod o-rwx a.txt

基于数字表示文件的权限

r:4
w:2
x:1
---  000  0
--x  001  1
-w-  010  2
-rx  011  3 
r--  100  4
r-w  101  5
rw-  110  6
rwx  111  7

例子:将文件a.txt的属主改为可读可写,属组改为可读,其他用户没有任何权限

#chmod 640 a.txt

创建用户的原理

和用户相关的文件
1、/etc/passwd
2、/etc/shadow
3、/etc/group
4、/etc/skel            <<<<用户家目录的模版
5、/etc/login.defs         <<<<控制新建用户的默认属性
6、/etc/defaults/useradd      <<<<控制新建用户的默认属性
7、/var/spool/mail/用户名

新用户的家目录如果生成

1、将/etc/skel目录复制home下,改名为和用户名相同
2、将该目录的属主和属组改为用户名
3、将该目录的权限设改为700
假设新建一个用户laosun
#cp r /etc/skel /home/laosun
#chown -R laosun.laosun /home/laosun
#chmod -R 700 /home/laosun

MAIL_DIR   /var/spool/mail 指定新建用户的邮件文件的默认位置
(默认邮件文件的名称和用户名相同)
PASS_MAX_DAYS  99999
新用户的密码最长有效期

PASS_MIN_DAYS  0
修改密码最短间隔时间

PASS_MIN_LEN   5
普通用户密码的最短长度

PASS_WARN_AGE  7
密码到期前警告时间

UID_MIN      500
新建普通用户的默认UID最小值

UID_MAX     60000
新建普通用户的默认UID大值

GID_MIN      500
新建普通用户的默认GID最小值

GID_MAX     60000
新建普通用户的默认GID大值

CREATE_HOME yes
是否默认创建用户家目录

UMASK      077
反向掩码值(用来控制新建文件和目录的默认权限值)

USERGROUPS_ENAB yes
当用户组中没有用户了,是否删除用户组

ENCRYPT_METHOD SHA512
指定加密算法
SHA512
MD5

加密后的密码由三部分构成

$6$qSBbNTqA$ESH1UDekytAKPw4olQNulWQv/uZxOJETUQOcB
$加密算法$随机字符串$加密后的数据
说明:
加密算法:
 1、表示MD5加密
 6、SHA512加密

vim /etc/default/useradd 

# useradd defaults file
GROUP=100         
HOME=/home        <<<<<默认普通用户的家目录的位置
INACTIVE=-1        <<<<<设置新用户账号是否过期。-1表示不启用
EXPIRE=          <<<<<设置新建账户的过期日期,空白表示不启用
SHELL=/bin/bash      <<<<<设置新建用户的默认shell类型
SKEL=/etc/skel      <<<<<指定新建用户的家目录模版目录
CREATE_MAIL_SPOOL=yes   <<<<<设置是否给新建的用户创建用户邮件

新建用户

useradd
passwd

完成的操作

1、/etc/passwd 添加一行
2、/etc/shadow 添加一行
3、/etc/group  添加一行
4、创建用户家目录
5、创建用户邮件文件

例子:创建用户timi,要求uid 777,主组hadoop (800)

附加组 python (850) hbase(860) 家目录 /home/timi
描述 i am timi
密码设置为123 最少使用3天才能修改,最长使用30天,到期
前5天发送报警,非活动时间2天。

实现步骤:

1、创建用户基本信息(/etc/passwd)
vim /etc/passwd
timi:x:777:800:i am timi:/home/timi:/bin/bash

2、检查用户
id timi
3、使用openssl来生成密码
格式:openssl -1 --salt "string" 
说明:
   -1 表示md5加密算法
   --salt表示在加密的时候掺入杂志(提升安全性)
[root@localhost ~]# openssl passwd -1 -salt "abc123"
Password: 
$1$abc123$uE7.dLhrmG/qKHqAIlwPi.

4、修改密码文件

timi:$1$abc123$uE7.dLhrmG/qKHqAIlwPi.:18005:3:30:5:2::

5、创建用户组
   vim /etc/group

   hadoop:x:800:
   python:x:850:timi
   habse:x:860:timi

6、创建用户家目录
# cp -r /etc/skel /home/timi
# cd /home/
# chown -R timi.hadoop /home/timi/
# chmod -R --reference=*** timi  ***已经存在于/home中
   (把timi的权限参照改为***的权限)
7、创建用户邮件
cd /var/spool/mail/
ls
touch timi
chmod 660 timi
chown timi.mail timi
8、测试用户是否可以正常使用

补充: 
#useradd guizi
useradd 警告:此主目录已经存在。
不从sekl目录里向其中复制任何文件。  <<<<<1
正在创建信箱文件,文件已存在     <<<<<2
新建用户出现这个错误信息,就表示
1、表示用户的家目录已经存在
2、表示用户的邮件文件已经存在

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:linux中用户与用户组命令的使用方法-创新互联
文章源于:http://scyanting.com/article/ehcji.html