用户群组

  • A+
所属分类:运维教程

一、基本概念

1.1用户:使用linux需以一个用户的身份登入,一个进程也需要以一个用户的身份运,用户限制使用者或进程可以使用和不可以使用哪些资源。

用户分类:超级用户(UID为0)、系统用户(UID为1-499)、普通用户(UID为500以上)

1.2群组:群组用来方便组织管理用户

1.3补充:

a)每个用户拥有一个userID,操作系统实际使用的是用户ID,而非用户名

b)每个用户属于一个主组,属于一个或多个附属组

c)每个组拥有一个groupID

d)每个进程以一个用户身份运行,并受该用户可访问资源的限制

e)每个可登陆用户拥有一个指定的shell

f)系统中的文件都有一个所属用户及所属组

g)使用id命令可以显示当前用户的信息

二、账号的内容

2.1 用户账号

# head -l /etc/passwd

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

/etc/passwd文件存储了用户账号的信息

使用“:”作为分隔符,分割为7个字段

2.2passwd文件中各字段含义:

USERNAME:PASSWORD:UID:GID:COMMENT:HOMEDIR:SHELL

USERNAME:用户名称,用来表示用户的识别名称,唯一性,支持大小写字母、数字、下划线_、连字符-

PASSWORD: 密码数据,如果是x,代表密码被存储到其他位置(放到另外的文件中),如果为空,代表不需要密码

UID:用户标识符,每个用户具有唯一的UID,linux系统根据UID来判别用户的身份,如果两个用户使用了相同的UID,即使账号的名称不同,但是linux系统会认为是一个用户。

GID:群组标识符,该字段记录的是用户的全名和批注信息,例如:家庭地址、电话号码等。

HOMEDIR:用户登录系统后的第一个目录,就是用户的家目录,记录的用户家目录的路径,注意只能使用绝对路径

SHELL :用户登录系统后执行的shel程序,指定一个可用的shell程序,例如:/bin/bash,如果你不希望用户登录系统,就指定一个不可用的shell程序,例如:/sbin/nologin、/bin/nimei

三、用户账号的管理

3.1 添加账号的原理(手动添加账号)通过学习添加账号的原理,明白添加账号命令背后所做的事,熟悉存储用户账号信息的相关文件。

(1)使用id命令查询用户账号是否存在

# id vfast

id: vfast: No such user

结果表明vfast账号不存在

(2)在/etc/passwd文件中添加用户信息

使用vim添加如下信息到/etc/passwd文件中

vfast:x:500:500:vfast:/home/vfast:/bin/bash

注意:uid具有唯一性

(3)使用id命令再次验证

# id vfast

uid=500(u1) gid=500(u1) groups=500(u1)

发现id命令主要查询/etc/passwd文件中信息

(4)将用户的模板文件/etc/skel目录中内容拷贝到/home下

#cp –r /etc/skel /home/vfast

(5)在/etc/group中创建群组信息

使用vim中在/etc/group文件添加如下信息:

vfast:x:510:

(6)使用su – 用户名 命令验证

# su – vfast

[vfast@mail ~]$

(7)在/etc/shadow文件中添加vfast用户信息

vfast:!!:16286:0:99999:7:::

3.2 使用useradd命令添加用户账号

Useradd的语法:

useradd [-u UID [-o]] [-g GROUP] [-G GROUPS... ] [-d HOME][-s SHELL] [-c COMMENT] [-p PASSWORD] [-n] [-r] [[-m] | [-M]] USERNAME

例1:添加用户u3

# useradd u3

[root@mail ~]# id u3

uid=1001(u3) gid=1001(u3) groups=1001(u3)

# grep “u3″ /etc/passwd

u3:x:1001:1001::/home/u3:/bin/bash

[root@mail ~]# grep “u3″ /etc/group

u3:x:1001:

例2:添加用户u5同时指定uid为800

#useradd –u 800 u5

#grep “u5″ /etc/group

u5:x:800:

[root@mail ~]# grep “u5″ /etc/passwd

u5:x:800:800::/home/u5:/bin/bash

例3:添加用户u5,指定uid为801,主要组为test

#useradd –u 801 –g test u5

root@mail ~]# grep “u6″ /etc/passwd

u6:x:801:1000::/home/u6:/bin/bash

[root@mail ~]# grep “postfix” /etc/group

postfix:x:1000:

例4:添加用户u7,指定uid为802,主要组为test,次要组为u1

# useradd -u 802 -g test -G u1 u7

[root@mail ~]# grep “u7″ /etc/passwd

u7:x:802:1000::/home/u7:/bin/bash

[root@mail ~]# grep “postfix” /etc/group

postfix:x:1000:

[root@mail ~]# grep “u7″ /etc/group

u1:x:500:u7

3.3 使用usermod命令修改用户信息

Usermod语法:

usermod [-u UID] [-g GROUP] [-G GROUPS... ] [-d HOME] [-s SHELL] [-c COMMENT] [-l NEWNAME] [[-L] | [-U]]USERNAME

例1:修改用户u3的uid为1200

[root@mail ~]# id u3

uid=1001(u3) gid=1001(u3) groups=1001(u3)

[root@mail ~]# usermod -u 1200 u3

[root@mail ~]# id u3

uid=1200(u3) gid=1001(u3) groups=1001(u3)

例2:使用usermod –G修改用户的次要组(将u3用户加入到u1和u2组)

语法:usermod –G 组名 用户名

[root@mail ~]# grep “u3″ /etc/group

u3:x:1001:

[root@mail ~]# usermod -G u1,u2 u3

[root@mail ~]# id u3

uid=1200(u3) gid=1001(u3) groups=1001(u3),500(u1),501(u2)

[root@mail ~]# grep “u3″ /etc/group

u1:x:500:u7,u3

u2:x:501:u3

u3:x:1001:

例3:锁定账号和解除锁定

[root@mail ~]# grep “u3″ /etc/shadow

u3:$1$o64CnPLp$bDQO/IOpL8Z1eGEHwsRqs.:16286:0:99999:7:::

[root@mail ~]# usermod -L u3

[root@mail ~]# grep “u3″ /etc/shadow

u3:!$1$o64CnPLp$bDQO/IOpL8Z1eGEHwsRqs.:16286:0:99999:7:::

[root@mail ~]# usermod -U u3

[root@mail ~]# grep “u3″ /etc/shadow

u3:$1$o64CnPLp$bDQO/IOpL8Z1eGEHwsRqs.:16286:0:99999:7:::

3.4 使用userdel命令删除账号

语法:userdel 【–r】 username

查看用户的家目录和邮箱

[root@mail ~]# ls /home

u1 u2 u3 u4 u5 u6 u7 vfast

[root@mail ~]# ls /var/spool/mail/

root rpc u1 u2 u3 u4 u5 u6 u7 vfast.com

使用userdel删除用户,发现命令执行后保留用户的邮箱和家目录

[root@mail ~]# userdel u1

[root@mail ~]# ls /home

u1 u2 u3 u4 u5 u6 u7 vfast

[root@mail ~]# ls /var/spool/mail/

root rpc u1 u2 u3 u4 u5 u6 u7 vfast.com

[root@mail ~]# userdel -r u1

userdel: user u1 does not exist

使用userdel –r删除用户的全部信息

[root@mail ~]# userdel -r u3

发现邮箱和家目录也被删除

[root@mail ~]# ls /home

u1 u4 u5 u6 u7 vfast

[root@mail ~]# ls /var/spool/mail/

root rpc u1 u2 u4 u5 u6 u7 vfast.com

如果执行userdel没有加-r,命令执行后,想删除家目录和邮箱,只能使用rm手动的删除

[root@mail ~]# rm -rf /home/u1

[root@mail ~]# rm -rf /var/spool/mail/u1

四、群组账号的管理

4.1 使用groupadd添加群组

语法:

groupadd [-g GID] [-r] [-f] GROUPNAME

例1:添加组dba

[root@mail ~]# groupadd dba

[root@mail ~]# grep “dba” /etc/group

dba:x:1003:

例2:添加组oinstall并设置GID为1005

[root@mail ~]# groupadd -g 1005 oinstall

[root@mail ~]# grep “oinstall” /etc/group

oinstall:x:1005:

4.2 使用groupmod修改群组

语法:groupmod [-g GID] [-n NEWNAMEGROUPNAME

例1:修改dba群组的GID为2008

[root@mail ~]# grep “dba” /etc/group

dba:x:1003:

[root@mail ~]# groupmod -g 2008 dba

[root@mail ~]# grep “dba” /etc/group

dba:x:2008:

注意:如果修改的群组GID是某个用户的主要组的GID,请修改/etc/passwd文件中该用户的GID的值。

4.3 使用groupdel删除群组

语法:groupdel GROUPNAME

[root@mail ~]# groupdel dba

注意:要删除的群组不能为其它用户的主要组

五、密码的管理

5.1修改用户密码

Passwd语法:

passwd [-d] [-k] [-l] [-S] [--stdin] USERNAME

例1:使用passwd修改密码

#passwd u7

Changing password for user u7.

New UNIX password:

BAD PASSWORD: it is too simplistic/systematic

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

例2:非交互式(批量修改密码)

# echo “123456″|passwd –stdin oracle

Changing password for user oracle.

passwd: all authentication tokens updated successfully.

六、使用useradd命令创建用户的默认设置

当使用useradd命令建立用户时,没有指定选项,useradd会根据/etc/logindefs和/etc/default/useradd中的定义作为创建用户的默认值。

七、shadow组件

7.1 /etc/shadow文件的含义:

USERNAME:PASSWORD:LAST_CHANGED:MIN_DAYS:MAX_DAYS:WARNNING:EXPIRES:DISABLED

USERNAME:用户名,和/etc/passwd文件中的对应

PASSWORD:使用md5加密的密码,如果是两个感叹号,表示被锁定,如果为空,表示用户没有密码

LAST_CHANGED:表示密码的最后一次修改的日期,但是没有直接使用年月日表示,而是天数,从1970.1.1开始到修改密码的那天计数

MIN_DAYS:密码修改的最小天数,如果为9,9天内不允许修改密码

MAX_DAYS:密码使用的最大天数,例如:30,30天内必须修改密码

WARNNING:密码过期前警告

EXPIRES:密码的过期日期,不使用年月日,使用天数

DISABLED :账号是否锁定,0代表锁定,其他值代表不锁定

7.2 管理账号的有效期限

# chage -l oracle

Last password change : Aug 04, 2014

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

设置用户的密码的过期日期

[root@mail ~]# chage -E 2014/08/12 oracle

[root@mail ~]# chage -l oracle

Last password change   : Aug 04, 2014

Password expires     : never

Password inactive     : never

Account expires      : Aug 12, 2014

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

[root@mail ~]# grep “oracle” /etc/shadow

oracle:$1$imzBBAxg$ryYVbVBKteyHuzuF0mV1N/:16286:0:99999:7::16294:

[root@mail ~]#

修改密码的有效期

# chage -M 8 oracle

# grep “oracle” /etc/shadow

oracle:$1$imzBBAxg$ryYVbVBKteyHuzuF0mV1N/:16286:0:8:7::16294:

小结:用户和组

Useradd usermod userdel group add del mod

/etc/passwd /etc/group /etc/shadow /etc/login.defs /etc/defaults/useradd /etc/skel

/home /var/spool/mail

由荣新于老师投稿,由郭亚锋后期排版。

  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:55   其中:访客  54   博主  1

    • avatar 臣耘先莱强怂杖较研慷资霞尚瓮逃涝焕改 9

      签到成功!签到时间:今日的上午7:25:10,每日打卡,生活更精彩哦!

      • avatar 偶蓝巴痘尤呀胸胖甘匈谐吕信参疑脱官好 9

        签到成功!签到时间:今日的上午7:11:35,每日打卡,生活更精彩哦!

        • avatar 媳卜墙唇钙捅菇授于该咳娇鲁探粮瞧肪荒 9

          签到成功!签到时间:今日的上午5:34:37,每日打卡,生活更精彩哦!