我是靠谱客的博主 激情牛排,最近开发中收集的这篇文章主要介绍Linux运维实战之用户和组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本次博文的主题是Linux用户和组。我们先来说说操作系统中用户和组的基本知识哈!

一、用户和组基础:

有谁能告诉我“用户”和“组”分别是什么?OS是如何识别每个用户的?

用户:是能够获取系统资源的权限的集合;它由两部分组成:用户名+用户ID。我们的操作系统就是通过用户ID来识别每个用户的(类似于人的姓名与×××号码)。

操作系统上有个与用户相关的信息库,采用某种对应关系,将每个用户的用户名与用户ID对应,例如:root用户的用户ID是0。

组:指派权限的容器,用于一次性完成用户权限的指派。它由两部分组成:组名+GID。Linux就是通过GID来识别每个组的。

那么操作系统保存用户和组的信息的方式主要有如下几种:

1、存放在文本文件中;

2、存放在数据库中;

3、采用ldap(轻量级目录访问协议)保存;

 

Linux中,所有的配置都是保存在配置文件中的,下面具体说说Linux下跟用户和组相关的配置文件:

1、/etc/passwd:保存用户的属性信息的文件

clip_p_w_picpath006

字段说明:

从左到右共7个字段分别表示为:

用户名:密码占位符:UID:GID:注释信息:家目录:默认shell

说明:所谓密码占位符只是表示这是一个密码字段,但用户密码却不是存放在这里,而是存放在/etc/shadow文件中。之所以这样设计,是由于在早期的UNIX操作系统中,用户账号的密码信息是存放在passwd中的,但这样不法用户可以很容易地获取密码字串并进行暴力破解,因此存在一定的安全隐患。所以后来经改进后,将密码转存入专门的shadow文件中,并严格控制权限,这样passwd文件中就仅保留密码占位符"x”

默认法则:

UID:已有最大的UID+1

GID:/etc/group中已有最大GID+1

家目录:/home/USERNAME

shell:/bin/bash

2、/etc/shadow:用户的影子口令

p_w_picpath

从左到右共9个字段,分别表示如下:

用户名:用户密码:最近一次修改密码的时间:密码最短使用期限:密码最长使用期限:告警时间:帐号的非活动天数:账号过期日期:保留字段

每个字段的具体说明如下:

用户名用户密码最近一次修改密码的时间密码最短使用期限密码最长使用期限告警时间帐号的非活动天数账号过期日期保留字段
表示用户的登录名称如果有些用户在这个字段是"x"或"*"或"!!"表示此用户不能登录到系统;          
密码一共由3个字段组成,用$分隔,各字段的含义分别为:           

第一个字段:

$1:表示加密方法

第二个字段:

$8位随机数:salt              
第三个字段:

$字符串: 真正的密码

从1970年1月1号开始至上次修改密码时,中间所经过的天数;表示用户必须经过多少天才能修改其口令;如果设置成0,则禁用此功能两次修改密码的最长时间间隔;在密码到期时必须要修改密码,99999表示不需要修改提前多少天通知用户口令即将过期口令过期后多久禁用此用户,也就是说系统不会再让此用户登录,也不会提示用户过期,而是完全禁用此用户账号指定的时间到达,即锁定此账号(从1970年1月1号开始的天数),如果这个字段的值为空,表示此账号永久可用一般为空,为Linux以后发展保留的字段

补充知识:加密方法

  • 对称加密:加密和解密使用同一个密钥;最常见的为:3DES(3轮DES加密), AES(Advanced Encrption Standard);密钥管理及分发功能很差;    

  • 公钥加密: 也叫非对称加密,私钥/公钥(s/p),公钥可以从私钥中提取得到;加密速度慢,但安全性高;通常用于密钥分发;目前常见的公钥加密的算法为:RSA, DSA    

  • 单向加密:提取数据特征码,特性:      
            (1)无论输入是多大的数据,其输出是定长的;       
            (2)如果输入的数据一样,其结果一定一样;反之,输入数据微小改变,将引起结果的巨大改变,这种现象称之为“雪崩效应”;       
            (3)算法:md5(message digest),SHA(Secure Hash Algorithm), SHA1       
                   md5: 无论输入是多长,输出为定长128bits       
                   sha1: 无论输入是多长,输出为定长160bits       
                   sha-256: 无论输入是多长,输出为定长256bits       
                   sha-512: 无论输入是多长,输出为定长512bits 

"salt”的意义:随机加入防止用户设置同一个口令后的加密算法生成的密码相同;

举例说明如下:

[root@rhel5 home]# openssl passwd --salt 12345678 redhat
$1$12345678$0ME5N6oDyoEAwUp7b5UDM/
[root@rhel5 home]# openssl passwd --salt 12345678redhat    
$1$12345678$0ME5N6oDyoEAwUp7b5UDM/        #可以看到,两次输入的salt相同,加密后生成的密码是相同的哈
[root@rhel5 home]# openssl passwd --salt 12345698 redhat    
$1$12345698$jX8ffqc5lSEfqT.NXmyP2.        #这里可以看到,两次输入的salt有细微的差别,则生成的密码差别甚大

3、/etc/group:组的属性信息

clip_p_w_picpath010

一共4个字段;从左到右各字段的含义:

组名:密码占位符:GID:以此组为额外组的用户列表,用户间用逗号分隔

 

4、/etc/gshadow:组的密码(小知识:windows系统中组是没有密码的)

clip_p_w_picpath012

一共4个字段,从左到右各字段的含义:

组名称:组密码(空或!表示没有密码):组管理者(可以为空,如果有多个管理者用逗号隔开):组成员(如果有多个成员,用逗号隔开)

Linux中组的类型有哪些呢?下面具体说说:

从用户的角度来说,Linux中的组类型有两种:

1、私有组:也叫“基本组”,创建用户时如果不指明其基本组,则会默认创建与用户同名的基本组

2、额外组:每个用户可以同时加入多个组,用户另外加入的组称为该用户的额外组(附加组) 

 

Linux中用户和组可以用下面的表格来总结:

用户类型说明用户/组分类UID/GID范围说明
Linux系统中的所有用户账号信息都存放在/etc/passwd和/etc/shadow文件中,文件的每一行就代表一个用户。Windows系统中所有本地用户账号信息都存放%systemroot%system32configsam文件和注册表中;域用户账户信息则存放在活动目录数据库中;管理员root0root是Linux系统中默认的超级用户账号,类似于windows系统中的administrator账户,但需要注意的是Linux中真正的管理员只有root用户一个
Linux系统每创建一个用户账号就会自动创建一个与该账号同名的用户组,该组为用户的基本组。每个用户可以同时加入多个组,用户另外加入的组称为该用户的额外组(附加组);Windows系统没有所谓基本组和附加组的概念

 

系统用户
1~499在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登陆到系统,而仅用于维持系统或程序的正常运行

普通用户(可登陆用户)

500+此类用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的主目录中有完全权限
管理员组(root)0类似于windows系统的系统管理员组
系统用户组1~499一般加入一些用于日常系统管理的用户
普通用户组500+当创建用户时,默认创建一个与用户名同名的基本组,还可以指定加入其它额外组


二、用户和组的管理:

创建用户:

命令名称:useradd(adduser)

命令所在路径:/usr/sbin/useradd 

执行权限:root

功能描述:创建用户,在添加用户的过程中会自动完成以下几项任务:

(1)在“/etc/passwd”和“etc/shadow”文件的末尾增加该用户账号的记录;

(2)若未指明用户的主目录,则在“/home”目录下自动创建与该用户账号同名的主目录,并在该目录中建立用户的初始配置文件;

(3)若未指明用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息保存在"/etc/group”和"/etc/gshadow”文件中;

语法:useradd [options] LOGIN 

范例:

[root@rhel5 jjx]#tail -/etc/passwd
jjx:x:500:500:jijianxin:/home/jjx:/bin/bash
xin:x:501:501::/home/xin:/bin/bash
[root@rhel5 jjx]# useradd redhat
[root@rhel5 jjx]# tail -/etc/passwd
xin:x:501:501::/home/xin:/bin/bash
redhat:x:502:502::/home/redhat:/bin/bash
[root@rhel5 jjx]#

通过useradd命令的选项可以定制用户属性:

-u:定制UID,有效范围0~65535

范例:

[root@rhel5 jjx]# useradd -u 1000 ubuntu
[root@rhel5 jjx]# tail-3/etc/passwd
xin:x:501:501::/home/xin:/bin/bash
redhat:x:502:502::/home/redhat:/bin/bash
ubuntu:x:1000:1000::/home/ubuntu:/bin/bash

-g:定制GID,有效范围为已有的GID(注意:指定GID时,所表示的组必须存在)

范例:

[root@rhel5 jjx]# useradd -g 1001 debian
useradd:未知的组 1001
[root@rhel5 jjx]#

可以看到:指定的组不存在(可以事先用groupadd命令添加);

-G:创建额外组,有效范围为已有的GID;可以有多个,用逗号分隔

范例:

[root@rhel5 ~]# groupadd testGroup
[root@rhel5 ~]# useradd -G testGroup user01
[root@rhel5 ~]#tail -/etc/passwd
user01:x:2003:2004::/home/user01:/bin/bash
[root@rhel5 ~]#tail -/etc/group
testGroup:x:2003:user01   #创建了testGroup额外组
user01:x:2004:   #系统自动创建了与用户user01同名的基本组
[root@rhel5 ~]#id -ng user01
user01   #验证用户user01的基本组
[root@rhel5 ~]#

-c:定制注释信息

范例:

[root@rhel5 jjx]# useradd -c "Linux Distribution" gentoo
[root@rhel5 jjx]# tail-4/etc/passwd
xin:x:501:501::/home/xin:/bin/bash
redhat:x:502:502::/home/redhat:/bin/bash
ubuntu:x:1000:1000::/home/ubuntu:/bin/bash
gentoo:x:1001:1001:Linux Distribution:/home/gentoo:/bin/bash   #可以看到"gentoo"用户属性中注释字段中添加了相应的条目
[root@rhel5 jjx]#

说明:以上选项可以组合起来使用,例如:

[root@rhel5 jjx]# useradd -c "Light Weight Distribution-u 2000 archlinux
[root@rhel5 jjx]# tail -/etc/passwd
archlinux:x:2000:2000:Light Weight Distribution:/home/archlinux:/bin/bash
[root@rhel5 jjx]#

-d:定制所创建用户的家目录(/path/to/somewhere)

范例:

[root@rhel5 jjx]#mkdir /tmp/users
[root@rhel5 jjx]# useradd -d /tmp/users/user01 slackware
[root@rhel5 jjx]#tail-1/etc/passwd
slackware:x:2001:2001::/tmp/users/user01:/bin/bash  #可以看出,用户slackware的家目录被指定为user01
[root@rhel5 jjx]#

补充知识1:转换用户

su(switch user):

范例:

[root@rhel5 ~]#su jjx
[jjx@rhel5 root]$ exit
exit
[root@rhel5 ~]#su - jjx
[jjx@rhel5 ~]$pwd
/home/jjx
[jjx@rhel5 ~]$ exit
logout

提示:中间那个 - 符号的意思完整切换到jjx用户。所谓的完整就是连着所有变量一起切换,即交互式切换;否则属于非交互式切换。大家不要忘记,不然你切换用户会出现莫名其妙的问题。管理员切换到普通用户不需要输入密码,反之不行!

对于“-”;切换的效果是看不出来的,在哪里能体现到这一点?

举例说明:先是完整切换到一般用户,然后不用切换回root。再用useradd新建一个用户试试。

[root@rhel5 ~]#su - jjx
[jjx@rhel5 ~]$su root
口令:
[root@rhel5 jjx]# useradd user01
bash: useradd: command not found   #可以看到,出现了无法找到命令的提示
[root@rhel5 jjx]#

补充知识2:如何查看有哪些shell可用?

cat /etc/shells,举例如下:

[root@rhel5 ~]#cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
/bin/zsh

提示:SHELL是个环境变量(保存当前用户的shell)

-s:定制用户的shell

[root@rhel5 ~]# useradd -s /etc/csh suse
[root@rhel5 ~]#tail-1/etc/passwd
suse:x:2002:2002::/home/suse:/etc/csh    #可以看到指定新用户suse的shell为csh。

补充知识: 如何查看用户id?有两种方法:

1、id命令:

命令名称:id

命令所在路径:/usr/bin/id

执行权限:所有用户

功能描述:查看用户的id

语法:id [OPTION] [USERNAME]

常有选项:

-u:查看UID

-g:查看GID

-n:一般与-u、-g合用,显示的是用户名或组名

范例:

[root@rhel5 ~]#tail -/etc/passwd
suse:x:2002:2002::/home/suse:/etc/csh
[root@rhel5 ~]#id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@rhel5 ~]#id -u suse
2002
[root@rhel5 ~]#id -un suse
suse    #可以看到显示的是用户名哈

2:finger命令(如果没有此命令,则需要用"yum install finger”导入一下)

语法:finger [user]

范例:

[root@rhel5 ~]# finger suse
Login: suse 
Name: (null)
Directory: /home/suse
Shell: /etc/csh
Never logged in.
No mail.
No Plan.

 

 


删除用户:

命令名称:userdel 

命令所在路径:/usr/sbin/userdel 

执行权限:root

功能描述:删除用户

语法:userdel [options] LOGIN 

范例:

不带任何选项删除用户账号是不会删除其家目录的:

p_w_picpath

常用选项:

-r:删除用户连同其家目录一并删除

范例:

[root@rhel5 ~]#tail -/etc/passwd
user01:x:2003:3005::/home/user01:/bin/bash
user02:x:2004:2004::/home/user02:/bin/bash
[root@rhel5 ~]# userdel -r user02
[root@rhel5 ~]#id user02
id: user02:无此用户
[root@rhel5 ~]#ls /home/archlinux  
gentoo  jjx  mandriva  redhat  ubuntu  user01  xin
[root@rhel5 ~]#ls /home/user02
ls: /home/user02: 没有那个文件或目录     #user02的家目录一并被删除了哈
[root@rhel5 ~]#

 


修改用户属性

命令名称:useremod

命令所在路径:/usr/sbin/usermod

执行权限:root

功能描述:修改用户属性

语法:usermod [option] username

常用选项:

-a -G合用:修改用户的额外组

范例:

[root@rhel5 etc]#tail -/etc/passwd
mandriva:x:2002:3003::/home/mandriva:/bin/bash
user01:x:2003:3005::/home/user01:/bin/bash
hadoop:x:2004:2004::/home/hadoop:/bin/bash
hive:x:2005:2005::/home/hive:/bin/bash
centos:x:2006:2006::/home/centos:/bin/bash
[root@rhel5 etc]# usermod -a -G centos user01  #user01加入额外组centos
[root@rhel5 etc]# id user01    #验证命令结果
uid=2003(user01) gid=3005(user01)groups=3005(user01),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@rhel5 etc]# tail-5/etc/group
grp02:x:5000:
magedu:x:5001:
hadoop:x:2004:
hive:x:2005:
centos:x:2006:user01   #从这里也可以看出usere01被加入了额外组centos哈

-l:修改用户登录名

范例:

[root@rhel5 etc]#id user01
uid=2003(user01) gid=3005(user01)groups=3005(user01),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@rhel5 etc]# usermod -l user1 user01  #将user01用户名修改为user1
[root@rhel5 etc]# id user1  #验证命令结果
uid=2003(user1) gid=3005(user01)groups=3005(user01),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh

-d -m合用:修改用户的家目录(-m是把原有家目录里的数据一并移入新的家目录中)

范例:

[root@rhel5 home]#tail -/etc/passwd
centos:x:2006:2006::/home/centos:/bin/bash
user1:x:2003:3005::/home/user01:/bin/bash
[root@rhel5 home]# ls /home/user01/   #查看用户user1原来家目录user01的内容
rc  rc.local  rc.sysinit
[root@rhel5 home]# usermod -d /home/user1 -m user1  #修改用户user1的家目录为/home/user1,并且将原来家目录里的内容一并迁移过去
[root@rhel5 home]# ls /home/   #验证结果
archlinux  centos  gentoo  hadoop  hive  jjx  mandriva  redhat  ubuntu  user1  xin    
[root@rhel5 home]# ls /home/user1
rc  rc.local  rc.sysinit

-e:以“MM/DD/YY”为格式,指定账号的过期时间

范例:

[root@rhel5 home]#tail -/etc/shadow
hive:!!:16077:0:99999:7:::
centos:!!:16077:0:99999:7:::
user1:!!:16069:0:99999:7:::
[root@rhel5 home]# usermod -e 02/18/2014 user1    #修改user1的账号过期时间,系统会自动换算成自1970年1月1日开始的天数
[root@rhel5 home]# tail -/etc/shadow
user1:!!:16069:0:99999:7::16119:

-f #: 修改用户账号的非活动天数;

范例:

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16069:0:99999:7::16119:
[root@rhel5 home]# usermod -f7 user1  #修改user1账号的非活动天数为7天,7天后系统会禁用user1用户账号
[root@rhel5 home]#tail -/etc/shadow
user1:!!:16069:0:99999:7:7:16119:

 


修改用户影子口令属性:

命令名称:passwd

命令所在路径:/usr/bin/passwd

执行权限:root(普通用户只能用passwd命令修改自己的密码而不能修改密码的相关属性)

功能描述:修改密码属性

语法:passwd [options] username        

常用选项:        

-n: 密码最短使用天数;   
范例:

[redhat@rhel5 ~]$passwd -n 8
redhatOnly root can do that.  #提示只有管理员才能更改密码的属性哈
[root@rhel5 home]# passwd -n 8 redhat
Adjusting aging data for user redhat.
passwd: Success
[root@rhel5 home]# grep ^redhat /etc/shadow
redhat:!!:16062:8:99999:7::16216:

-x:最长使用天数;  

[root@rhel5 home]# !grepgrep ^redhat /etc/shadow
redhat:!!:16062:8:99999:7::16216:
[root@rhel5 home]# passwd -x 365 redhat
Adjusting aging data for user redhat.
passwd: Success
[root@rhel5 home]# !grepgrep ^redhat /etc/shadow
redhat:!!:16062:8:365:7::16216: #将redhat用户的密码的最长使用天数改为365天

-w: 警告天数;  

[root@rhel5 home]# !grep
grep ^redhat /etc/shadow
redhat:!!:16062:8:365:7::16216:
[root@rhel5 home]# passwd -10 redhat
Adjusting aging data for user redhat.
passwd: Success
[root@rhel5 home]# !grep
grep ^redhat /etc/shadow
redhat:!!:16062:8:365:10::16216:   #将redhat用户的密码的警告天数修改为10天(原来是7天),提醒用户10天后密码过期哈

-i: 非活动天数;

[root@rhel5 home]# !grep
grep ^redhat /etc/shadow
redhat:!!:16062:8:365:10::16216:
[root@rhel5 home]# passwd-i7 redhat
Adjusting aging data for user redhat.
passwd: Success
[root@rhel5 home]# !grep
grep ^redhat /etc/shadow
redhat:!!:16062:8:365:10:7:16216:   #修改用户redhat的密码非活动天数为7天,7天后系统将禁用此账号哈

-S:显示用户状态信息

[root@rhel5 home]#passwd -S redhat
redhat LK 2013-12-238365107(Password locked.)  #显示redhat用户的账号信息(LK表示锁定此账号)

 

命令名称:chage

命令所在路径:/usr/bin/chage

执行权限:root(普通用户只能用chage –l 命令查看自己密码的详细信息)

功能描述:修改影子口令属性(即密码时效管理)

语法:chage [options] username        

常用选项:

-l:列出用户密码的详细时间参数

范例:

[root@rhel5 home]# chage -
user1Last password change                      : Dec 30,2013Password 
expires                                        :neverPassword 
inactive                                       : neverAccount 
expires                                        : Feb 18,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

-d: 修改密码的最近一次修改时间,/etc/shadow中的第三字段,为0则表示用户第一次登录强制修改密码

范例:

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16040:0:99999:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Dec 01,2013
Password expires                                        : never
Password inactive                                       : neverAccount 
expires                                                 : Feb 18,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       : 
[root@rhel5 home]# chage -d11/01/2013 user1       #修改user1密码的最近一次修改时间为2013年11月1日
[root@rhel5 home]# tail -/etc/shadow             #验证结果
user1:!!:16010:0:99999:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Feb 18,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

-m, –mindays MIN_DAYS:密码最短使用期限,/etc/shadow中的第四字段;

范例:

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16010:0:99999:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Feb 18,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@rhel5 home]# chage -m3 user1    #将user1的密码最短使用期限设置为3天
[root@rhel5 home]# tail-1/etc/shadow
user1:!!:16010:3:99999:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

-M, --maxdays MAX_DAYS:密码最长使用期限,/etc/shadow中的第五字段;

范例: 

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16010:3:99999:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
[root@rhel5 home]# chage -M365 user1         #设置user1的密码最长使用期限为365天
[root@rhel5 home]# tail-1/etc/shadow
user1:!!:16010:3:365:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 08,2014
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 7


-W, --warndays WARN_DAYS:警告天数,/etc/shadow中的第六字段;

范例:

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16010:3:365:7:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 08,2014
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 7
[root@rhel5 home]# chage -W10 user1      #提醒user1用户10天后密码到期(原来是7天)
10[root@rhel5 home]# tail-1/etc/shadow
user1:!!:16010:3:365:10:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 08,2014
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 10

-I, --inactive INACTIVE:非活动天数,/etc/shadow中的第七字段;   
范例:

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16010:3:365:10:7:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 08,2014
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 10
[root@rhel5 home]# chage -I14 user1         #修改user1用户账号口令过期后14天禁用user1用户
[root@rhel5 home]# tail-1/etc/shadow
user1:!!:16010:3:365:10:14:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 15,2014
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 10

-E, --expiredate EXPIRE_DATE:密码过期时间,/etc/shadow中的第八字段;

范例:

[root@rhel5 home]#tail -/etc/shadow
user1:!!:16010:3:365:10:14:16119:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 15,2014
Account expires                                         : Feb 18,2014
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 10
[root@rhel5 home]# chage -E01/01/2015 user1       #修改user1用户账号的密码在2015年1月1日过期
[root@rhel5 home]# tail -/etc/shadow
user1:!!:16010:3:365:10:14:16436:
[root@rhel5 home]# chage -l user1
Last password change                                    : Nov 01,2013
Password expires                                        : Nov 01,2014
Password inactive                                       : Nov 15,2014
Account expires                                         : Jan 01,2015
Minimum number of days between password change          : 3
Maximum number of days between password change          : 365
Number of days of warning before password expires       : 10

 

 


创建组

命令名称:groupadd(addgroup)

命令所在路径:/usr/sbin/groupadd

执行权限:root组

功能描述:创建组

语法:groupadd [options] groupname

范例:

[root@rhel5 ~]# groupadd grp01
[root@rhel5 ~]#tail -/etc/group
linux:x:3004:mandrivauser01:x:3005:grp01:x:3006:
[root@rhel5 ~]#

常用选项:

-g:用指定的GID创建新组

[root@rhel5 ~]# groupadd -g 5000 grp02  #创建grp02组,GID=5000
[root@rhel5 ~]#tail -/etc/group
user01:x:3005:
grp01:x:3006:
grp02:x:5000:
[root@rhel5 ~]#

-r:创建系统组

[root@rhel5 ~]#groupadd –r DBA
[root@rhel5 ~]#tail -/etc/group
grp01:x:3006:
grp02:x:5000:
DBA:x:101:    #可以看到DBA组的GID小于500,属于系统组哈

 


添加、删除组成员

命令名称:gpasswd

命令所在路径:/usr/bin/gpasswd

执行权限:root

功能描述:本来是用于设置组账号的密码,但很少使用,实际上该命令更多地用来添加和删除组成员

语法:gpasswd [选项] group

常用选项:

-a:添加组成员

范例:

[root@rhel5 home]#tail -/etc/group
centos:x:2006:
DBA:x:101:
user1:x:5002:
[root@rhel5 home]# gpasswd -a user1 centos   #将用户user1加入centos组
Adding user user1 to group centos
[root@rhel5 home]# id user1
uid=2003(user1) gid=5002(user1)groups=5002(user1),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh[root@rhel5 home]# tail -/etc/group
centos:x:2006:user1DBA:x:101:user1:x:5002:

 

-d:删除组成员

范例:

[root@rhel5 home]#tail -/etc/group
centos:x:2006:user1DBA:x:101:user1:x:5002:
[root@rhel5 home]# gpasswd -d user1 centos
Removing user user1 from group centos     #从centos组中删除用户user1
[root@rhel5 home]# tail -/etc/group
centos:x:2006:
DBA:x:101:
user1:x:5002:
[root@rhel5 home]# id user1
uid=2003(user1) gid=5002(user1)groups=5002(user1) context=root:system_r:unconfined_t:SystemLow-SystemHigh

 

 


临时设定基本组

命令名称:newgrp

命令所在路径:/usr/bin/newgrp

执行权限:所有用户

功能描述:临时设定指定组为其基本组,若被指定的组不是该用户的额外组,则在设定时需要该指定组的密码

语法:newgrp  [-]  groupname

范例:

[root@rhel5 ~]# tail -3 /etc/group
centos:x:2006:
DBA:x:101:
user1:x:5002:
[root@rhel5 ~]# gpasswd centos    #修改centos组的密码
正在修改 centos 组的密码新密码:
请重新输入新密码:
[root@rhel5 ~]# su - jjx
[jjx@rhel5 ~]$ ls
b_d  bin  file01.txt  file02.txt  include  kerberos  lang.sh  lib  sbin  scripts  sudo  test  testgrp  tmp
[jjx@rhel5 ~]$ cd tmp
[jjx@rhel5 tmp]$ ll
总计 20
drwxr-xr-x 2 root root 409601-0720:51 data
-rw-rw-r-- 1 jjx  jjx     001-2011:29 hellgrp
drwxr-xr-x 3 root root 409612-2316:27 users
[jjx@rhel5 tmp]$ id
uid=500(jjx) gid=500(jjx) groups=0(root),500(jjx) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[jjx@rhel5 tmp]$ newgrp centos   #临时设定centos组为用户jjx的基本组
密码:
[jjx@rhel5 tmp]$ id    #可以看到jjx的基本组被设定成了centos哈
uid=500(jjx) gid=2006(centos) groups=0(root),500(jjx),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[jjx@rhel5 tmp]$ touch hellogrp01    [jjx@rhel5 tmp]$ ll
总计 24
drwxr-xr-x 2 root root   409601-0720:51 data
-rw-rw-r-- 1 jjx  jjx       001-2011:29 hellgrp
-rw-r--r-- 1 jjx  centos    001-2011:34 hellogrp01  #可以看到hellogrp01的属组为centos哈
drwxr-xr-x 3 root root   409612-2316:27 users
[jjx@rhel5 tmp]$ exit   #退出centos组
exit
[jjx@rhel5 tmp]$ id    #用户jjx的基本组又变回原来的jjx组了哈
uid=500(jjx) gid=500(jjx) groups=0(root),500(jjx) context=root:system_r:unconfined_t:SystemLow-SystemHigh

 


修改组属性

命令名称:groupmod

命令所在路径:/usr/sbin/groupmod

执行权限:root

功能描述:修改组属性

语法:groupmod [选项] groupname

常用选项:

-n:修改组名(注意:新组名不能与已有的组名相同,否则不能改名)

范例:

[root@rhel5 home]#id user1
uid=2003(user1) gid=5002(test)groups=5002(test),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@rhel5 home]# groupmod -n user1 test   #将test组名改为user1
[root@rhel5 home]# id user1
uid=2003(user1) gid=5002(user1)groups=5002(user1),2006(centos) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@rhel5 home]# groupmod -n centos user1
groupmod: centos is not a unique name      #提示centos的组名已经存在不能修改哈

 

-g:修改指定组的GID,如果被指定的GID存在而要强制修改,则与-o选项合用

范例:

[root@rhel5 home]#tail -/etc/group
51CTO:x:5004:
[root@rhel5 home]# groupmod -g5002 51CTO 
groupmod: 5002 is not a unique GID     #提示GID=5002已经存在,不能被指定哈
[root@rhel5 home]# groupmod -g5002-o 51CTO   #强制指定GID=5002
[root@rhel5 home]# tail-3/etc/group
DBA:x:101:
user1:x:5002:
51CTO:x:5002:

删除组

命令名称:groupdel

命令所在路径:/usr/sbin/groupdel

执行权限:root组

功能描述:删除组(若删除群组为某些用户的基本组,则必须先删除这些用户后,方能删除群组)

语法:groupdel groupname

范例:

[root@rhel5 home]# groupdel 51CTO
groupdel: cannot remove user's primary group.
[root@rhel5 home]#tail-3/etc/group
DBA:x:101:
user1:x:5002:
51CTO:x:5002:      #因为51CTO组的GID与user1组的GID相同,所以不让删除哈
[root@rhel5 home]# groupmod -g5003 51CTO
[root@rhel5 home]# groupdel 51CTO
[root@rhel5 home]# tail-3/etc/group
centos:x:2006:DBA:x:101:user1:x:5002:

本次博文的内容就这么多哈,欢迎大家指正!下期我们来说说用户权限哈!~~

转载于:https://blog.51cto.com/sweetpotato/1352690

最后

以上就是激情牛排为你收集整理的Linux运维实战之用户和组的全部内容,希望文章能够帮你解决Linux运维实战之用户和组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部