useradd和adduser添加用户工具和方法

On 2010年07月29日, in linux, by netoearth

添加用户工具有useradd 和adduser ,这两个工具所达到的目的都是一样的,在Fedora发行版中,useradd 和adduser 用法是一样的;但在slackware 发行版本中,adduser 和useradd 还是有所不同,表现为adduser 是以人机交互的提问的方式来添加用户;
除了useradd和adduser工具以外,我们还能通过修改用户配置文件/etc/passwd和/etc/groups的办法来实现;

当然我们也不要忽略一些发行版独有用户管理工具,比如Fedora 中有 system-config-users 工具;这个工具比较简单,点几下鼠标就能完成;

1、useradd 工具;

useradd 不加参数选项时,后面直接跟所添加的用户名时,系统时读取添加用户配置文件/etc/login.defs和/etc/default/useradd文件,然后读取/etc/login.defs和/etc/default/useradd中所定义的规则添加用户;并向/etc/passwd和 /etc/groups文件添加用户和用户组记录;当然/etc/passwd和/etc/groups的加密资讯文件也同步生成记录;同时发生的还有系统会自动在/etc/add/default中所约定的目录中建用户的家目录,并复制/etc/skel中的文件(包括隐藏文件)到新用户的家目录中;

useradd 的语法:

usage: useradd [-u uid [-o]] [-g group] [-G group,...]

[-d home] [-s shell] [-c comment] [-m [-k template]]

[-f inactive] [-e expire ] [-p passwd] name

useradd -D [-g group] [-b base] [-s shell]

[-f inactive] [-e expire ]

当我们执行useradd 用户名 来添加用户时,我们会发现一个比较有意思的现象,新添中的用户的家目录总是被自动添加到 /home目录下,我们先举个例子;

实例一:不加任何参数,直接添加用户;

[root@localhost beinan]# useradd beinanlinux

[root@localhost beinan]# ls -ld /home/beinanlinux/

drwxr-xr-x 3 beinanlinux beinanlinux 4096 11月 2 15:20 /home/beinanlinux/

在这个例子中,我们添加了beinanlinux用户,我们在查看/home/目录时,会发现系统自建了一个beinanlinux的目录;

我们再来查看 /etc/passwd 文件有关beinanlinux的记录,也会有新发现;我们通过more 来读取 /etc/passwd 文件,并且通过grep 来抽取 beinanlinux字段,得出如下一行;

[root@localhost beinan]# more /etc/passwd | grep beinanlinux

beinanlinux:x:509:509::/home/beinanlinux:/bin/bash

从得出的beinanlinux的记录来看,以adduser 工具添加beinanlinux用户时,设置用户的UID和GID分别为509 ,并且把beinanlinux的家目录设置在 /home/beinanlinux ,所有的SHELL是 bash ; 我们再来看看 /etc/shadow、/etc/groups和/etc/gshadow 文件,是不是也有与beinanlinux有关的行;我们还要查看/etc/default/useradd 和/etc/login.defs文件的规则,看一下beinanlinux用户的增加是不是和这两个配置文件有关;我们还要查看 /home/beinanlinux目录下的文件,是不是和/etc/skel目录中的一样;

由此我们引出我们下面所要谈的内容:

useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

1)/etc/default/useradd 配置文件的定义;

useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

useradd 加-D参数后,就是用来改变配置文件 /etc/default/useradd的;

useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

当-D选项出现时,useradd秀出现在的预设值,或是藉由命令列的方式更新预设值。可用选项为∶

-b default_home 注:定义用户所属目录的前一个目录。用户名称会附加在default_home后面用来建立新用户的目录。当然使用-d后则此选项无效。

-e default_expire_date 注:用户帐号停止日期。

-f default_inactive 注:帐号过期几日后停权。

-g default_group 注:新帐号起始用户组名或ID。用户组名须为现有存在的名称。用户组ID也须为现有存在的用户组。

-s default_shell 注:用户登入后使用的shell名称。往后新加入的帐号都将使用此shell.

如不指定任何参数,useradd显示目前预设的值。

实例二:

useradd -D 如不指定任何参数,useradd显示目前预设的值;

[root@localhost beinan]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=no

我们看一下/etc/default/useradd 文件就明白了,应该和上面的输出是一样的;所以如果我们想改变useradd配置文件/etc/default/adduser 的内容,也可以用编辑器直接操作,如果你会用vi编辑器或者其它编辑器的话,这个应该不成问题吧;

实例三:

我想把添加用户时的默认SHELL /bin/bash 改为 /bin/tcsh ,则应该用下面的命令;

[root@localhost beinan]# useradd -D -s /bin/tcsh 注:把添加用户时的SHELL 改为tcsh ;

[root@localhost beinan]# more /etc/default/useradd 注:查看是否成功;

# useradd defaults file

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/tcsh 注:成功;

SKEL=/etc/skel

CREATE_MAIL_SPOOL=no

这个-D参数的解说就这样了,也是比较简单,如果不会用命令,直接改参数配置文件总会吧;Linux解决问题是极为灵活的,就看我们怎么解决了,对不对?

2)useradd 添加用户;

useradd [-u uid [-o]] [-g group] [-G group,...]

[-d home] [-s shell] [-c comment] [-m [-k template]]

[-f inactive] [-e expire ] [-p passwd] name

新帐号建立,当不加-D参数,useradd指令使用命令列来指定新帐号的设定值and使用系统上的预设值.新用户帐号将产生一些系统档案,用户目录建立,拷备起始档案等,这些均可以利用命令列选项指定。此版本为RedHat Linux提供,可帮每个新加入的用户建立个别的group,毋须添加-n选项。

useradd 可使用的选项为

-c comment 注:新帐号 password 档的说明栏 。

-d home_dir 注:新帐号每次登入时所使用的home_dir。预设值为default_home内login名称,并当成登入时目录名称。

-e expire_date 注:帐号终止日期。日期的指定格式为MM/DD/YY。

-f inactive_days 注:帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1

-g initial_group 注:group名称或以数字来做为用户登入起始用户组(group)。用户组名须为现有存在的名称。用户组数字也须为现有存在的用户组。预设的用户组数字为1。

-G group,[...]

注:定义此用户为此一堆groups的成员。每个用户组使用”,”区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。定义值为用户的起始用户组。。

-m 注:用户目录如不存在则自动建立。如使用-k选项skeleton_dir内的档案将复制至用户目录下。然而在/etc/skel目录下的档案也会复制过去取代。任何在skeleton_dir or /etc/skel的目录也相同会在用户目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。

-M 不建立用户目录,即使/etc/login.defs系统档设定要建立用户目录。

-n 预设值用户用户组与用户名称会相同。此选项将取消此预设值。

-r 此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立用户目录,也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有用户目录须额外指定-m参数来建立系统帐号。

-s shell 注:用户登入后使用的shell名称。预设为不填写,这样系统会帮你指定预设的登入shell。

-u uid uid用户的ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为以/etc/login.defs中的UID_MIN的值为准,0到UID_MIN的值之间,为系统保留的UID ;

useradd 这么多的参数看上去头有点晕,我们如何用呢??其实很简单;一个参数一个参数的试一试不就明白了??这是最好的学习方法。实践是检验真理的唯一标准;

如果useradd 后面直接跟用户名,不加任何参数,表示添加用户时按事先/etc/default/adduser 和/etc/login.defs 添加新用户的配置文件的规则来添加用户;其实我们为了方便,也可以把这两个文件修改以适合我们添加用户需要;

useradd 为什么还需要那么多的参数呢?

原因很简单,主要是为了管理员方便管理用户。useradd 是灵活的,可以跳过/dev/default/adduser 和/etc/login.defs 两个配置文件中的规则来自定义添加用户;比如在用户的家目录,在/etc/default/adduser 中可能定义在/home目录下建立,如果我们的机器/home独立占一个分区,并且有点紧张,但我们又不想改变/etc/default/adduser 关于家目录的定义,这里我们就可以通过 adduser -d 参数把新增用户家目录定义到空间比较空闭的分区;

通过下面的几个例子,可能有助于我们理解useradd ,其实很简单~,学习也是这样,先从简单的入手,一步一步的走过来,没有什么难的~~

实例四:以/etc/logins.defs和/etc/default/adduser 默认的规则添加用户;

[root@localhost ~]# useradd longcpu

注解:如果useradd 后面直接用户名,表示系统读取 /etc/login.defs和/etc/default/adduser 配置文件,根本这两个配置文件所定义的规则来添加用户,比如用户的家目录哪里,用什么SHELL,UID和GID的分配… … 查看/etc/passwd的新增记录,然后根据 /etc/login.defs和/etc/default/adduser 查看新增用户是否符合这两个配置文件所约定的规则;

实例五:练习参数的使用;

[root@localhost ~]# useradd -c ChinaCpu longcpu 注:添加一个新用户amdcpu ,使用参数-c;

[root@localhost ~]# more /etc/passwd |grep longcpu 注:查看/etc/passwd 文件,并抽取longcpu的记录;

longcpu:x:510:510:ChinaCpu:/home/longcpu:/bin/bash

注:看上去是已经有amdcpu用户了;x是密码段;UID和GID 都是510,ChinaCpu表示是什么意思? 家目录位于/home/amdcpu,SHELL是bash ;

[root@localhost ~]# finger longcpu 注:我们查询一下amdcpu 用户的信息;

Login: longcpu Name: ChinaCpu 注:-c ChinaCpu 表示用户真实的名字或全名;

Directory: /home/longcpu Shell: /bin/bash

Never logged in.

No mail.

No Plan.

注解:这个例子,我们做了添加用户、查看/etc/passwd 的变化; 并且通过finger 来查询longcpu用户的信息,目的是理解参数-c的用处;

参数-c 后面的就是就是UID:GID后面说明文字,这段文字中包括用户真实姓名,办公地址,办公电话等,可以通过chfn 来更改,我们可以通过chfn 来修改用户信息,然后查看 /etc/passwd 的变化,再来用finger 来查询用户信息。几个工具组合练习一下,也容易忘记;

实例六:自定义用户的家目录、SHELL类型、所归属的用户组等;

添加用户longcpu,并设置其用户真实名字为ChinaCpu,其家目录在/opt/longcpu,让其归属为用户组 linuxsir、root、beinan成员,其SHELL类型为tcsh ;

[root@localhost ~]# useradd -c ChinaCpu -d /opt/longcpu -G linuxsir,root,beinan -s /bin/tcsh longcpu

注:添加用户longcpu ,真实名是ChinaCpu ,家目录设置在 /opt/longcpu ,是linuxsir,root,beinan 用户组成员, SHELL是tcsh ;

[root@localhost ~]# ls -ld /opt/longcpu/ 注:是不是自动创建了longcpu的家目录?

drwxr-xr-x 3 longcpu longcpu 4096 11月 4 22:30 /opt/longcpu/

[root@localhost ~]# more /etc/passwd |grep longcpu 注:查看 /etc/passwd 中是否有longcpu用户记录;

longcpu:x:510:510:ChinaCpu:/opt/longcpu:/bin/tcsh

[root@localhost beinan]# finger longcpu 注:查询longcpu用户的信息 ;

Login: longcpu Name: ChinaCpu

Directory: /opt/longcpu Shell: /bin/tcsh

Never logged in.

No mail.

No Plan.

[root@localhost beinan]# id longcpu 注:查询UID和GID 以及所归属的用户组;

uid=510(longcpu) gid=510(longcpu) groups=510(longcpu),0(root),500(beinan),502(linuxsir)

关于在添加新用户时用户组,添加用户时,如果不使用-n 参数,系统会自动建一个与用户名同名的用户组;

实例七:练习用户有效期限;

在本例中,我们主要来看看-e参数,这个参数还是比较重要的,是设定用户的帐号什么时候过期;

在本例中,我们添加了一个帐号,并且设置其帐号在 2005年11月04日之前是有效的,一旦过了这个日期,便停止其登录;

[root@localhost ~]# useradd -e 11/04/2005 cooler 注:添加用户cooler,并设置其有效期为2005年11月04日;

[root@localhost ~]# passwd cooler 注:设置用户cooler密码;

Changing password for user cooler.

New UNIX password: 注:设定cooler的密码;

Retype new UNIX password: 注:核实设定密码;

passwd: all authentication tokens updated successfully. 注:设置成功;

如何验证-e 是不是真的有效?我写这篇文档的时间是 2005年11月05号,所以添加这个cooler用户肯定是过期的,就是他有密码也不能登录;

有的弟兄会问,他把有效期的记录放在哪里了呢?其实我们在以前的文档中已经说过了,是写在/etc/shadow文件中了;

请参考: 《用户(user)和用户组(group)配置文件详解》

2adduser 工具;

在Fedora 系统中,adduser和useradd 用法是一样的,但在 Slackware 系统中 adduser 是通过人机交互的方法来添加用户,其实和useradd 加各项参数来自定义添加用户所达到的目的是一样的,只不过在Slackware 中,useradd 是以人机交互的提问式的进行;这样我们没有必要知道那么多的参数,一样可以达到自定义添加用户;

[root@localhost ~]# adduser 注:运行adduser命令;

Login name for new user []: bluemoon 注:添加新用户 bluemoon

User ID (‘UID’) [ defaults to next available ]: 1200 注:用户的UID ,UID 是唯一的;如果有提示说被占用,就选比较大的UID ,比如1300

Initial group [ users ]: users 注:初始化用户组(或主用户组)为users,这个用户组也是可以自己定义的,但用户组必须存在,如果不存在,您可以用groupadd来添加

Additional groups (comma separated) []: root,beinan 注:附加用户组,这个也是自己定义的,多个用户组之间用,号分割;

Home directory [ /home/bluemoon ] 注:定义用户的家目录位置,也是可以自己定义的,比如/opt/bluemoon ;

Shell [ /bin/bash ] 注:所用SHELL ,此处用的是bash ;

Expiry date (YYYY-MM-DD) []: 注:用户的有效日期,如果不设置就直接回车,表示从不过期;如果设置就以2005-11-05这样的格式来输入;

New account will be created as follows: 注:创建的用户情况如下;

—————————————

Login name…….: bluemoon

UID…………..: 1200

Initial group….: users

Additional groups: root

Home directory…: /home/bluemoon

Shell…………: /bin/bash

Expiry date……: [ Never ]

This is it… if you want to bail out, hit Control-C. Otherwise, press

ENTER to go ahead and make the account.

注:在这里按回车就开始创建,如果认为这样不合理,就按CTRL+C 来中断;

Creating new account… 这样就创建好了;系统会自动提示我们修改用户的信息,比如用户的全名、房间号、电话等…… 以及用户的密码;

Changing the user information for bluemoon

Enter the new value, or press ENTER for the default

Full Name []: bluemoon Linux

Room Number []: 503

Work Phone []: 0411-8888888

Home Phone []: 0411-9999999

Other []:

Changing password for bluemoon

Enter the new password (minimum of 5, maximum of 127 characters)

Please use a combination of upper and lower case letters and numbers.

New password: 注:设置用户bluemoon的密码;

Re-enter new password: 注:验证一次;

Password changed. 注:设置密码成功

附: /etc/gshadow是/etc/group的加密资讯文件,比如用户组(Group)管理密码就是存放在这个文件。/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码;

/etc/gshadow 格式如下,每个用户组独占一行;

groupname:password:admin,admin,…:member,member,…

第一字段:用户组

第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;

第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;

第四字段:组成员,如果有多个成员,用,号分割;

举例:

beinan:!::linuxsir

linuxsir:oUS/q7NH75RhQ::linuxsir

第一字段:这个例子中,有两个用户组beinan用linuxsir

第二字段:用户组的密码,beinan用户组无密码;linuxsir用户组有已经,已经加密;

第三字段:用户组管理者,两者都为空;

第四字段:beinan用户组所拥有的成员是linuxsir ,然后还要对照一下/etc/group和/etc/passwd 查看是否还有其它用户,一般默认添加的用户,有时同时也会创建用户组和用户名同名称; linuxsir 用户组有成员linuxisir ;

如何设置用户组的密码? 我们可以通过 gpasswd 来实现;不过一般的情况下,没有必要设置用户组的密码;不过自己实践一下也有必要;下面是一个为linuxsir用户组设置密码的例子;

gpasswd 的用法: gpasswd 用户组

root@localhost ~]# gpasswd linuxsir

正在修改 linuxsir 组的密码

新密码:

请重新输入新密码:

用户组之间的切换,应该用 newgrp ,这个有点象用户之间切换的su ;我先举个例子:

[beinan@localhost ~]$ newgrp linuxsir

密码:

[beinan@localhost ~]$ mkdir lingroup

[beinan@localhost ~]$ ls -ld lingroup/

drwxr-xr-x 2 beinan linuxsir 4096 10月 18 15:56 lingroup/

[beinan@localhost ~]$ newgrp beinan

[beinan@localhost ~]$ mkdir beinangrouptest

[beinan@localhost ~]$ ls -ld beinangrouptest

drwxrwxr-x 2 beinan beinan 4096 10月 18 15:56 beinangrouptest

说明:我是以beinan用户组切换到linuxsir用户组,并且建了一个目录,然后再切换回beinan用户组,又建了一个目录,请观察两个目录属用户组的不同;还是自己体会吧。

附2刚写完一篇/etc/passwd与/etc/shadow简介不过瘾,再把这个也写了,反正都是今天一起看的,长时间不写又该拖了,我这懒的毛病总是扳不掉,那就自己克服一下子吧,嗯。与天斗,与地斗,与自己斗,其乐无穷。呜。。

/etc/group和/etc/gshadow这两个文件都是关于用户组的,其实这节主要介绍一下有效与初始化用户组,及groups与newgrp的命令。

sudo vi /etc/group

root:x:0:

xiaoxiaozi:x:1000:

同样使用“:”分隔,不过不用担心,这节应该不会向上面那个那么长了,因为你看这里一共就只有4栏,很好讲解的。

用户组名称:就是用户组叫啥名

用户组密码:通常不需要设,不过要是一小撮人搞个什么项目啦就需要设置密码了,这样你别的人是进不来的。这里的“x”仍然是代表把密码移走了,而移动的地方就是/etc/gshadow这个文件中

GID:用户组ID

支持的账号名称:就是这个组里的成员,看我上面的那两个例子就代表这俩组中就老哥一个谁也没有

那这里就有一个问题了,如果一个账号,我同时加入多个组(搞人格分裂),那到底是哪个组在起作用啊?

知道我为啥要让你看上一篇文章了吗?还记得/etc/passwd文件内容了吧?那里面有一个GID(第四列),那个就是初始用户组

例如,假设我的xiaoxiaozi同时也有users这个组,而当前初始组为xiaoxiaozi,现在我要将xiaoxiaozi的有效用户组变为users,则应该

newgrp users

就这么简单

使用groups这个命令就可以查看当前用户都加入了哪些组。其中第一列为当前有效组。

groups

如果我没有加入users这个组,可以进入其中吗?在某些前提下是可以的

该用户在/etc/gshadow的密码栏为合法的(即不为“!”)

该组密码让root或者用户组管理员(group administrator)加入到其组内

下面我们来看一下/etc/gshadow文件,毕竟我们也提了好多回“有效用户组”这个概念

sudo vi /etc/gshadow

root:*::

xiaoxiaozi:!::

也只有4栏,逐个看一下吧

用户组名称:老生长谈了,背也背下来了,呵呵。

密码栏:小样的,你有个“!”或“*”我就是不让你登录,气死你。

用户组管理员的账号:(这个书上说稍候介绍,我确实没看到那呢,不过就我理解应该是谁建立的组,那么谁就是管理员,可是编辑这个文件只能用root啊。。)

该用户组的所属账号:组里都有谁啊?

呃。好吧,我承认我欺骗了大家,也同样欺骗了自己,因为这节也很长。呵呵。不过我坚持下来了。

补充:请教linux用户加入多个组的命令!

如果你安装了图形界面可以用这个命令

#system-config-users

如果没有

使用命令

#usermod -G 组名 用户名

修改配置文件

#vim /etc/group

找到你要把某个用户加入的组,然后在这个组最后的冒号后面输入用户的名字,如果有多个用户,使用逗号分隔

你使用的方法是正确的,但是你的结果我就不知道了

终于找到原因了.

谢谢版主对我的帮助,在这里忠心地感谢他!

解决方法:

如果用 usermod -g 组名 用户名  是修改用户的所在组.是覆盖.

如果要加入多个组:  应该用  usermod -G 组名,组名,组名…..+空格+用户名!

谢谢版主对我的帮助!

功能说明:改变finger指令显示的信息。

语  法:chfn [-f <真实姓名>][-h <家中电话>][-o <办公地址>][-p <办公电话>][-uv][帐号名称]

补充说明:chfn指令可用来更改执行finger指令时所显示的信息,这些信息都存放在/etc目录里的passwd文件里。若不指定任何参数,则chfn指令会进入问答式界面。

参  数:

-f<真实姓名>或–full-name<真实姓名>  设置真实姓名。

-h<家中电话>或–home-phone<家中电话>  设置家中的电话号码。

-o<办公地址>或–office<办公地址>  设置办公室的地址。

-p<办公电话>或–office-phone<办公电话>  设置办公室的电话号码。

-u或–help  在线帮助。

-v或-version  显示版本信息。

经常记不清,不过没有总结,转载一下吧。

useradd 各选项含义如下:

-c comment 指定一段注释性描述.

-d 目录指定用户主目录,如果此目录不存在,则童话死使用-m选项,可以创建主目录.

-g 用户组 指定用户所属的用户组

-G 用户组,用户组,指定用户所属的附加组

-s  Shell文件指定用户的登陆Shell

-u 用户号 指定用户的用户号, 如果同时有-o选项,则可以重复使用其他用户的标志号.

用户名  指定新帐号登陆用户名.

例如:

# usradd -d /usr/sam -m sam

创建了一个用户sam,其中 -d 和 -m 选项用来为登陆名sam产生一个主目录/usr/sam

(/usr为默认的用户主目录所在的附目录).

#  useradd -s /bin/shell -g group -G adm,root gem

此命令新建一个用户gem,该用户的登陆Shell是/bin/sh,它属于group用户组,同时又属于

adm 和root 用户组,其中group用户组是其主组.

增加用户帐号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他的文件系统

如/etc/shadow ,/etc/group

linux 提供了集成的系统管理工具userconf,它可以用来对用户帐号统一管理.

如果一个用户帐号不在使用,可以从系统中删除,删除用户帐号就是要将/etc/passwd等文件系统

中的该用户记录删除,必要是还删除用户的主目录.删除一个已有的用户帐号使用userdel命令

userdel 选项用户名

常用的选项是-r 他的作用是把用户主目录一起删除.

#userdel sam

此命令删除用户sam 在系统中(主要是/etc/passwd,/etc/shadow,/etc/group等)的记录,同时删除用户的主目录.

修改用户帐号就是要根据实际情况更改用户的有关属性,如用户号,主目录,用户组,登陆shell等

修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

常用的选项包括 -c,-d-m-g-G-s-u以及-O等,这些选项行的意义在与useradd命令中的选项一样,可以

位用户指定新的资源值,另外,有些系统可以使用如下选项:

-l 新用户名

这个选项指定一个新的帐号,即将原来的用户名改为新的用户名.

例如:

# uermod -s /bin/ksh -d /home/z -g developer sam

此命令将用户sam登陆shell修改为ksh, 主目录改为/home/z,用户组改为developer.

用户管理的一项重要内容是用户口令的管理.用户帐号刚创建时没有口令.但是被系统锁定,无法使用,必须为其指定口令后彩可以使用,及时制定空记录

指定和修改用户口令的shell命令passwd,超级用户可以为自己和其他用户指定口令,普通呼呼只能

用修改自己的口令,名林格式为:

passwd 选项 用户名

-l  锁定口令,即禁用帐号.

-u 口令解锁.

-d 使帐号无口令.

如果默认用户名,则修改当前用户的口令.

例如,假设当前用户是sam,则下面的命令修改用户自己的口令:

passwd

#passwd -d sam

此命令将用户sam的口令删除,这样用户sam下一次登陆时,系统就不在询问口令.

passwd 命令还可以用-l (lock) 选项锁定某一用户,使其不能登陆.例如:

passwd -l sam

3.主要参数

-c:加上备注文字,备注文字保存在passwd的备注栏中。

-d:指定用户登入时的启始目录。

-D:变更预设值。

-e:指定账号的有效期限,缺省表示永久有效。

-f:指定在密码过期后多少天即关闭该账号。

-g:指定用户所属的群组。

-G:指定用户所属的附加群组。

-m:自动建立用户的登入目录。

-M:不要自动建立用户的登入目录。

-n:取消建立以用户名称为名的群组。

-r:建立系统账号。

-s:指定用户登入后所使用的shell。

-u:指定用户ID号。

4.说明

useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。

5.应用实例

建立一个新用户账户,并设置ID:

#useradd caojh -u 544

需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。

groupadd

1.作用

groupadd命令用于将新组加入系统。

2.格式

groupadd [-g gid] [-o]] [-r] [-f] groupname

3.主要参数

-g gid:指定组ID号。

-o:允许组ID号,不必惟一。

-r:加入组ID号,低于499系统账号。

-f:加入已经有的组时,发展程序退出。

4.应用实例

建立一个新组,并设置组ID加入系统:

#groupadd -g 344 cjh

此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

感慨一下,对linux的了解还是太少。又涨了点见识,知道还有这么个文件!

login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。该文件里的配置对root用户无效。如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs #*REQUIRED*
#Directorywheremailboxesreside,_or_nameoffile,relativetothe
#homedirectory.Ifyou_do_defineboth,MAIL_DIRtakesprecedence.
#QMAIL_DIRisforQmail
#
#QMAIL_DIRMaildir
MAIL_DIR/var/spool/mail注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
#MAIL_FILE.mail
#Passwordagingcontrols:
#
#PASS_MAX_DAYSMaximumnumberofdaysapasswordmaybeused.
#PASS_MIN_DAYSMinimumnumberofdaysallowedbetweenpasswordchanges.
#PASS_MIN_LENMinimumacceptablepasswordlength.
#PASS_WARN_AGENumberofdayswarninggivenbeforeapasswordexpires.
#
PASS_MAX_DAYS99999注:用户的密码不过期最多的天数;
PASS_MIN_DAYS0注:密码修改之间最小的天数;
PASS_MIN_LEN5注:密码最小长度;
PASS_WARN_AGE7注:
#
#Min/maxvaluesforautomaticuidselectioninuseradd
#
UID_MIN500注:最小UID为500,也就是说添加用户时,UID是从500开始的;
UID_MAX60000注:最大UID为60000;
#
#Min/maxvaluesforautomaticgidselectioningroupadd
#
GID_MIN500注:GID是从500开始;
GID_MAX60000
#
#Ifdefined,thiscommandisrunwhenremovingauser.
#Itshouldremoveanyat/cron/printjobsetc.ownedby
#theusertoberemoved(passedasthefirstargument).
#
#USERDEL_CMD/usr/sbin/userdel_local
#
#Ifuseraddshouldcreatehomedirectoriesforusersbydefault
#OnRHsystems,wedo.ThisoptionisORedwiththe-mflagon
#useraddcommandline.
#
CREATE_HOMEyes注:是否创用户家目录,要求创建;
[url=http://asmboy001.blog.51cto.com/340398/156527][/url]

Tagged with:  

Comments are closed.