热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS系统管理_用户和用户组

一:新建用户和用户组:useradd和groupadd1,useradd的参数:-u:指定UID标记号-d:指定宿主目录,缺省为/home/用户名-e:指定账号失效时间(下面usermod也有此选项)-g:指定所属的

一:新建用户和用户组:useradd和groupadd

   1,useradd的参数:

   -u:指定UID标记号

   -d:指定宿主目录,缺省为/home/用户名

   -e:指定账号失效时间(下面usermod也有此选项)

   -g:指定所属的基本组(组名或GID)

   -G:指定所属的附加组(组名或GID)

   -M:不为用户建立并初始化宿主目录、

   -s:指定用户的登录shell(默认为/bin/bash,一般不用改,在建立非登录用户的时候可以指定

   为/sbin/nologin)

   注:这些参数都能分开用,不冲突的可以在建立用户的时候连着用。

   示例1:添加用户stu01,指定UID为520,宿主目录为/public/stu01,指定基本组为users(注:系统中本身就

   存在users这个组GID为100),附加组为tech:

   [root@localhost ~]# useradd -u 520 -d /public/stu04 -g users-G tech stu01

   [root@localhost ~]# id stu01

   uid=520(stu01) gid=100(users) groups=100(users),200(tech)

   示例2:添加用户stu02,不为用户建立宿主目录:

   [root@localhost ~]# useradd -M -s /sbin/nologin stu02   //创建一个非登录用户stu02

   [root@localhost ~]# cat /etc/passwd | grep stu02

   stu02:x:1001:1001::/home/stu02:/sbin/nologin      //-s参数指定bash shell

   2,groupadd的参数:

   gourpadd [-g GID] 组名

   -g参数指定了新建用户组的GID

   [root@localhost ~]# groupadd -g 600 stu //添加一个组stu,指定其GID为600

   [root@localhost ~]# cat /etc/group | grep stu   //查看stu组的信息

   stu:x:600:


二:删除用户和用户组

   1,userdel

   -格式:userdel [-r] 用户名

   添加-r选项,宿主目录/用户邮件也一并删除

   示例:

[root@localhost~]# useradd user1;useradd user2 //添加用户user1和user2

[root@localhost~]# ll -d /home/user1/ /var/mail/user1 /home/user2/ /var/mail/user2 //查看user1、user2的宿主目录和邮件文件是否存在

drwx------ 3 user1 user1 4096 02-1809:53 /home/user1/

drwx------ 3 user2 user2 4096 02-1809:53 /home/user2/

-rw-rw---- 1 user1 mail     0 02-18 09:53 /var/mail/user1

-rw-rw---- 1 user2 mail     0 02-18 09:53 /var/mail/user2

[root@localhost~]# userdel user1 ; userdel -r user2    //加不加-r的区别

[root@localhost~]# ll -d /home/user1/ /var/mail/user1 /home/user2/ /var/mail/user2

ls:/home/user2/: 没有那个文件或目录//加-r之后删除宿主目录

ls:/var/mail/user2: 没有那个文件或目录//加-r之后删除邮件文件

drwx------ 3 1002 1002 4096 02-1809:53 /home/user1/

-rw-rw---- 1 1002 mail    0 02-18 09:53 /var/mail/user1

[root@localhost~]#

   2,groupdel:删除用户组

   -格式:groupdel组名

   -删除的目标组不能是用户的基本组。

-在删除用户组的时候,如果该组为某个成员的私有组,则无法删除,必须先删除组里面的成员,才能成功删除该组。

[root@localhost~]# id user1    //查看user1的基本组和附加组

uid=1002(user1) gid=1002(user1) groups=1002(user1),600(stu)

[root@localhost ~]# grep stu /etc/group

stu:x:600:user1,user2

上面的操作可以看到,user1的基本组为user1,附加组为stu,那么现在只能删除stu,而不能直接删除组user1,因为user1组是一个基本组,要想删除user1,必须先删除user1用户,再删除user1组,而stu组不是一个基本组,只是user1和user2的附加组,所以可以直接删除。

[root@localhost~]# groupdel user1  //尝试删除user1用户组,因为user1组为user1的基本组,所以需要先删除user1用户,才能删除user1组。

groupdel:不能删除用户的主组。

[root@localhost~]# groupdel stu

[root@localhost~]# grep stu /etc/group //删除stu组之后,不能看到/etc/group文件里面的stu组的信息了。


三:为用户和用户组添加密码

   1,为用户添加密码:

Passwd命令:

选项有:

-d :清空用户的密码,使之无需密码即可登录

-l :锁定用户账号

-S :查看用户账号的状态(是否被锁定)

-u :解锁用户账号

- - stdin:标准输入(比如管道)取密码

注:删除密码用passwd ?而不能用echo “” | passwd - -stdin 用户名

示例:

[root@localhosthome]# cat /etc/shadow| grep user3      //查看user3是否有密码

user3:$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhosthome]# passwd -d user3  //使用-d选项删除密码

Removing passwordfor user user3.

passwd: Success

[root@localhosthome]# cat /etc/shadow| grep user3      //再次查看,密码取消

user3::16119:0:99999:7:::

[root@localhosthome]#

示例:

如果修改一个用户的密码,可以直接输入passwd 用户名,然后进入交互式的密码输入去人,使用- -stdin使用非交互式设置密码,直接将密码导入。

[root@localhost/]# echo "123" | passwd --stdin user3       //设置user3的密码为123,使用--stdin为面交互式导入密码

Changing password for user user3.

passwd: all authentication tokensupdated successfully.

[root@localhost/]# passwd -l user3 //锁定user3账户

Locking password for user user3.

passwd: Success

[root@localhost/]# grep user3 /etc/shadow  //查看锁定账户密码信息,有两个“!”

user3:!!$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhost/]# passwd -S user3 //用-S查看是否被锁定

user3 LK 2014-02-18 0 99999 7 -1(Password locked.)

[root@localhost/]# passwd -u user3 //-u参数为解锁

Unlocking password for user user3.

passwd: Success.

[root@localhost/]# grep user3 /etc/shadow  //解锁之后,该账户密码段没有“!”

user3:$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhost/]#

2,用户组的密码gpasswd

gpasswd 组名:进入交互式的密码输入确认。

gpasswd ?组名:-r选项为移除密码,gpasswd ?组名为清空该组密码

组密码的用途:主要是一些用户想要加入组,那么需要用到的这个组账户的密码,而这个用户加入的时候也是临时加入的,用exit即可退出该组。



四:用户组成员的添加和删除

   1,gpasswd在用户组中的应用

-A :定义组管理员列表(可以在/etc/gshadow文件里查看组管理员和组成员)

-a :添加组成员,每次只能加一个

-d :删除组成员,每次只能删一个

-M :定义组成员列表,可设置多个(为覆盖操作,在定义之后,之前组内用户将被删除;注意在写多个成员列表的时候,用逗号隔开)

示例:

[root@localhost ~]# grep user /etc/gshadow  

user:!::

[root@localhost ~]# gpasswd -a user1 user   //将账户user1加入到user组中

正在将用户“user1”加入到“user”组中

[root@localhost ~]# gpasswd -a user2 user   //将user2加入到user组中

正在将用户“user2”加入到“user”组中

[root@localhost ~]# grep user /etc/gshadow | tail -1    //查看user用户组的成员

user:!::user1,user2

[root@localhost ~]# gpasswd -M stu01,stu02 user //-M参数覆盖添加多个用户

[root@localhost ~]# cat /etc/gshadow | tail -1  //再次查看,user1和user2被覆盖

user:!::stu01,stu02

[root@localhost ~]# gpasswd -d stu01 user       //将stu01从user组中删除

正在将用户“stu01”从“user”组中删除

[root@localhost ~]# cat /etc/gshadow | tail -1

user:!::stu02       //删除后只剩下stu02用户

[root@localhost ~]# gpasswd -A stu02 user       //将stu02设置为管理员

[root@localhost ~]# grep user /etc/gshadow | tail -1

user:!:stu02:stu02      //gshadow文件中,第三个字段为该组的管理员账户,为stu02

[root@localhost ~]#


2,usermod主要是对用户的属性进行更改,可以增加用户成员的所属附加组

只是用usermod的 -a-G选项(-a表示添加,-G指定组,-a -G为新加一个附加组)

命令:usermod -a -G 用户组 用户名

[root@localhost~]# usermod -a -G tech stu02    //为stu02增加一个附加组tech

[root@localhost~]# id stu02

uid=501(stu02) gid=1201(nsd)groups=1201(nsd),200(tech),1204(user)


五:用户和组属性的查看和修改

   1,usermod :主要针对用户与组之间属性的更改

格式:usermod [选项](选项可以有多个)用户名 

-l :更改用户账号的登录名称

-L :锁定用户账户(注:用usermod ?L锁定一个账户的时候可以用passwd?u直接解锁,但是用passwd ?l锁定的账户,用usermod?U解锁的时间,需要解锁两次,因为,passwd ?l锁定的账户密码前面有两个!,而usermod ?L锁定的账号密码前面有一个!,可以通过查看/etc/gshadow文件里面的密码段来验证。)

-U :解锁用户账户

-u、-d、-e、-g、-G、-s :与useradd相同

-a :和-G搭配使用为添加该用户的附加组(只是用-G的时候,为修改附加组)

示例:

usermod -e 20140630(或2014-06-30) user1 :为修改user1账户失效时间为20140630

但是在用chage -E 2014-06-30 user1的时候,不能用20140630

[root@localhost~]# cat /etc/shadow | grep user1

user1:!!:16119:0:99999:7:::

[root@localhost~]# usermod -e 20140630 user1   //修改user1的账户失效时间

[root@localhost~]# cat /etc/shadow | grep user1

user1:!!:16119:0:99999:7::16251:

[root@localhost~]# usermod -l user01 user1 //修改user1的登录名为user01

usermod:警告:/var/spool/mail/user1 不属于 user1

[root@localhost~]#


2,chage :主要针对用户的密码进行设定

-l :列出密码有效信息

-E :指定账户过期时间,YYYY-MM-DD

-I :指定当密码失效后多少天锁定账号

-m :指定密码的最小天数

-M :指定密码的最大天数

示例:

[root@localhost~]# chage -l  user01    //查看user01的密码信息

最近一次密码修改时间:2月 18, 2014

密码过期时间:从不

密码失效时间:从不

帐户过期时间:从不

两次改变密码之间相距的最小天数:0

两次改变密码之间相距的最大天数:99999

在密码过期之前警告的天数:7

[root@localhost ~]# cat /etc/shadow | grep user01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:0:99999:7:::

[root@localhost ~]# chage -E 2014-07-10 user01      //修改user01的账户过期时间

[root@localhost ~]# chage -I 3 user01       //修改user01用户的密码失效3天后锁定

[root@localhost ~]# chage -m 10 user01  //密码修改之后10天内不准修改

[root@localhost ~]# chage -M 40 user01  //密码修改后40天之后必须再次修改密码

[root@localhost ~]# cat /etc/shadow | grep user01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16261:

[root@localhost ~]# chage -l  user01

最近一次密码修改时间:2月 18, 2014

密码过期时间:3月 30, 2014

密码失效时间:4月 02, 2014

帐户过期时间:7月 10, 2014

两次改变密码之间相距的最小天数:10

两次改变密码之间相距的最大天数:40

在密码过期之前警告的天数:7

[root@localhost ~]# 


3,id

-在命令行输入id,为查看该账户的用户名及用户所属组等信息;

[root@localhost~]# su - frank

[frank@localhost~]$ id     //id命令直接查看当前用户的ID和所属组

uid=507(frank) gid=507(frank)groups=507(frank)

-id 用户名 :表示查看该用户的相关信息

[root@localhost~]#id frank        //查看frank用户的用户ID和所属组

uid=507(frank) gid=507(frank)groups=507(frank)

[root@localhost~]# id user01       //查看user01的用户ID和所属组

uid=1005(user01)gid=1005(user1) groups=1005(user1)

[root@localhost~]#

-id ?gn :查看当前用户的所属组

[root@localhost~]# su - frank

[frank@localhost~]$ id -gn     //查看当前所属组,为frank组,下面修改一下

frank

[frank@localhost~]$ exit

logout

[root@localhost~]# usermod -g tech frank   //将frank的基本组修改为tech

[root@localhost~]# su - frank

[frank@localhost~]$ id -gn     //用id -gn查看当前组

tech

[frank@localhost~]$


4newgrp 

newgrp 用户组 :为当前用户临时增加一个用户的附加组(可以用exit退出该附加组)

示例:

[root@localhost~]# su - frank

[frank@localhost~]$ id

uid=507(frank) gid=200(tech) groups=200(tech)

[frank@localhost~]$ newgrp user

密码:  //这个密码为用gpasswd来设置的用户组密码,当有新用户加入是,需要输入,如果没有密码,直接确定即可加入

[frank@localhost~]$ id -gn

user   //用户组为user,未修改之前为tech

[frank@localhost~]$ id

uid=507(frank) gid=1204(user) groups=200(tech),1204(user)

[frank@localhost~]$ exit       //只是临时增加的附加组,可以用exit退出该组

exit

[frank@localhost~]$ id

uid=507(frank) gid=200(tech) groups=200(tech)

[frank@localhost~]$ id -gn

tech       //退出后的用户组还未之前的tech

[frank@localhost~]$


5,groups :查看用户所属组

groups :查看当前用户的所属组(包括基本组和附加组)

groups 用户名 :查看该用户所属组(包括基本组和附加组,前面的为基本组)

注:也可以查看/etc/group和/etc/gshadow文件的第四段。

[root@localhost ~]# groups  //查看当前用户的所属组

root bin daemon sys adm disk wheel

[root@localhost ~]# groups user2    //查看user2用户的所属组

user2 : user2 tech      //那么user2用户的基本组为user2,有一个附加组,为tech

[root@localhost ~]#


六,附:用户和用户组的密码及新建用户宿主目录里面的隐藏文件

1,用户的密码 :/etc/passwd 和/etc/shadow


/etc/passwd文件:保存了用户账号的基本信息

[root@localhost~]# head -1 /etc/passwd

root:x:0:0:root:/root:/bin/bash

1    2 3 4 5    6     7

可以看到passwd里面的内容分为7个字段,分别用“:”隔开,每个字段的含义:

第一段:用户账号的名称

注:可使用user -l user1 user01修改

第二段 var cpro_id = "u6885494";

推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
author-avatar
维生素-熙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有