一、linux用户与组管理的基本介绍
1、任何一个用户想要使用Linux系统都要向管理员申请一个账号,对这些账号的管理即是对用户的管理,所谓组,就是多个账号的集合。用户和组管理可以提高用户的管理效率、工作效率以及系统的安全性,比如将同一个部门的成员放在一个组里并设置权限,这样可有效的对资源共享,同时可以避免其他部门的人恶意破坏。
2、用户和组的管理内容一般有如下几点:
用户账号的增加、删除和权限的修改; 组账号的增加、删除和权限的修改,组成员的添加与删除; 用户账号密码和组账号密码的管理;
3、用户可以分为管理员和普通用户,普通用户又可以细分为系统用户和登录用户。Linux系统并不是通过用户名来识别用户的,而是通过用户的ID号(UID)。系统管理员的ID号为0,普通用户的可用ID号为1至65535,其中系统用户的可用ID号在CentOS6中为1-499,在CentOS中为1-999;登录用户的可用ID号在CentOS6中为500及以上,在CentOS中为1000及以上。
4、组对应用户可以分为管理员组和普通组,普通组又可以分为系统组和普通组,系统也是通过ID号来识别用户组的其组号与上面的用户ID号对应。对于一个用户来说是可以有多个组的,因此,组还可以分为用户的基本组(主组)和附加组。基本组组名和用户名相同,且只有一个用 户,基本组以外的组属于用户的附加组,用户只能有一个基本组,附加组可以有多个。
二、用户和组的相关配置文件的介绍
1、/etc/passwd
此文件记录的是Linux用户的基本信息,以冒号“:”分为7个字段,每个字段代表不同的意义,了解其格式我们可以查看man手册:
account:password:UID:GID:GECOS:directory:shell account:用户名 password:用户密码,早期的用户密码是放在/etc/passwd文件(只有管理员可以读取)中的,但是由于所有人都可以读取此文件,很不安全,因此后来就将这个字段的密码数据改放到/etc/shadow文件中,此字段用X字母表示 UID:用户ID GID:组ID GECOS:用户的注释信息 directory:用户的家目录 shell:用户默认登录的shell
以root账号为例:
root:x:0:0:root:/root:/bin/bash
2、/etc/shadow
此文件记录的是用户的密码信息,以冒号“:”分为9个字段,如下:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field login name:登录用户名称 encrypted password:加密的密码,如果此字段的第一个字符是“*”或“!”,表示此账号被锁定,不能登录系统 date of last password change:最近可以改动密码的日期,以1970年1月1日开始以天为单位 minimum password age:密码不可改动的天数,如果此字段为0则表示随时可以修改密码 maximum password age:密码需要重新修改的日期,默认此字段为99999,表示99999天后必须重新更改密码 password warning period:密码需要重新修改期限前的警告期,比如99999天后必须修改密码,但是系统会提前告知用户,默认提前7天 password inactivity period:密码过期的宽限时间,指定密码过期后几天将被禁用,但在此间账号任然可以登录 account expiration date:密码被禁用的日期,从1970年1月1日算起,以天为单位,这个账号在此字段规定的日期之后,将无法再使用。 reserved field:保留字段
以root为例:
root:$6$JPIUZBv/rrjJRRvU$8oTHpJ04gHA7iwWK7Ea6DMSQJmo01JJd4ClwJUEMFeyavOPdxFRpGpmjzYZd4PZNMQpK4qot4acCyyRlV6.hP.:17002:0:99999:7:::
3、/etc/group
此文件记录的是用户组的相关信息,以冒号“:”分为4个字段,如下:
group_name:passwd:GID:user_list group_name:用户组名称 passwd:用户组密码,通常不用设定,因为密码是被记录在/etc/gshadow文件中 GID:用户组ID user_list:组成员
以root为例:
root:x:0:gentoo
4、/etc/gshadow
此文件记录的是用户组的密码信息,以冒号“:”分为4个字段,如下:
group name:encrypted password:administrators:members group name:组账号 encrypted password:加密的组密码 administrators:组管理员 members:组成员
以root为例:
root:::gentoo
5、管理员可以通过修改以上4个文件来对用户和组进行管理,同时也可以使用命令对用户和组进行管理。
三、用户管理命令的介绍
1、useradd
功能:
创建系统新用户
语法:
useradd [options] LOGIN useradd -D useradd -D [options]
选项:
-u:指定用户的UID -o:不检查UID的唯一性。配合-u选项使用,强制指定UID,即使UID已存在 -g:指定用户的基本组,可以用组名或GID,组必须事先存在 -c:添加用户的注释信息 -d:指定用户登录时进入的目录,即主目录,事先不存在会自动创建,但是家目录的父目录必须存在 -e:指定账号的有效期限,格式为:YYYY-MM-DD -f:指定账号过期几天后永久锁定,0表立刻锁定,-1表示关闭此功能 -s:指定用户登录的默认shell -G:指定用户的附加组,多个组则用逗号隔开,组必须事先存在 -N:不创建用户的主组,使用users组做为其主组 -r:创建系统用户,系统用户默认不会创建家目录,可以配合-m选项实现 -M:强制不创建家目录 -D:不接选项为显示当前系统预设值,接选项为修改给系统预设值,可接的选项如下: -b:修改新用户的默认家目录,若使用-d选项后此选项无效 -e:修改新账号默认的停止日期(有效期限) -f:修改新账号默认的锁定日期 -g:修改新用户的组,必须事先存在 -s:修改新用户的默认shell 注意:-D选项修改的内容会被记录在/etc/login.defs文件中,因此是永久生效的
示例:
新建了一个用户haha,该用户的登录Shell是/bin/sh,同时又属于bin和root用户组,UID为2048,家目录为/testdir/haha [root@localhost ~]# useradd -G bin,root -s /bin/sh -d /testdir/haha -u 2048 haha
2、usermod
功能:
修改用户账号属性
语法:
usermod [options] LOGIN
选项:
-u:修改用户UID -g:修改用户GID -G:新附加组(且组需事先存在),原来的附加组将会被覆盖;若保留原有组,则要同时使用-a 选项, -s:修改用户的默认shell -c:添加新的注释信息 -d:新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项 -l:修改用户命名 -L:锁定用户,即在/etc/shadow第二个字段最前面添加“!” -U:解锁用户,即将/etc/shadow第二个字段最前面的“!”删除 -e:指明用户账号过期日期,格式为YYYY-MM-DD -f:设定非活动期限,即用停权期限
说明:
usermod命令不可以修改正在线上的用户的名称,当usermod用来改变UID时,必须确认用户没在电脑上执行任何程序。
示例:
将用户haha添加到用户组users中,同时不离开其他用户组 [root@localhost ~]# usermod -aG users haha
3、userdel
功能:
删除用户
语法:
userdel [options] LOGIN
选项:
-f:强制删除用户,即使用户已登录 -r:删除用户的同时删除与用户相关的所有文件
示例:
[root@localhost ~]# userdel -r gentoo
注意:请不要轻易用-r选项,如果用户目录下有重要的文件,在删除前请备份。
4、passwd
功能:
修改用户的密码信息,只有管理员可以修改指定用的密码信息,其他普通用户只能修改自己的密码。
语法:
passwd [option] [username]
选项:
-l:锁定指定用户的密码 -u:解定指定用户的密码 -e:强制用户下次登录时修改密码 -n:指定用户密码的最短使用期限 -x:指定用户密码的最大使用期限 -w:提前多少天警告用户修改密码 -i:用户停权的期限 -S:显示指定用户的信息,包括加密算法 -k:设置密码过期后才能修改密码,即保持用户密码不过期 -g:修改组密码 -d:删除密码,只有管理员才有权限 --stdin:从标准输入接收并设置用户密码,如下: echo "PASSWORD" | passwd --stdin USERNAME
示例:
锁定用户user1密码,将用户sam的密码删除 [root@localhost ~]# passwd -l user1 ; passwd -d sam
5、chage
功能:
修改用户密码过期信息
语法:
chage [options] LOGIN
选项:
-d:上一次修改密码的日期,其格式为YYYY-MM-DD,如果设置为0则表示此用户在下次登录时必须修改密码 -E:设置密码到期的日期,超过此天用户密码则被锁定(设置的是/etc/shadow文件的第8字段) -I:设定停滞时间,超过此时间段账号将不可用,(设置的是/etc/shadow文件的第7字段) -m:密码可以修改的最小天数,设置为0时表示任何时候都可以修改 -M:密码有效的最大天数 -W:密码到期,提前几天警告 -l:显示用密码设置的信息
示例:以我的系统为例
(1)[root@localhost ~]# chage -l root 最近一次密码修改时间 :从不 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 (2)[root@localhost ~]# chage -I 5 user1 [root@localhost ~]# chage -l user1 最近一次密码修改时间 :8月 02, 2016 密码过期时间 :10月 01, 2016 密码失效时间 :10月 06, 2016 帐户过期时间 :1月 01, 1970 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :60 在密码过期之前警告的天数 :7
6、finger
功能:
用户信息查找程序。单独执行finger指令,它会显示本地主机现在所有登录用户的信息。如果要查询远程主机的用户信息,需要使用user@host的格式
语法:
finger [-lmsp] [user ...] [user@host ...]
选项:
-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容; -m:不查找用户的真实姓名; -s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话; -p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容
示例:
[root@localhost ~]# finger linuxpao Login: linuxpao Name: Directory: /home/linuxpao Shell: /bin/bash On since Tue Aug 2 16:25 (CST) on tty3 6 minutes 47 seconds idle New mail received Fri Jul 29 21:19 2016 (CST) Unread since Wed Jul 20 17:51 2016 (CST) No Plan.
7、chfn
功能:
修改finger命令显示的信息
语法:
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
选项:
-f:设置用户真实姓名 -o:设置用户的办公室地址 -p:设置用户的办公室电话 -h:设置用户的家庭电话
示例:
[root@localhost ~]# chfn Changing finger information for root. Name [root]: xiaobao Office []: 北京三里屯 Office Phone []: 010020 Home Phone []: 12345678 Finger information changed.
8、chsh
功能:
修改过用户的登录shell
语法:
chsh [-s shell] [-l] [-u] [-v] [username]
选项:
-s:修改用户的shell -l:打印当前系统支持的shell(即/etc/shells文件记录的shell)
示例:
(1)查看当前系统支持的shell [root@localhost ~]# chsh -l /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh (2)修改用户haha的shell为/bin/csh [root@localhost ~]# chsh -s /bin/csh haha Changing shell for haha. Shell changed.
四、用户组管理命令的介绍
1、groupadd
功能:
创建一个新组。 组名必须以小写字母或者下划线开头,跟随小写字母、下划线或短横线。可以由美元符号结束。用正则表达式就是:[a-z_][a-z0-9_-]*[$]? 组名最长为 16 个字符。
语法:
groupadd [选项] group
选项:
-g:指定新组的GID -o:需与-g选项连用,此选项允许添加一个使用非唯一 GID 的组。 -r: 创建一个系统组 -K:覆盖/etc/login.defs文件的默认值
示例:
增加了一个新系统组xixi,同时指定新组的组标识号是222 [root@localhost ~]# groupadd -r 222 xixi [root@localhost ~]# tail -1 /etc/group xixi:x:222:
2、groupmod
功能:
修改用户组相关信息
语法:
groupmod [选项] GROUP
选项:
-n:修改用户组的名称 -g:修改用户组的GID -o:与-g选项连用,表示强制使用某个已经存在的组ID号
示例:
将组xixi的标识号改为10000,组名修改为xixihaha [root@localhost ~]# groupmod -g 10000 -n xixihaha xixi [root@localhost ~]# getent group xixihaha xixihaha:x:10000:
3、groupdel
功能:
删除一个组
语法:
groupdel [选项] GROUP
说明:
不能移除现有用户的主组。在移除此组之前,必须先移除此用户
示例:
删除user1组(用户user1已删除) [root@localhost ~]# groupdel user1
4、gpasswd
功能:
管理用户组,是组文件/etc/group和/etc/gshadow的管理工具
语法:
gpasswd [选项] group
选项:
-a:向group添加新用户 -d:从group删除用户 -r:删除组密码 -A:指定组管理员 -M:指定组成员
示例:
将用户haha,sarah加入admins组 [root@localhost ~]# gpasswd -M haha,sarah admins [root@localhost ~]# tail /etc/group tcpdump:x:72: linuxpao:x:500: admins:x:502:haha,sarah
5、newgrp
功能:
临时登录到一个新组
语法:
newgrp [-] [group]
示例:
如果用户本不属于某组,则需要组密码,如下示例 [root@localhost ~]# id haha uid=2048(haha) gid=2048(haha) groups=2048(haha),0(root),1(bin),100(users),502(admins) [root@localhost ~]# su - haha [haha@localhost ~]$ newgrp admins [haha@localhost ~]$ id uid=2048(haha) gid=502(admins) groups=502(admins),0(root),1(bin),100(users),2048(haha) [haha@localhost ~]$ newgrp harry(组) Password:
6、groupmems
功能:
管理和查看主组成员
语法:
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
选项:
-a:将一个用户添加到组成员列表 -d:从组成员列表中删除用户 -g:超级用户可以指定修改哪个组的组成员列表,需要配合其他几个选项使用 -l:列出组成员 -p:从组成员列表中删除所有用户
示例:
显示bin组的成员 [root@localhost ~]# groupmems -l -g bin bin daemon haha 向bin组添加成员linuxpao [root@localhost ~]# groupmems -a linuxpao -g bin [root@localhost ~]# groupmems -l -g bin bin daemon haha linuxpao
7、groups
功能:
查看用户所属组
语法:
groups [OPTION]... [USERNAME]...
示例:
显示haha用户所在的组 [root@localhost ~]# groups haha haha : haha root bin users admins
五、用户与组管理的相关命令补充
1、newusers
功能:
批量更新和创建新用户
语法:
newusers [选项] [文件]
选项:
-c:使用指定的方法加密密码,可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512,前提是您的 libc 支持这写方法 -r:创建一个系统账户 -s:使用指定次数的轮转来加密密码,值 0 表示让系统为加密方法选择默认的轮转次数 (5000),默认,轮转数由 /etc/login.defs 文件中的 SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS变量确定
文件格式:
必须是/etc/passwd文件的格式,如下: pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell 对应 用户名:密码:UID:GID:GECOS:家目录:登录shell
示例:
创建文件user.txt,以批量添加用户haha1,haha2,haha3. vim user.txt(以下是文件内容) haha1:x:3001:3001::/home/haha1:/bin/bash haha2:x:3002:3002::/home/haha2:/bin/bash haha3:x:3003:3003::/home/haha3:/bin/bash ------------------------------------------ [root@localhost testdir]# newusers user.txt (批量创建) [root@localhost testdir]# tail -3 /etc/passwd (查看创建结果) haha1:x:3001:3001::/home/haha1:/bin/bash haha2:x:3002:3002::/home/haha2:/bin/bash haha3:x:3003:3003::/home/haha3:/bin/bash
2、chpasswd
功能:
批量更新用户密码
语法:
chpasswd [选项]
格式:
user_name:password,默认必须明文提供密码,然后由 chpasswd 加密
选项:
-c:使用指定的方法加密密码 -e:提供的密码是已经加密了的 -m:如果提供的密码没有加密,则使用 MD5 加密而不是 DES -s:使用指定次数的轮转来加密密码
示例:
创建文件passwd.txt,以批量添加用户haha1,haha2,haha3的密码,算法使用MD5。 vim passwd.txt (以下为文本内容) haha1:123456 haha2:qwerty haha3:asdfgh ----------------------------------------- [root@localhost testdir]# cat passwd.txt | chpasswd -c MD5(批量加密) [root@localhost testdir]# tail -3 /etc/shadow (加密结果) haha1:$1$Epulz/Ew$.VMMX.uodFeo7wOay6slU.:17015:0:99999:7::: haha2:$1$YMvrS/Ks$S5aDmDuaRwG3NsOe4z7wS1:17015:0:99999:7::: haha3:$1$hwyABoHg$tY0ZP4xmRQ.pwmkuMKiXD0:17015:0:99999:7:::
3、id
功能:
显示真实有效的用户和组ID号
语法:
id [OPTION]... [USER]
选项:
-u:显示用户UID -g:显示用户主组的GID -G:显示用户所属附加组的GID -n:显示组名称而非数字,与-ugG 一起使用 -r:显示真实ID 而非有效ID,与-ugG 一起使用 -Z:仅显示当前用户的安全环境
示例:
显示haha的用户ID和所有组ID [root@localhost testdir]# id haha uid=2048(haha) gid=2048(haha) groups=2048(haha),0(root),1(bin),100(users),502(admins)
4、su
功能:
切换用户或以其他用户身份执行命令
语法:
su [options...] [-] [user [args...]]
选项:
-l:使用新用户的所有相关环境设定文件,相当于 su - username -m:表示使用目前的环境设定,而不重新读取新用户的设定文件 -c:仅执行一次命令,所以 -c 后面可以加上命令 -s:指定要执行的shell
示例:
使用帐号为root并在执行ls指令后退出变回原使用者 [root@localhost testdir]# su -c ls root(需要注意文件权限问题) bc file haha ls passwd.txt uset.txt cat file1 lost+found [root@localhost testdir]#
5、getent
功能:
用来察看系统的数据库中的相关记录
语法:
getent database [key ...]
datebase包括的列表:
ahosts;ahostsv4;ahostsv6;aliases;ethers;group;gshadow;hosts;initgroups; netgroup;networks;passwd;protocols;rpc;services;shadow
示例:
使用命令getent查看Linuxpao用户在/etc/passwd文件中信息 [root@localhost testdir]# getent passwd linuxpao linuxpao:x:500:500::/home/linuxpao:/bin/bash
6、pwconv和pwunconv
功能:
pwconv:开启用户的投影密码 pwunconv:关闭用户的投影密码
示例:
[root@localhost testdir]# getent passwd haha haha:x:2048:2048::/testdir/haha:/bin/csh [root@localhost testdir]# getent shadow haha haha:$6$3X8z.cbV$khAmbdajf7fyqZaNtRZWKBlRAaKuPUm6pvGIyvfhJfSMObQVX08k/6wUoksDDc/G71UhxBUNBeO0/Waa.hUPN1:17015:0:99999:7::: -----------以上是关闭用户的投影密码前haha用户的/etc/passwd和/etc/shadow [root@localhost testdir]# pwunconv (关闭投影密码) [root@localhost testdir]#getent passwd haha (可以看到/etc/shadow密码移到了/etc/passwd) haha:$6$3X8z.cbV$khAmbdajf7fyqZaNtRZWKBlRAaKuPUm6pvGIyvfhJfSMObQVX08k/6wUoksDDc/G71UhxBUNBeO0/Waa.hUPN1:2048:2048::/testdir/haha:/bin/csh [root@localhost testdir]# cat /etc/shadow | grep haha(提示/etc/shadow不存在) cat: /etc/shadow: No such file or directory ------------- [root@localhost testdir]# pwconv (开启投影密码,恢复系统默认状态) [root@localhost testdir]# getent shadow haha haha:$6$3X8z.cbV$khAmbdajf7fyqZaNtRZWKBlRAaKuPUm6pvGIyvfhJfSMObQVX08k/6wUoksDDc/G71UhxBUNBeO0/Waa.hUPN1:17015:0:99999:7:::
7、pwck
功能:
检查密码文件的完整性
语法:
pwck [选项] [passwd [ shadow ]]
选项:
-q:只报告错误。不显示那些不需要用户操作的警告 -r:在只读模式下执行 pwck -s:根据用户UID排序
示例:
[root@localhost testdir]# pwck -r /etc/passwd /etc/shadow user 'adm': directory '/var/adm' does not exist user 'uucp': directory '/var/spool/uucp' does not exist user 'gopher': directory '/var/gopher' does not exist user 'ftp': directory '/var/ftp' does not exist user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
8、grpck
功能:
检查组文件的完整性。grpck检查发现错误以后,在命令行提示用户是否删除错误的记录
语法:
grpck [选项] [group [ shadow ]]
选项:
-r:在只读模式下执行grpck -s:根据用户GID排序
示例:
[root@localhost testdir]# grpck /etc/gshadow invalid group file entry delete line 'root:::haha,linuxpao'? y(回复y表示同意删除)
9、vipw
功能:
编辑/etc/passwd或/etc/shadow文件
语法:
vipw [选项]
选项:
-p:编辑passwd数据库 -q:安静模式 -s:编辑shadow数据库
示例:
[root@localhost testdir]# vipw -p /etc/passwd root:x:0:0:xiaobao,北京三里屯,010020,12345678:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
10、vigr
功能:
编辑/etc/group和/etc/gshadoww
语法:
vigr [选项]
选项:
-g:编辑group数据库 -q:安静模式 -s:编辑gshadow数据库
示例:
[root@localhost testdir]# vigr -s root:::haha,linuxpao bin:::bin,daemon,haha,linuxpao
原创文章,作者:pao,如若转载,请注明出处:http://www.178linux.com/27442
评论列表(1条)
文章整体架构层次清晰,对用户和组相关的命令有理论有时间,如果能将权限管理类一起总结起来,对以后的复习会更好。