Linux中用户与用户组管理
Linux中用户与用户组管理 一、用户管理 1.建立用户 Linux中建立用户是通过Useradd(有些系统也成为adduser)实现的。下面举个简单的例子, 建立一个名为testuser1的新用户: $useradd testuser1 这个命令通过完成下列动作建立新用户: 在/etc/passwd文件中建立没有口令的用户项目; 为用户指定ID; 将用户加入到相应的组中。在Red Hat中,就是对用户生成只有改用户作为唯一成员的组; 对用户建立主目录(大多数Linux版本中为/home/testuser1)并将/etc/skel的内容复制到主目录中。 如果要改变系统缺省的用户ID,可以用-u标志在建立用户时强制指定用户ID ,例如: $useradd -u 10001 testuser1 指定帐号testuser1的用户ID为10001。 同样,如果要为用户指顶特定组作为缺省组,可以用-g标志在建立用户时指定所属的组,例如: $useradd -g users testuser1 在建立用户testuser1的同时将其加入到users组中。 进一步假设,如果testuser1除了属于缺省users组外还属于组group1和group2 ,则可以用-G 标志指定在建立帐号时加入新用户的其它组: $useradd -g users -G group1,group2 testuser1 最后,如果要对用户指定其它主目录,用-d标志: $useradd -d /testuser1 testuser1 2.改变useradd的缺省设置 useradd使用的一些缺省设置,可以在每次建立用户时改写。这些缺省设置可以用useradd 命令的-D标志和几个补充标志复位。 -D标志要跟补充标志一起使用。下面介绍-b和-g标志,分别复位缺省主目录路径和缺省组。 例如,要设置缺省主目录路径为/users,用下列命令: $adduser -D -b /users 同样,要设置所有新用户的缺省组为users,用系列命令: $adduser -D -g users 这两个命令可以合起来用: $adduser -D -b /users -g users 3.改变口令 改变口令用passwd命令实现。用户要改变口令时,只需在命令提示符下执行这个命令,然后输 入当前口令并输入两次新口令即可。 在许多Linux版本中,passwd命令检查口令是否太短、太简单、太象用户名或太象原口令, 无效的口令会产生错误信息。 根用户有权改变任何用户的口令,可以在passwd命中提供用户名变元。这时 ,只提示输 入新口令两次。例如: $passwd testuser1 这时只需输入两次新口令,即可改变testuser1的口令。 4.建立缺省主目录 缺省情况下,每个用户都有个主目录,通常在/home目录中。建立用户帐号时,其主目录建 立并放上缺省文件集。这个缺省文件集从/etc/skel目录中复制,其中包含新主目录的目录树。 要把一个文件放进每个新主目录中,只要生成文件并将其按用户主目录中要显示的名称放进 /etc/skel目录中。此后加入的所有用户建立用户帐号时,其主目录中都会有这个文件。 5.删除用户 删除用户与加入用户是平行的过程,用userdel命令实现。例如: $userdel testuser1 这里有个问题,用户的文件没有删除。要同时删除用户的主目录,用-r标志实现: $userdel -r testuser1 还有另外一个问题是,如果在系统的其它地方还有属于该用户的文件要删除呢? 这可以在删除用户之后用find命令进行。为此,删除用户之前要从口令文件记下 用户的用户ID(这里假设用户ID为10001),然后用find命令如下: $find / -type -uid 10001 -print -exec rm {} 二、管理用户组 1.建立组 利用groupadd命令可以将新组加进系统中。例如,要建立名为ye的新组,用groupadd命令如下: $groupadd ye 如果要指定组ID,可用-g标志,例如 $groupadd -g 503 ye 2.将用户加进组中 没有一个标准程序能方便地将用户加进组中。为此,最简单的办法是直接编辑/etc/group文件。 这个文件中的每一行表示一个组的定义,形式如下: ::: groupname是组名;password是组的加密口令,组通常不用口令,因此这个字段通常空白; groupid是组ID;最后,userlist是属于该组的用户清单,用逗号分隔。例如,如果user1, user2和user3都属于组group1,其组ID为505,则组的项目如下: group1::505:user1,user2,user3 要将用户加进组中,用任意文本编辑器编辑/etc/group文件,并将用户名加进用户清单末尾, 用逗号分隔。 3.删除组 删除组用groupdel命令进行。这个命令很简单,没有标志也没有选项。例如,要删除上面所 建立的ye组,用groupdel命令如下: $groupdel ye 尽管这个命令很简单,但是还是有几点要注意。首先,属于组的文件不会删除或改变所属组; 其次,如果组是用户的基础组(即在口令文件中显示为该用户的组),则这个组无法删除。 第一个问题可以象删除用户后删除用户的文件一样处理。首先要记住要删除的组的ID。 用groupdel命令删除组后,可以用find命令改变属于已删除组的所有文件的组所有权(假设要删除的组的ID为503): $find / -type f -gid 503 -print -exec chgrp newgroupname {} 这个find命令会找出组ID为503的组中的所以文件,然后用chgrp命令改变组中文件的组 所有权为属于另一个newgroup组。