首页 > linux > linux 创建新账号 useradd 命令使用
2009七月21

linux 创建新账号 useradd 命令使用

在好久好久以前,我曾经写过两篇介绍 linux 下面与用户有关的一些文件,现准备用一些时间来介绍一下 linux 管理账号相关的操作,既然是管理账号咱就先来了解一下 linux 创建新账号useradd的命令,改日为您奉上设置用户密码,及删除账号的一些命令。

本文仍然参考自《鸟哥的Linux私房菜》,所以如果列位也可认为我是把鸟哥的一些东西整理一下也好。呵呵,反正是为了自己和大家看着方便。Let’s Go~

与用户管理相关的文件:

虽然以前介绍过,但是这里再简单回顾一下,温故而知新。在 Linux 系统中,与用户管理有关的文件主要有如下几个:分别是/etc/passwd,/etc/shadow,/etc/gfoup,/etc/gshadow 。它们分别与用户的账号,密码,用户组及用户组密码有关。

所以创建新账号的过程也就是和这几个文件在打交道,不过不要害怕,通过 useradd 命令来创建新账号,系统会自动与这些文件进行操作不用咱手动一个一个的来更改,这样也不用担心出错的问题。呵呵。

useradd 语法结构:

有事找“男人”是Linux最有效的方法,咱先来看一下useradd的语法结构,因为本人现在系统是Fedora11,其man语句直接用的中文,虽然方便阅读却也难免有错误,不过基本还好,大家看到下面的汉字勿怪,呵呵:

名 称 useradd – 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯

语 法 useradd [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-m [-k skeleton_dir] | -M] [-s shell]
[-u uid [ -o]] [-n] [-r] username

useradd -D [-g default_group] [-b default_home]
[-f default_inactive] [-e default_expire_date]
[-s default_shell]

首先来说一下这个 -D 参数,如果加上此参数当 useradd 会显示出现创建新账号的一些默认值,或是通过指定参数内容来更新默认值。这个咱们稍候再来讨论,暂且略过。

看其没有-D参数的各个选项,下面简单为大家描述一二,有个印象,一会儿再看我给列位的示例时也不至于头晕。呵呵。

参数名 描述
-u 后面接UID,是一组数字。直接给这个账号指定一个特定的UID。
-g 后面接的用户组名称就是之前提到的初始用户组。
该group ID(GID)会放置到 /etc/passwd 的第四个字段内。
-G 后面接的用户组名称是这个账号还可以属于哪些用户组。
此参数会修改 /etc/group 内的相关数据。
-M 强制不创建家目录。
-m 强制必须创建家目录。
-c 就是 /etc/passwd 第五栏的用户说明信息,可以随便设置,各位随意。
-d 用此参数后面指定的路径做为新账号的家目录,而不使用默认值。
-r 创建的账号为系统账号:该账号的UID会有限制(/etc/login.defs)
-s 指定新账号的默认shell

useradd 示例:

说了这么半天,咱也来动手用 useradd 命令新建几个账号,提升一下咱的动手能力。另外,算是做个演示吧,毕竟实践出真知嘛。呵呵,不过我忘了这是哪位伟人说的话了。嗯。

# 不加任何参数,直接默认创建一个新用户 chongpig
[simaopig@xiaoxiaozi ~]$ useradd chongpig
bash: /usr/sbin/useradd: 权限不够
[simaopig@xiaoxiaozi ~]$ su
密码:
[root@xiaoxiaozi simaopig]# useradd chongpig
[root@xiaoxiaozi simaopig]# ls -l /home/
总计 24
drwx------.  4 chongpig chongpig  4096 07-21 21:58 chongpig
drwx------.  2 root     root     16384 07-12 13:08 lost+found
drwxr-xr-x. 44 simaopig simaopig  4096 07-21 21:21 simaopig

# 在和用户相关联的几个文件里面搜一下chongpig这个账号

[root@xiaoxiaozi simaopig]# grep chongpig /etc/passwd /etc/shadow /etc/group
/etc/passwd:chongpig:x:501:501::/home/chongpig:/bin/bash
/etc/shadow:chongpig:!!:14446:0:99999:7:::
/etc/group:chongpig:x:501:
# 创建一个新账号 simaopig2 ,且看一下 UID 888 不存在,那么就指定给simaopig2,
# 并且把它加到 mysql 组中
[root@xiaoxiaozi simaopig]# grep 888 /etc/passwd
[root@xiaoxiaozi simaopig]# useradd -u 888 -g mysql simaopig2
[root@xiaoxiaozi simaopig]# grep simaopig2 /etc/passwd /etc/shadow /etc/group
/etc/passwd:simaopig2:x:888:27::/home/simaopig2:/bin/bash
/etc/shadow:simaopig2:!!:14446:0:99999:7:::
# 建立一个系统账号simaopig3 看一下系统账号有啥不同
[root@xiaoxiaozi simaopig]# useradd -r simaopig3
[root@xiaoxiaozi simaopig]# grep simaopig3 /etc/passwd /etc/shadow /etc/group
/etc/passwd:simaopig3:x:490:484::/home/simaopig3:/bin/bash
/etc/shadow:simaopig3:!!:14446::::::
/etc/group:simaopig3:x:484:

系统账号的 UID 与 GID 竟然不同,而且在 /etc/group 里面有对应关系。

细心的同学一定会发现,用 useradd 创建的账号是没有登录功能的,因为其在 /etc/shadow 中的密码栏是不可能登录的,以 ! 开头。所以近日我们还会讨论 Linux 给用户更改密码的方法。

useradd 默认值:

上面的示例可以让我们了解到,系统其实已经规范好了一些新增用户时的参数了,像我没有指定用户的家目录,也没有指定用户的 UID 和 GID 可是系统会帮我们为用户加上,同时其默认shell被设置成了 /bin/bash ,也让我知道了,使用 useradd 命令一定要有 root 权限。那么, useradd 去新增用户时,其默认值是多少呢?

使用上面所说的 useradd 的 -D 参数可以显示出其默认值,各位可以看出,其值完全与 /etc/default/useradd 这个文件里面的内容相同。原来在 linux 中使用 useradd 去新增用户时,一些在 /etc/passwd 中的值是会去参考 /etc/default/useradd 这个文件的。其文件内容基本如下:

# useradd defaults file
# 默认的用户组
GROUP=100
# 家目录的地址
HOME=/home
# 密码过期的宽限时间,对应 /etc/shadow 的第七栏
INACTIVE=-1            
# 账号失效日期,对应 /etc/shadow 的第八栏
EXPIRE=                
# 默认使用的shell
SHELL=/bin/bash          
# 用户家目录里面的内容参照文件(里面基本上全为隐藏文件——>以“.”开头的文件)
SKEL=/etc/skel            
# 建立使用者的mailbox
CREATE_MAIL_SPOOL=yes

总结及啰嗦:

简简单单的先介绍至此,传说中 linux 创建账号还可以使用 adduser 命令,其实这与 useradd 是同一个命令的不同名字罢了。因为大家用 man adduser 进入的完全是 useradd 的介绍页。当然有更简单的通过图形界面创建用户的方法,但是这我就不教大家了。

悄悄的告诉大家,其实这些示例也都是我在敲这篇文章的时候挨个试的,现在我的系统里面真的多了好多用户。呵呵。不过为了保证程序的准确性这是必须滴,毕竟这是我自己的学习过程。

PS:订阅量过40了,有点小开心。谢谢大家。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/07/21/1209/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

20 Responses to “linux 创建新账号 useradd 命令使用”

  1. #1 越夜 回复 | 引用 Post:2009-07-21 23:07

    一个非专业人士把沙发坐了. :!:
    小子,抱歉了. :arrow:

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-07-21 23:12

    @越夜
    呵,不怕啊。沙发就是给大家坐的。呵呵。

    [回复]

  3. #3 LAONB 回复 | 引用 Post:2009-07-22 00:19

    这种我就比较好吸收了 :arrow: 不会想数据库看了就蒙。

    [回复]

  4. #4 hslx111 回复 | 引用 Post:2009-07-22 07:11

    Linux还没用上呢…准备玩完windows7再玩这个…关键是感觉安装驱动比较麻烦 :!:

    [回复]

  5. #5 吖Bee 回复 | 引用 Post:2009-07-22 07:15

    我看到会晕………

    [回复]

  6. #6 simaopig 回复 | 引用 Post:2009-07-22 07:54

    @LAONB
    呵呵,大家能接受就好。这东西只要操作一遍还是很容易记住的。呵呵。

    [回复]

  7. #7 simaopig 回复 | 引用 Post:2009-07-22 07:55

    @hslx111
    还好,听说 雨林木风 出的Linux(包装的Fedora)是可以免驱动的。貌似。

    有兴趣可以试一下。 :lol:

    [回复]

  8. #8 simaopig 回复 | 引用 Post:2009-07-22 07:55

    @吖Bee
    咕~~(╯﹏╰)b,不晕哈。呵呵。 :P

    [回复]

  9. #9 young001 回复 | 引用 Post:2009-07-22 10:36

    终于有看的懂的了,useradd一般就是直接跟用户,要具体的参数的话还是要man

    [回复]

  10. #10 simaopig 回复 | 引用 Post:2009-07-22 10:38

    @young001
    嗯。是啊。不过一般我建议如果要建家目录的话一定要加上 -m 参数。

    因为不同的系统是不一样的,有的默认就会建家目录,有的就不会建。呵呵。

    [回复]

  11. #11 killfox 回复 | 引用 Post:2009-07-22 11:46

    哈哈,这个命令我是熟悉滴……
    终于有个可以看得懂了。

    [回复]

  12. #12 simaopig 回复 | 引用 Post:2009-07-22 11:49

    @killfox
    呵呵。你经常在LINUX下面活动吗?那以后有一些东西可得请教你了。呵呵。

    [回复]

  13. #13 killfox 回复 | 引用 Post:2009-07-22 11:57

    @simaopig
    以前用过,很狂热但啥都不懂,现在老了,不用了,呵呵。

    [回复]

  14. #14 小明猪 回复 | 引用 Post:2009-07-22 13:23

    呵呵,其实应该也把更改用户密码什么的一起丢出来 :D

    [回复]

  15. #15 simaopig 回复 | 引用 Post:2009-07-22 13:25

    @小明猪
    那样一篇太长了。今天写这个。呵呵。 :)

    [回复]

  16. #16 风也飘泊 回复 | 引用 Post:2009-07-22 18:32

    我学过在windows下用CMD建用户的方法….不过都被我忘了.

    [回复]

  17. #17 simaopig 回复 | 引用 Post:2009-07-22 18:33

    @风也飘泊
    你这太高深了。。我只知道在“运行”里敲“control”进控制面板去弄。。。

    佩服一下 :roll: :oops:

    [回复]

  18. #18 bolo 回复 | 引用 Post:2009-07-22 21:37

    Linux的命令没有一定的实践是很难记住的

    [回复]

  19. #19 simaopig 回复 | 引用 Post:2009-07-22 21:46

    @bolo
    呵,没有实际操作过确实很难记住,而且也没啥用。呵呵。 :D

    [回复]

  20. #20 Honwhy 回复 | 引用 Post:2012-01-03 23:43

    还有有点怕的,刚刚接触,还得慢慢啃。

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)