您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

CentOS系统管理用户和用户组的详解

添加时间:2019-11-24 20:35:54  添加: 思海网络 
一:新建用户和用户组: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 –d 而不能用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 组名:-r选项为移除密码,gpasswd –r 组名为清空该组密码

组密码的用途:主要是一些用户想要加入组,那么需要用到的这个组账户的密码,而这个用户加入的时候也是临时加入的,用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~]$

4,newgrp 

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修改

第二段:密码字符或占位符

注:加密后的密码保存在/etc/shadow文件中

第三段:用户账号的UID号

注: 在建立的时候用useradd -u来指定UID号

第四段:所属基本组的GID号

注:在新建用户的时候,如果不指定基本组,会默认新建一个和用户同名的组,可以使用useradd -g users/100来指定新建用户组的GID

第五段:用户全名

第六段:宿主目录

注:在新建用户的时间,用useradd -d来指定

第七段:登录shell程序的路径

注:在新建用户时候使用useradd -s来指定,也可以在后来使用usermod -s来指定

/etc/shadow文件:保存了密码字串,有效期等信息

[root@localhost/]# head -1 /etc/shadow

root:$1$SmlKPNho$qNqybQOGBSnK6iWmviI6b1:15908:0:99999:7:::

1    2                                 3        4  5    6789

第一段:用户账号的名称

第二段:加密后的密码字符串

注:在使用passwd -l锁定之后加两个”!”,用usermod -L锁定之后该字符串前面加一个”!”

第三段:上次修改密码的时间

第四段:密码的最短有效天数,默认为0

注:也就是在上次修改密码后多少天之内不准修改密码,可以使用chage -m来修改

第五段:密码的最长有效天数

注:也就是说,密码在到达有效天数之后,必须进行修改,可以使用chage -M修改

第六段:密码过期后的警告天数,默认为7

注:在密码最长有效天数的前7天进行提醒

第七段:密码过期后多少天禁用此账户,默认值为空

注:如果密码过期之后,也就是密码最长有效时间到了之后,用户还可以继续使用该账号,如果还不修改密码,那么,这个时间将起作用,该用户将被禁用。可以使用chage -I 来修改

第八段:账号失效时间,默认值为空

可以使用chage -E 或者usermod -e来修改账号的失效时间

例如:

[root@localhosthome]# chage -l  user01

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

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

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

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

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

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

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

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

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

[root@localhost~]# usermod -e 20140810 user01  //或chage -E 20140810 user01

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

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

[root@localhost~]# chage -l  user01

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

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

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

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

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

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

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

第九段:该字段保留

2,新建一个用户时候的默认配置/etc/login.defs、/etc/useradd和/etc/skel

[root@localhost~]# grep -vE "^#|^$" /etc/login.defs

MAIL_DIR        /var/spool/mail     //定义邮件文件路径

PASS_MAX_DAYS   99999           //定义密码最长有效天数,/etc/shadow第五段

PASS_MIN_DAYS   0       //密码最短有效天数为0,/etc/shadow的第四段

PASS_MIN_LEN    5       //密码最小长度为5,这里不起作用,有其他文件来规定

PASS_WARN_AGE   7       //密码过期后的警告天数

UID_MIN                   500       //UID的起始值,/etc/passwd中的第三段

UID_MAX                 60000       //UID的最大值,/etc/passwd中的第三段

GID_MIN                   500       //GID的起始值,/etc/passwd中的第四段

GID_MAX                 60000       //GID的最大值,/etc/passwd中的第四段

CREATE_HOME     yes         //是否创建宿主目录

UMASK           077         //umask值为077

USERGROUPS_ENAB yes         //

MD5_CRYPT_ENAB yes          //密码使用MD5加密

ENCRYPT_METHOD MD5          //

[root@localhost~]#cat /etc/default/useradd

# useradd defaults file     

GROUP=100       //

HOME=/home      //定义创建用户的宿主目录在/home下

INACTIVE=-1         //是否启用该账户,-1代表是

EXPIRE=             //

SHELL=/bin/bash     //指定新建用户的shell为/bin/bash

SKEL=/etc/skel      //新建用户的宿主目录模板为/etc/skel

CREATE_MAIL_SPOOL=yes       //是否创建用户的邮件文件

[root@localhost~]# ll -a  /etc/skel/       //在新建一个用户的时候,宿主目录里面的内容就是将skel拷贝过去,然后放到/home目录下并改名为新建的用户名

总计 64

drwxr-xr-x  3 root root 4096 2013-07-10 .

drwxr-xr-x 97 root root 1228802-18 16:24 ..

-rw-r--r--  1 root root   33 2011-05-13 .bash_logout

-rw-r--r--  1 root root  176 2011-05-13 .bash_profile

-rw-r--r--  1 root root  124 2011-05-13 .bashrc

-rw-r--r--  1 root root  515 2011-04-07 .emacs

drwxr-xr-x  4 root root 4096 2012-11-16 .mozilla

3,全局配置文件~/.bash_profile、~/.bashrc和~/.bash_logout

注:可以在用户的宿主目录下使用ls -a查看。

~/.bash_profile:每次登录时执行

~/.bashrc :每次进入新的Bash环境时执行

~/.bash_logout:每次推出登录时执行

4,查看用户组信息:/etc/group和/etc/gpasswd

/etc/group查看用户组的信息

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

user:x:1204:user01,user2

第一段:组名

第二段:密码占位符

第三段:GID

第四段:组内成员(使用gpasswd -a添加,gpasswd -d删除,gpasswd -M覆盖添加多个)

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

user:$1$u/W2qj.L$W8GJY5HxyLzphdtgLKpxW0:stu02:user01,user2

第一段:组名

第二段:密码(使用gpasswd来设置)

第三段:组管理员(使用gpasswd -A指定)

第四段:组内成员


关键字:CentOS、系统、管理、用户、用户组
分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2019 All Rights Reserved.
联系电话:(0757)22630313、22633833
公司地址: 广东省佛山市顺德区大良国际商业城A区4座3楼106号   邮编:528300
机房7x24小时服务热线:(0757)23628508、23628509
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站