千家信息网

linux下用户(user)和用户组(group)命令-RH

发表于:2024-10-07 作者:千家信息网编辑
千家信息网最后更新 2024年10月07日,linux的用户和用户组用户是必须的吗?用户:标识计算机上的资源的归属密码:对用户的身份做验证登录的时候计算机如何做身份验证?在计算机内部预先有一个数据库,在数据库中保存用户名和对应的密码,用户登录时
千家信息网最后更新 2024年10月07日linux下用户(user)和用户组(group)命令-RH

linux的用户和用户组

用户是必须的吗?

用户:标识计算机上的资源的归属密码:对用户的身份做验证

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

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

什么是数据库?
用来保存数据的文件,数据库管理软件(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/passwdroot:x:0:0:root:/root:/bin/bashbin: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 bajietail /etc/passwdcat /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 doggroupadd命令    作用:新建用户组    格式: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的属主改为zhangsanchown zhangsan a.txt例子:将目录yunwei和yunwei中的文件的属主都修改为zhangsanchown -R zhangsan yunwei

chgrp命令

作用:修改文件的属组例子:将文件a.txt的属组改为tomchgrp tom a.txt例子:将文件a.txt的属主改为zhangsan ,属组改为tomchown 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.txtchmod o-rwx a.txt

基于数字表示文件的权限

r:4w:2x:1---   000   0--x   001   1-w-   010   2-rx   011   3 r--   100   4r-w   101   5rw-   110   6rwx   111   7例子:将文件a.txt的属主改为可读可写,属组改为可读,其他用户没有任何权限#chmod 640 a.txt

创建用户的原理

和用户相关的文件1、/etc/passwd2、/etc/shadow3、/etc/group4、/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/laosunMAIL_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指定加密算法SHA512MD5

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

$6$qSBbNTqA$ESH1UDekytAKPw4olQNulWQv/uZxOJETUQOcB$加密算法$随机字符串$加密后的数据说明:加密算法: 1、表示MD5加密 6、SHA512加密vim /etc/default/useradd # useradd defaults fileGROUP=100                HOME=/home               <<<<<默认普通用户的家目录的位置INACTIVE=-1              <<<<<设置新用户账号是否过期。-1表示不启用EXPIRE=                  <<<<<设置新建账户的过期日期,空白表示不启用SHELL=/bin/bash          <<<<<设置新建用户的默认shell类型SKEL=/etc/skel           <<<<<指定新建用户的家目录模版目录CREATE_MAIL_SPOOL=yes    <<<<<设置是否给新建的用户创建用户邮件

新建用户

useraddpasswd

完成的操作

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/passwdtimi:x:777:800:i am timi:/home/timi:/bin/bash2、检查用户id timi3、使用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:timi6、创建用户家目录# 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/lstouch timichmod 660 timichown timi.mail timi8、测试用户是否可以正常使用补充: #useradd guiziuseradd 警告:此主目录已经存在。不从sekl目录里向其中复制任何文件。   <<<<<1正在创建信箱文件,文件已存在         <<<<<2新建用户出现这个错误信息,就表示1、表示用户的家目录已经存在2、表示用户的邮件文件已经存在
0