Linux系统用户和组概述

 

 

版权声明:

#####################################################

本文内容来自《老男孩linux运维实战培训》学生―罗迪

如有转载,请务必保留本文链接及本内容版权信息。

欢迎广大运维同仁一起交流linux/unix网站运维技术!

QQ:923401910

E-mail:[email protected]

#####################################################

老男孩老师 QQ:49000448 31333741

网站地址:http://www.etiantian.org

老男孩博客:http://oldboy.blog.51cto.com

老男孩交流群246054962 208160987 22619930744246017 

网站运维交流群:114580181 45039636 37081784
#####################################################

1.linux用户和组的概述

无论哪种操作系统都有用户和组的概念,当我们想要去管理系统时就会使用一个用户的身份去管理。Linux 是一个多用户的操作系统,用户和用户组的管理是系统管理员的重要工作之一。在 Linux 系统中,每一个用户对应一个帐号这个号我们称为(UID)。系统安装完成后,系统本身已创建了一些特殊用户,它们具有特殊的意义,其中最重要的是超级用户,即 root

2.UIDGID

当我们登录系统时,系统并不会看你的用户名是什么,而是看用户的ID号。系统中的每一个用户账号对应的UID就是用户的ID 值,系统中每个用户的UID的值是唯一的,其中root用户的UID0,如果把普通用户的UID 改为0,那么就和root共用一个UID,这事实上就造成了系统管理权限的混乱。如果我们想用root权限,可以通过susudo来实现;切不可随意让一个用户和root分享同一个UID 

刚刚我们说UID,那什么又是GID呢,其实GIDUID差不多,从数字0开始算GID0的组让系统付予给root用户组;系统会预留一些较靠前的GID给系统虚拟用户用;每个系统预留的GID都有所不同,查看系统添加用户组默认的GID范围应该查看/etc/login.defs中的。

 

3.用户的分类

前面提到了系统中有root和一些系统默认的用户,那么还有其它的用户吗?有,好,我们下面就来看看linux系统中存在哪些用户,和用户所对应的UIDGID号。

Linux系统中的用户有root“系统超级管理员”、“普通用户”、“虚拟用户”以称系统用户这三类,虚拟用户无法登录系统,当一些程序需要运行时,程序就会去调用虚拟用户。

用户分类

UID/GID号范围

说明

root

0

Root用户是系统超级管理员,具有至高无上的权力。

虚拟用户

1-499

虚拟用户是系统默认所建立的用户,一般来说我们不会去改变UIDGID号。

普通用户

500~65535

普通用户是由系统管理员所建立的用户,系统员可以

4.添加用户

/etc/passwd/etc/shadow文件的说明:

/etc/passwd这个文件主要存储了用户的信息,在该文件中的每一行都代表一个账号。每一行都是以“:”作为分隔符,分隔成了7个部分:

[root@localhost ~]# more /etc/passwd

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

账号密码UIDGID说明信息家目录SHELL

l账号:主要用来对应UID

l密码:早期用户的密码存储在这个文件中,但这个文件的特性是所有程序都能够读取的。所以为了安全起见,现在的密码都存放到/etc/shadow文件中了。这里一般都用X来代替了,但是X不是用户真正的密码。

lUID:用户ID号(识别码),root用户的ID为“0

lGID:与/etc/group有关,/etc/group/etc/passwd的概念差不多

l说明信息栏:用来解释该账号的意义

l家目录:用户的家目录(用户登录时所进入的目录)默认所有用户的家目录为/home/

lSHELL:用于用户输入命令时的解释,默认的用户shellbash,有一个shell很特殊,那就是/sbin/nologin 当用户把默认shell设置成该shell时,用户将无法登录系统。

/etc/shadow存储了用户的密码,该文件默认是不让任何人查看的(除ROOT外),该文件也是以“:”作为分隔符,分隔成9个部分:

[root@localhost ~]# more /etc/shadow

root:$6$5sbsryf7PWG.IogF$E.U/Vj4CDWC07UZv3EMtdDTRA1u23.X8IWUuMzw4ab8oEBaaofIaJ0Z1DyxyhlxDkgjCD6w.H62Xk.fW8Kiuc1:15893:0:99999:7:::

l用户账号:密码也要和账号对应

l用户真正的密码,该密码是通过加密的密码,如果该字符串第一个字符为(*)或(!)表示这个账号并不会用来登录。

l最近更改密码的日期:该字段记录“更该密码的那一天”,这日期是从197011日开始算的,起始为1197111日为366,依次累加。

l密码不可更改的天数:该字段如果为“0”,表示用户随时可以更改密码。如果为5,那么5天之内,用户都无法更改密码。

l密码需要重新更改的天数:可以理解为密码保持有效的最大天数,如果为99999,表示密码不需要重新输入。

l密码更改期限前的警告期限:根据该字段值,发出密码失效前的警告提示

l密码过期的宽限时间:当过了警后告期限时用户还没有更改密码,使用密码失效了。那么还可以在该字段规定的时间范围里使用以前的密码进行登录,如果在这个天数后还是没有更改密码,那么该账号就会失效。

l账号失效时间:该字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

l保留:未用

/etc/group

该文件记录GID与用户名称的

[root@localhost ~]# cat /etc/group

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

sys:x:3:root,bin,adm

l用户组名称:组名称

l用户组密码:组密码,这个通常不需要设置,组密码存入/etc/gshadow文件中

lGID:用户组ID

l支持的账号名称:一个组加入了多个用户,那么这个字段就显示所有的用户

UIDGID设置文件/etc/login.defs,默认建立用户,用户UID500。如果系统中已存在大于500ID那么该用户的最终ID为“取最大+1”。但是在建立用户时使用了-r选项时,就会找“比500小的最大的那个ID+1

[root@localhost home]# cat /etc/login.defs

MAIL_DIR/var/spool/mail

 

PASS_MAX_DAYS99999

PASS_MIN_DAYS0

PASS_MIN_LEN5

PASS_WARN_AGE7

 

UID_MIN500

UID_MAX60000

 

GID_MIN500

GID_MAX60000

了解了系统用户和组的相关概念后,我们如何去添加一个用户呢?添加用户我们使用useradd命令进行添加,接下来我们就来讲讲useradd的用法。

Useradd添加用户:

1.命令用法:

Useradd【选项】【用户名】

2.常用选项:

-u在创建用户的时候指定用户的uid

-g在创建用户时指定用户的组

-G指定用户的附加组

-s指定用户的默认登录shell

-e指定用户的失效时间“系统会在指定时间后2天才会生效”

-M建立用户时不建立家目录

-m建立用户时指定家目录位置

实例:

添加一个用户user1指定他的登录shell/bin/sh

[root@mail ~]# useradd -s /bin/shuser1

[root@mail ~]# tail -1 /etc/passwd

user1:x:2005:2005::/home/user1:/bin/sh

添加一个用户user20 指定用户的UID539,说明信息为user10c

[root@mail yum]# useradd -u 539 -c user10c user20

[root@mail yum]# tail /etc/passwd

cccc:x:2002:2002::/home/cccc:/bin/bash

usera:x:2003:2003::/home/usera:/bin/bash

userb:x:2004:2004::/home/userb:/bin/bash

user1:x:2005:2005::/home/user1:/bin/sh

user3:x:65535:2006::/home/user3:/bin/bash

user5:x:2006:2007::/home/user5:/bin/bash

user7:x:2007:2008::/home/user7:/bin/bash

opop:x:65534:2009::/home/opop:/bin/bash

xdd:x:2008:2010::/home/xdd:/bin/bash

user20:x:539:539:user10c:/home/user20:/bin/bash

5.设置密码

设置密码用passwd命令:

当使用useradd添加一个用户后,该用户暂时是无法登录的,这时就需要给用户设置密码。

法:passwd【用户】

如果当前用户是root,那么它就可以给任何一个用户设置密码。当前用户想更改密码,在终端中直接输入passwd即可。

方法一

[root@localhost home]# passwdluodi

Changing password for user luodi.

New password: ――有安全机制,不会显示输入信息

BAD PASSWORD: it is based on a dictionary word

BAD PASSWORD: is too simple――提示密码太简单了,但还是可以通过

Retype new password: 

passwd: all authentication tokens updated successfully.

[root@localhost home]#

方法二

[luodi@localhost ~]$ passwd 

Changing password for user luodi.

Changing password for luodi.

(current) UNIX password: 

New password: 

BAD PASSWORD: it is based on a dictionary word――普通用户设置密码要符合要求

普通用户符合要求如下:

l密码不能与账号相同

l密码尽量不要选用字典里面会出现的字符串

l密码需要超过8个字符

6.添加组

系统中添加一个用户后,同时会创建一个和用户名同名的组,那么我们有没有办法手工建立一个用户组呢?可以使用groupadd这个命令来实现,下面是该命令的一些用法。

groupadd 

法: groupadd [ -g gid] [-r]

-g:后面接特定的GID,用来直接给予某个GID

-r:建立系统用户组

[root@localhost /]# groupadd gpfile

[root@localhost /]# grep gpfile /etc/group

gpfile:x:506:

[root@localhost /]# groupadd -r gpfile1

[root@localhost /]# grep gpfile /etc/group

gpfile:x:506:

gpfile1:x:489:

7.把用户加入组

加入组可以使用gpasswd

法:gpasswdgroupname

gpasswd-A user1,......】【-M user2,user4.. groupname

gpasswd-rR groupname

:没有任何参数,表示给groupname设置一个密码,密码存放/etc/gshadow文件中

-A :将groupname的主控权交给后面的用户管理(该用户组的管理员)

-M:将某些账号加入这个用户组中

-r:将groupname的密码删除

-R:让groupname的密码栏失效,newgrp就不能使用了

实例:

[root@localhost ~]# gpasswd -M testuser,luodi grp――把testuser,luodi加入grp

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

grp:x:506:testuser,luodi

8.Usermod的使用

使用usermod修改用户的信息,常用的选项有如下几种

法: usermod -cdegGlsuLU username

-c<备注>  修改用户帐号的备注文字。

  -d<登入目录>  修改用户登入时的目录。

  -e<有效期限>  修改帐号的有效期限。

  -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

  -g<群组>  修改用户所属的群组。

  -G<群组>  修改用户所属的附加群组。

  -l<帐号名称>  修改用户帐号名称。

  -L  锁定用户密码,使密码无效。

  -s  修改用户登入后所使用的shell。

  -u  修改用户ID。

  -U  解除密码锁定。

实例:

[root@localhost home]# usermod -L luodi

[root@localhost home]# cat /etc/shadow | grep luodi

luodi:!$6$nt5SUHfQ$Wp6qgjPIA/uLdha80s.x2fzx/HJuFQ3QsOUgBBBPjPySzsuaCGeR1PcjL6NQPiHyjqggqIwyCiED8srv3BwIX0:15919:0:99999:7:::

 

9.删除用户和组

删除用户

.userdel:删除用户

法:userdel -r【用户】

-r:连同家目录一起删除

删除时最好先执行“find/-userusername”查出整个系统内属于username的文件,然后再删除。

[root@localhost /]# userdel luodi――不带-r选项

[root@localhost /]# ls -ld /home/luodi/

drwx------ 5 501 502 4096 2013-07-29 20:19 /home/luodi/――发现目录还存在

[root@localhost /]#

[root@localhost /]# rm -rf /home/luodi/

[root@localhost /]# userdel-r testdir 

[root@localhost /]#

[root@localhost /]# ls -ld /home/testdir

ls: cannot access /home/testdir: No such file or directory――发现没有这个目录

[root@localhost /]#

删除组使用groupdel

groupdel删除用户组

法:groupdelgroupname

[root@localhost ~]# groupdelgpfile

[root@localhost ~]#

注意

[root@mail yum]# groupdel ddd

groupdel: cannot remove the primary group of user 'ddd'

[root@mail yum]#

 

删除组总结:

如果一个组当前是属于一个用户的主属主的话,那么删除该组时就会提示如下信息

 

 

 

 

你可能感兴趣的:(Linux用户和组,成都LD)