linux中用户和组的管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux中用户和组的管理相关的知识,希望对你有一定的参考价值。
一、用户的帐号管理
①添加帐号:useradd
选项:
-c, --comment ‘COMMENT’;在创建用户时为用户添加注释信息,一般为全名。
-d, --home/PATH/TO/HOME_DIR:在创建用户的时候为用户指定家目录的绝对路径,被指定的目录应该是事先不存在的目录;
-g, --gid GROUPNAME:在创建用户时,为用户指定主组;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:在创建用户时,为用户添加附加组;
-m, --create-home:在创建用户时强制性的为用户创建家目录
-M:在创建用户时,不会创建用户的家目录,即使在/etc/login.defs和CREATE_HOME的值为yes也不创建,
-r, --system:创建系统用户
-u, --uid UID:在创建用户的时候,为用户指定UID,这个UID可以超出60000的限制;
-s, --shell /PATH/TO/SHELL:在创建用户时,为用户指定默认shell,使用绝对路径;
-D, --defaults:显示或修改用户默认属性值;
-s, --shell /PATH/TO/SHELL:修改/etc/default/useradd文件中SHELL的默认值;、
示例:# useradd -u 5000 -g centos -G distro,peguin gentoo
意为:创建用户gentoo,UID为5000,基本组为centos,附加组为distro和peguin
# useradd -c "fedora Core" -G distro,peguin -s /bin/tcsh fedora
意为:创建用户fedora,其全名为"Fedora Core",附加组为distro和peguin,默认shell为/bin/tcsh;
注:此两个过程可能要新建centos、distro、penguin组
用户帐户本身在 /etc/passwd 中定义。Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow。该文件不像 /etc/passwd,只有对于 root 用户来说是可读的,并且包含加密的密码信息。我们来看一看 /etc/shadow 的一个样本行:
drobbins1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
每一行给一个特别帐户定义密码信息,同样的,每个字段用 : 隔开。第一个字段定义和这个shadow条目相关联的特别用户帐户。第二个字段包含一个加密的密码。其余的字段在下表中描述:
字段 3 自 1/1/1970 起,密码被修改的天数
字段 4 密码将被允许修改之前的天数(0 表示“可在所有时间修改”)
字段 5 系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”)
字段 6 密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”)
字段 7 密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”)
字段 8 该帐户被禁用的天数(-1 表示“该帐户被启用”) 字段9保留供将来使用
②删除帐号userdel
选项:
-r:删除用户的同时,清除用户的家目录
示例:# userdel -r sam
意为:此命令删除用户sam在系统文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的记录,同时删除用户的主目录。
③修改帐号信息usermod
选项:
-c, --comment‘COMMENT’;修改用户的注释信息;
-g, --gid GROUPNAME:修改用户的主要组
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户的附加组为列表中的组;
-a, --append;与-G选项同时使用,给用户添加新的附加组;
-d, --home /PATH/TO/HOME_DIR:修改用户的家目录;
-m, --move-home:与-d选项同时使用,将旧的家目录中的数据移动至新家之中;
-l, --login NEW_LOGIN:更改用户账户的登录名;
-s, --shell /PATH/TO/SHELL:修改用户账户的登录shell
-u, --uid UID:修改用户的UID
-L, --lock:锁定用户密码;
-U, --unlock:解锁用户密码;
示例:# usermod gentoo -G bin,root -s /bin/csh -c "Gentoo Distribution"
意为:将用户gentoo的附加组修改为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution";
# usermod fedora -aG centos
意为:为用户fedora添加新的附属组centos
④查看帐号属性 id
格式: id user1 显示user1的uid和gid ,缺省为当前用户的id信息
真实的ID:在/etc/passwd定义的用户的UID和GID
有效的ID:当前生效的用户的UID和GID
id [OPTION]... [USER]
-u:尽显示用户的user ID
-g:尽显示用户的group ID
-G:显示用户所有组的ID
-n:以名称来代替ID进行显示
二、用户认证管理
指定和修改用户密码的Shell命令是passwd。超级用户能为自己和其他用户指定密码,普通用户只能修改自己的密码。
①passwd
1.如果省略用户名,意味着更改当前登录用户的密码;
2.如果指定用户名,更改指定用户的密码,只能root使用;
选项:
-l, --lock:锁定用户密码
-u, --unlock:解锁用户密码;
相比较usermod -L|-U而言,其优先级更高;
如果使用usermod -L锁定的用户密码,可以使用passwd -u解锁;
而使用passwd -l锁定的用户密码,无法使用usermod -U解锁;
-d, --delete:删除用户密码;将/etc/shadow文件中第二字段清空
-S, --status:查看用户的密码状态;
--stadin:借住于管道将输入数据流当作标准输入信息送给passwd命令;
echo “PASSWORD”|passwd --stdin USERNAME
示例:# passwd -d sam
意为:此命令将用户sam的密码删除,这样用户sam下一次登录时,系统就不再询问密码
三、用户组的管理
①添加用户组groupadd
选项:
-g gid:在创建组账户的时候,指定组账户的GID;如果不使用该选项指定,系统会选择在组解析文件中出现在的不大于60000最大的GID加1;
-r:创建系统组,意思就是创建一个GID在1~999(1~499)之间的组;
示例:# groupadd -g 1001 group2
意为:此命令向系统中增加了一个新组group2,同时指定新组的组标识号是1001。
②删除用户组groupdel
# groupdel group1
此命令从系统中删除组group1。
③修改用户组的属性gorupmod
选项:
-g gid:修改组账户的ID;
-n :修改组名;
示例:# groupmod mydisk -g 808
意为:将组mydisk的标识号修改为808
四、组的认证管理
①gpasswd命令
选项:
-a, --add user:向名为 group 的组中添加用户 user。
-d, --delete user:从名为 group 的组中移除用户 user。
-r, 删除密码
-R,限制用户登入组,只有组中的成员才可以用newgrp加入该组
五、其他命令
切换用户身份su
su - USERNAME
登录式切换,完全切换;在切换用户的时候,重新读取目标用户的配置文件并且初始化工作环境;相当于su -1 USERNAME
-c COMMAND:
并不会切换用户身份,而是以目标用户的身份执行某命令;
使用su命令的时候,从root切换到其他普通用户,无需密码;但普通用户进行切换时,必须给出目标用户的密码;
进行用户切换之后,不要连续切换,而是用exit命令返回之前的用户;
示例:# su -root -c "命令内容"
意为:用root的身份执行命令
================================================================================
* 、 和用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd,/etc/shadow,/etc/group
Ⅰ. 用户组的所有信息都存放在/etc/group文件中。此文件的格式也 类似于/etc/passwd文件,由冒号隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
(1)“组名”是用户组的名称,由字母或数字构成。和/etc/passwd中的登录名相同,组名不应重复。
(2)“口令”字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或是*。
(3)“组标识号”和用户标识号类似,也是个整数,被系统内部用来标识组。
(4)“组内用户列表”是属于这个组的所有用户的列表,不同用户之间用逗号“,”分隔。这个用户组可能是用户的主组,也可能是附加组。
/etc/group文件的一个例子如下:
# cat /etc/group
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
Ⅱ./etc/shadow中的记录行和/etc/passwd中的一一对应,他由pwconv命令根据/etc/passwd中的数据自动产生。他的文件格式和/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
(1)“登录名”是和/etc/passwd文件中的登录名相一致的用户账号
(2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不必口令;如果含有不属于集合{ ./0-9A-Za-z }中的字符,则对应的用户不能登录。
(3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不相同。例如在SCO Linux中,这个时间起点是1970年1月1日。
(4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
(5)“最大时间间隔”指的是口令保持有效的最大天数。
(6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
(7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
(8)“失效时间”字段给出的是个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是个合法的账号,也就不能再用来登录了。
下面是/etc/shadow的一个例子:
# cat /etc/shadow
rootnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
Ⅲ./etc/passwd文件是用户管理工作涉及的最重要的一个文件。Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,他记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。他的内容类似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18rinter administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
从上面的例子我们能看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段,其格式和具体含义如下:
代码:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
(1)“用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号,因为冒号在这里是分隔符。为了兼容起见,登录名中最佳不要包含点字符“.”,并且不使用连字符“-”和加号“+”打头。
(2) “口令”,一些系统中存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,不过由于/etc/passwd文件对所有用户都可读,所以这仍是个安全隐患。因此,目前许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特别的字符,例如“x”或“*”。
(3)“用户标识号”是个整数,系统内部用他来标识用户。一般情况下他和用户名是一一对应的。如果几个用户名对应的用户标 识号是相同的,系统内部将把他们视为同一个用户,不过他们能有不同的口令、不同的主目录及不同的登录Shell等。通常用户标识号的取值范围是 0~65535。0是终极用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是 500。
(4)“组标识号”字段记录的是用户所属的用户组。他对应着/etc/group文件中的一条记录。
(5) “注释性描述”字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的 格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
(6)“主目录”,也就是用户的起始工作目录,他是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用 户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
(7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程式,即Shell。Shell是用户和Linux系统之间的接口。
以上是关于linux中用户和组的管理的主要内容,如果未能解决你的问题,请参考以下文章