16、Linux用户和组管理命令演练和实战应用,,150R

一、内容回顾

bash  globing,*,?,[],[^]

IO重定向及管道  >  ,   >>  ,  2>  ,   2>>   &>  ,     &>>    >  /tmp/a.txt  2>&1  ,< ,  <<  命令tr  ,tee【三通】

用户管理基础概念,管理员和普通用户,普通用户分为系统用户和登录用户

组类别中,分为管理员组合普通用户组,每个用户都有其基本组和附加组,从普通用户上对比,有私有组和公共组。

三个关于用户和组的文件,/etc/passwd ,/etc/shadow , /etc/group

passwd  的文件行结构   用户名:密码: uid: gid:描述:家目录:用户的登录shell

shadow  的文件行结构   用户名:加密的密码: 最近一次修改密码的日期: 最短使用期限:最长使用期限:密码警告期限:非活动时间:过期时间:保留字段

group  的文件行结构   组名:组密码: gid: 组成员

密码存储格式,是单向加密的,并借助salt完成密码安全加强

md5sum   sha1sum    sha224sum    sha256sum   sha384sum    sha512sum

二、linux组

groupadd命令,用来添加组,使用方式为group  [选项]   group_name,相关参数首先是-g选项,指定GID,默认是上一个组的GID+1.其次就是-r参数,用来创建系统组

这里讲到了安全上下文,进程是以发起者的身份来运行的,用户赋予进程权限,进程以此权限访问文件,为了能够让服务进程或者后台进程以非管理员的身份运行,通常需要为此创建多个普通用户。

用例:

1、创建一个系统组,并指定组名为xiaoshou

# groupadd -r xiaoshou

# tail -3 /etc/group

ntp:x:38:

xiaoli:x:1002:

xiaoshou:x:990:

通过查看配置文件,可以看到新创建的系统组的GID为990

2、创建一个普通组,并指定组名为shengchan,并指明其gid为3000

# groupadd -g  3000 shengchan

# tail -3 /etc/group

xiaoli:x:1002:

xiaoshou:x:990:

shengchan:x:3000:

通过查看配置文件,普通组shengchan已经创建,并且GID为3000。

如果此时我们创建一个普通组,并不指定其GID,那么这个新创建的质检组(zhijian)的GID为3001

# groupadd zhijian

# tail -3 /etc/group

xiaoshou:x:990:

shengchan:x:3000:

zhijian:x:3001:

3、创建一个系统组,并指定组名为cangku,并指明其gid为360

# groupadd   -r  -g  360  cangku

# tail -3 /etc/group

shengchan:x:3000:

zhijian:x:3001:

cangku:x:360:

groupmod命令,用来修改组,使用方式为groupmod   [选项]   group_name,相关参数首先是-g NEW_GID,修改GID,其次是-n  new_name,修改组名称

用例:

1、修改cangku组的GID,变更后的GID 为700

# groupmod -g 700 cangku

# tail -3 /etc/group    

shengchan:x:3000:

zhijian:x:3001:

cangku:x:700:

2、修改cangku组的名称为项目[xiangmu]

# groupmod -n xiangmu cangku

//最后两个参数,第一个为新的组名称,第二个为原有的组名称

# tail -3 /etc/group    

shengchan:x:3000:

zhijian:x:3001:

xiangmu:x:700:  

groupdel命令,用来删除组,使用方式为group  [选项]   group_name,无可用选项,直接删除即可,但是必须组内没有用户,否则用户会无法找到组织

1、删除组xiangmu,zhijian

# groupdel   xiangmu

# groupdel   zhijian

# tail  /etc/group      

nfsnobody:x:65534:

libvirtdbus:x:992:

virtlogin:x:991:

centos:x:1000:

apache:x:48:

xiaoming:x:1001:

ntp:x:38:

xiaoli:x:1002:

xiaoshou:x:990:

shengchan:x:3000:

查看组配置文件

# tail /etc/group

三、linux用户

useradd命令,用来创建一个用户或者更新默认用户信息,使用方式为useradd   [选项]   用户名,相关参数首先是-u,--uid UID ,指定用户ID的数字值,其次是-g  ,--gid GID,指定基本组ID,这个组名称一定要先创建,否则会报错,-c选项,指明用户的注释信息。-G  GROUP1,GROUP2,...[GROUPN],指明用户所属的附加组,多个组之间用逗号分隔。-d  ,指定用户的家目录,通过复制/etc/skel此目录并重命名实现的。如果指定的家目录已经存在,那么,将不再复制/etc/skel此目录的内容至新创建用户的家目录。-s选项,指定用户的默认shell,可用的所有shell列表为/etc/shells文件,-r,创建一个系统用户,-M,创建一个用户,不创建其家目录

用例:

1、查看adduser和useradd之间的关系,然后可以确定,adduser只是个链接文件。

# file `which adduser`

/usr/sbin/adduser: symbolic link to `useradd'

# ll /usr/sbin/adduser

lrwxrwxrwx. 1 root root 7 Dec 16  2019 /usr/sbin/adduser -> useradd

2、添加一个用户,然后查看/etc/passwd文件的最后一行,用户创建成功,并且在/etc/group文件下创建了一个与用户同名的组。

# useradd orange

# tail -1 /etc/passwd

orange:x:1002:3001::/home/orange:/bin/bash

# tail -1 /etc/group

orange:x:3001:

3、添加一个指定uid值为1005的普通用户yoghurt。

# useradd  --uid 1005   yoghurt

//此--uid书写复杂,所以添加用户不怎么使用此格式的参数

# useradd  -u 1005   yoghurt  

# tail -1 /etc/passwd

yoghurt:x:1005:1005::/home/yoghurt:/bin/bash

4、添加一个指定uid值为1006的普通用户pork,其基本组为pig。

#groupadd  -g  1006 pig

# useradd  -u 1006   -g  pig  pork

//此处指定了用户基本组,执行者条命令后就不会创建与用户同名的组了

# tail -1 /etc/passwd

pork:x:1006:1006::/home/pork:/bin/bash

5、添加一个用户bear,指明注释信息This is a polar bear。

# useradd -c "This is a polar bear" -u 1007 bear

# tail -1 /etc/passwd

bear:x:1007:1007:This is a polar bear:/home/bear:/bin/bash

6、添加一个用户timberwolf,指明其附加组为bear。

# useradd -G bear timberwolf

# tail -1 /etc/passwd

timberwolf:x:1008:1008::/home/timberwolf:/bin/bash

# tail -2 /etc/group

bear:x:1007:timberwolf

//这里可以看到bear组里新增加了一个timberwolf成员

timberwolf:x:1008:

7、添加一个用户mapleleaf,指明其家目录为  /tmp/mapleleaf

# setenforce 0

#sed  -i   's#SELINUX=enforcing#SELINUX=disabled#g'   /etc/selinux/config

//临时和永久关闭selinux是必要的

# useradd -d  /tmp/mapleleaf mapleleaf

# tail -1 /etc/passwd

mapleleaf:x:1009:1009::/tmp/mapleleaf:/bin/bash

# ls -a /tmp/mapleleaf/

.  ..  .bash_logout  .bash_profile  .bashrc

8、首先创建目录/tmp/pear,在此目录创建一个krrli的文件,添加一个用户pear,指明其家目录为  /tmp/pear

# mkdir /tmp/pear

# touch /tmp/pear/krrli

# ll /tmp/pear/krrli

# useradd -d /tmp/pear  pear

# ll  /tmp/pear/

# ll -a /etc/skel

//查看skel目录的文件内容

9、查看系统上安装了哪些shell类型,并创建一个用户sugar,其指定shell  为/sbin/nologin

# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

# useradd -s /sbin/nologin  sugar

# tail -1 /etc/passwd

sugar:x:1011:1011::/home/sugar:/sbin/nologin

useradd  -D,查看系统添加账户的预设值

我们可以通过修改  /etc/default/useradd  文件,来改变系统创建用户的预设值

# ls /var/spool/mail

//系统会为创建的用户,在这个目录创建一个邮箱,用于接收邮件

# cat /etc/login.defs

//系统账户的预设值配置文件

# cat /etc/default/useradd

//修改系统创建用户的预设值文件

四、usermod命令介绍

usermod命令,修改用户帐户信息,使用格式为usermod    [options]    user_name

选项:

  • -a,--append     把用户追加到某些组中,仅与-G选项一起使用
  • -u,--uid            修改用户的uid,该uid必须唯一 
  • --g,--gid           修改用户的gid,改组一定存在
  • -G,--groups     把用户追加到某些组中,仅与-a选项一起使用 
  • -c,-comment   修改/etc/passwd文件第五段comment 
  • -d,--home       修改用户的家目录通常和-m选项一起使用 
  • -m,--move-home   修改用户的家目录通常和-d选项一起使用

       //-d:单独使用时,只是把保存在/etc/passwd这个配置文件当中的源目录名改成指定的新目录名,并不会把源目录下的内容移动到新目录下,如果要把源目录下的内容移动新目录下,则要和-m选项一起使用,才会把源目录下的内容移动到新目录下。-m:与-d一起使用时会将原有的家目录移动要指定目录并根据需要改名。

  • -l,--login         修改用户的登录名称
  • -s,--shell        修改用户的默认shell
  • -L,--lock         锁定用户的密码,在用户密码之前加    "!"
  • -U,--unlock    解锁用户的密码
  • -U  解除密码锁定。

五、userdel命令介绍

userdel命令,删除用户,使用格式为userdel    [options]    user_name

选项:

  • -r     删除用户时同时删除用户家目录

请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

#userdel -r linuxman  

//删除用户linuxman,其家目录及文件一并删除


用例:

1、创建用户yangtree,UID为1200,基本组为yangtree,附加组为forest(GID为1400)和plant(GID为1500)。

# groupadd -g 1400 forest

# groupadd -g 1500 plant

# tail -2 /etc/group

# useradd yangtree -u 1200 -m -G forest,plant

2、创建用户xuehua,注释信息为“It snowed on 2021”,默认shell为/bin/bash

# useradd -c "It snowed on 2021"  -s /bin/bash  xuehua

# tail -1 /etc/passwd

3、修改xuehua用户的家目录为/var/opt/xuehua,要求其原有文件仍能被用户访问

# usermod  -m -d   /var/opt/xuehua  xuehua

# ll -a   /var/opt/xuehua

4、为xuehua用户新增附加组,water

# groupadd   water

# usermod   -a   -G  water   xuehua

# tail -1 /etc/group

water:x:3002:xuehua

六、passwd命令介绍

passwd命令,修改用户密码,使用格式为

passwd  [-k]  [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays]

      [-i inactivedays] [-S] [--stdin] [username]

选项:

  • passwd 不加参数,修改登录用户的密码
  • passwd  xuehua   修改xuehua用户的密码,仅root用户有此权限
  • -l,-u   锁定和解锁用户
  • -d    清除用户密码串
  • -e     date   设定用户的过期期限,后面跟的是日期
  • -i      days   设定用户的非活动期限,
  • -n     days   设定密码的最短使用期限
  • -x     days   设定密码的最长使用期限
  • -w    days   设定警告期限
  • --stdin           可以使用命令重定向的方式给用户设置密码

# echo  "xuehuanum.1"  |  passwd --stdin   xuehua

        Changing password for user xuehua.

        passwd: all authentication tokens updated successfully.  

用例:

1、删除用户centos的密码。

#cat /etc/shadow | grep centos

centos:$6$OdnYfNv.$alife9pJze2/69aKqU30p/4ZRkzpSFSl1xADGmtGMERD2Aint.7K4EdYOpV9SczE87kBy1vdHe/dA.3Fi7Hoy0:18688:0:180:15:::

# passwd -d centos

Removing password for user centos.

passwd: Success

# cat /etc/shadow | grep centos

centos::18688:0:180:15:::

七、gpasswd命令介绍

gpasswd命令, 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除,使用格式为  gpasswd [option] group

选项:

  • -a:添加用户到组;
  • -d:从组删除用户;
  • -A:指定管理员;
  • -M:指定组成员和-A的用途差不多;
  • -r:删除密码;
  • -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

用例:

1、给forest组添加组密码。

# tail -10 /etc/gshadow

bear:!::timberwolf

timberwolf:!::

mapleleaf:!::

pear:!::

sugar:!::

forest:!::yangtree

plant:!::yangtree

yangtree:!::

xuehua:!::

water:!::xuehua

# gpasswd forest

Changing the password for group forest

New Password:

Re-enter new password:

1、给forest组添加组密码的意义,让其他不属于本组的用户    可以临时当做基本组。

# tail /etc/passwd

orange:x:1002:3001::/home/orange:/bin/bash

yoghurt:x:1005:1005::/home/yoghurt:/bin/bash

pork:x:1006:1006::/home/pork:/bin/bash

bear:x:1007:1007:This is a polar bear:/home/bear:/bin/bash

timberwolf:x:1008:1008::/home/timberwolf:/bin/bash

mapleleaf:x:1009:1009::/tmp/mapleleaf:/bin/bash

pear:x:1010:1010::/tmp/pear:/bin/bash

sugar:x:1011:1011::/home/sugar:/sbin/nologin

yangtree:x:1200:1200::/home/yangtree:/bin/bash

xuehua:x:1201:1201:It snowed on 2021:/var/opt/xuehua:/bin/bash

# su - xuehua

$ id xuehua

uid=1201(xuehua) gid=1201(xuehua) groups=1201(xuehua),3002(water)

//可以确认现在的雪花用户的基本组是xuehua

$ newgrp forest

//临时切换新基本组

Password:

$ id

uid=1201(xuehua) gid=1400(forest) groups=1400(forest),1201(xuehua),3002(water)

newgrp命令,临时切换指定的组为基本组

chage命令,是用来修改帐号和密码的有效期限,使用格式为  chage [options] LOGIN

选项:

  • -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
  • -M:密码保持有效的最大天数。
  • -w:用户密码到期前,提前收到警告信息的天数。
  • -E:帐号到期的日期。过了这天,此帐号将不可用。
  • -d:上一次更改的日期。
  • -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
  • -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

用例:

1、修改root用户密码的过期时间为60天

# chage -l root

Last password change                                    : never

Password expires                                        : never

Password inactive                                       : never

Account expires                                         : never

Minimum number of days between password change          : 0

Maximum number of days between password change          : 99999

Number of days of warning before password expires       : 7

# chage -M 60 root

# chage -l root

Last password change                                    : never

Password expires                                        : never

Password inactive                                       : never

Account expires                                         : never

Minimum number of days between password change          : 0

Maximum number of days between password change          : 60

Number of days of warning before password expires       : 7

2、修改root用户的过期日期

# chage -E 2099-04-29 root

# chage -l root          

Last password change                                    : never

Password expires                                        : never

Password inactive                                       : never

Account expires                                         : Apr 29, 2099

Minimum number of days between password change          : 0

Maximum number of days between password change          : 60

Number of days of warning before password expires       : 7

3、给实习生intern设置账户2021年5月2日过期,密码60天后过期,密码过期前7天开始收到告警信息

# useradd intern

# chage -E  2021-05-02  -M 60  -W 7 intern    

# chage -l intern  

Last password change                                    : Mar 02, 2021

Password expires                                        : May 01, 2021

Password inactive                                       : never

Account expires                                         : never

Minimum number of days between password change          : 0

Maximum number of days between password change          : 60

Number of days of warning before password expires       : 7

4、/etc/shadow文件各个字段的解释

# tail /etc/shadow  |  grep yang      

yangtree:!!:18687:0:99999:7:::

1:用户名;

2:加密的密码

3:密码最后一次修改的时间      (chage -d)

4:密码最小修改间隔时间         (chage -m)

5:密码的有效期                       (chage -M)

6:密码需要变更前的警告天数  (chage -W)

7:密码过期后的宽限天数         (chage -I)

8:账号失效日期                       (chage -E)

id命令,显示真实有效的用户ID(UID)和组ID(GID),使用格式为 id [OPTION]... [USER]

选项:

  • -u    仅显示有效用户ID
  • -g  显示用户所属群组的ID
  • -G    显示用户的基本组和附加组
  • -n     显示用户的组名

用例:

# id

uid=0(root) gid=0(root) groups=0(root)

# id -u  yangtree

1200

# id -g  xuehua

1201

# id -G yangtree

1200 1400 1500

# id -G -n  yangtree

yangtree forest plant

su命令,完成用户登录的切换,使用格式为su [options...] [-] [user [args...]]

选项:

  • - ,-l                            登陆式切换,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root.
  •                                  不加选项,不会读取目标用户的环境及工作目录
  • -c   'command'          变更为帐号B 并执行指令(command)后再变回原来账户A

用例:

[root@node1 ~]# su - yangtree

[yangtree@node1 ~]$ pwd

/home/yangtree

[yangtree@node1 ~]$ exit

logout

[root@node1 ~]# su yangtree

[yangtree@node1 root]$ pwd

/root

[yangtree@node1 root]$ exit

exit

# su -  yangtree -c 'ls /etc'

其它命令简介:

chsh   用于更改使用者 shell 设定

chfn     修改用户信息

finger   查询用户信息

whoami   查询登录者信息

用例:

# chsh -s /sbin/nologin  xuehua

Changing shell for xuehua.

Shell changed.

# yum -y install finger  

# finger xuehua

Login: xuehua                           Name: It snowed on 2021

Directory: /var/opt/xuehua              Shell: /sbin/nologin

Last login Tue Mar  2 14:14 (CST) on pts/0

No mail.

No Plan.

# chfn xuehua  

Changing finger information for xuehua.

Name [it snowed on 2021 03]: it snowed all day of yesterday

Office [red  of river]: shangdong province

Office Phone [120]: 110

Home Phone [110]: 110

Finger information changed.


猜你喜欢

转载自blog.51cto.com/30bear/2645407
今日推荐