首页 > linux > linux usermod、chsh、userdel 浅谈
2009七月25

linux usermod、chsh、userdel 浅谈

之前介绍过在 linux 系统使用 useradd 命令及 passwd 命令创建新用户及更改用户密码。但是如果不小心在创建用户的时候把用户信息写错了咋办?今天就来简单为大家介绍一下 linux 更改用户信息的两个常用命令: usermod 和 chsh。顺便再为大家介绍一下删除用户的命令 userdel 。

usermod 的功能介绍及语法结构:

虽然现在 usermod 程序的功能已经被其他很多命令所取代,但是无论如何,还是可以用 usermod 来细致高速用户账号的相关信息。这个命令在我系统的”男人“里又是中文,有些奇怪,因为不知道具体啥时候是中文,啥时候是英文,唉,随机。。嗯。

名称
usermod – 修 改 使 用 者 帐 号

语法
usermod [-c comment] [-d home_dir [ -m]]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-l login_name] [-s shell]
[-u uid [ -o]] login

usermod 的参数简谈:

似乎 linux 的每个命令都有太多的参数让我们根本记不住都应该怎样应用,不过“男人”实在是没的说,对每个参数都会给你尽量通俗的解释,不过是相对于能看懂外语的。呵呵。其实大家一定要记住,命令只需要记住常用的一些参数即可,其他的,当有需要的时候一定要查一下手册,因为只有与系统配套的手册说的才最准确。并且有机会的话大家实地操作一下,感受自会不同。闲话少说,我再来简单的为大家介绍一下 usermod 的参数。

类型 描述
-c 更改 /etc/passwd 第5栏用户信息说明的部分,后面接描述信息,可以使用 chfn 命令替代
-d 更改 /etc/passwd 第6栏用户的家目录部分,如果再加上 -m 参数(只与-d配合
则会将现有家目录的地址重命名为新的家目录地址,如原来没有指定家目录地址,则为账号新建一个指定的家目录地址
-e 更改 /etc/shadow 的第8栏账号的失效日期,后面接日期参数格式为 MM/DD/YY 或 YYYY-MM-DD
-f 更改 /etc/shadow 的第7栏账号过期宽限时间部分,当后面接的值为 0 时,账号立即失效,为 -1 时关闭此功能默认值为 -1
-g 后面接 group name 必须是现有 group 组中的一个,改变用户的初始化用户组 id 对应 /etc/passwd 的第4栏内容
-G 后面接 group name 必须是现有 group 组中存在的组名,改变用户能够支持的用户组,修改的是 /etc/group
-l 后面接账号名称,即更改用户名。对应的是 /etc/passwd 的第一栏
-s 后面接shell的实际文件,即 /bin/bash ,/bin/csh之类,可以使用 chsh 命令替代
-u 更改用户的UID,对应的是 /etc/passwd 的和3栏数据,此 UID 不能与目前系统中已经存在的UID相同
-L 暂将用户的密码冻结,禁止其登录,即更改 /etc/shadow 的密码栏,在其前面加上 !
-U 暂将用户的密码解冻,即去掉其 /etc/shadow 密码栏前面的 !

usermod 示例:

示例是鲜活的,是很能说明问题的,有时候如果忘了一个参数咋用了,过来翻一下例子,一下就会想起来不少。所以,咱们要举例证明刚才参数的作用,并且也要实际操作一下,以加深印象。说来咱就来,瞧好吧您。

#  给新增加的账号 chongpig 加上说明 "这就是个快要被删除的账号"
[simaopig@xiaoxiaozi ~]$ su
密码:
[root@xiaoxiaozi simaopig]# usermod -c '这就是个快要删除的账号' chongpig
[root@xiaoxiaozi simaopig]# grep chongpig /etc/passwd
chongpig:x:501:501:这就是个快要删除的账号:/home/chongpig:/bin/bash
# 使用户 chongpig 的密码在 2009-07-31 前失效
[root@xiaoxiaozi simaopig]# usermod -e '07/31/2009' chongpig
[root@xiaoxiaozi simaopig]# grep chongpig /etc/shadow
chongpig:$6$mVu5nBAo$4HzNf92n3RYAiDfVk2Q5YtIxfjrVxvYHAusGeUAWfabLr5WIuQdn/2HCcsHwKRoRpxGLCJ.wA.1QLgG.rXuhw/:14447:0:99999:7::14456:
# 说明日期格式 MM/DD/YY 与 YYYY-MM-DD均可
[root@xiaoxiaozi simaopig]# usermod -e '2009-07-31' chongpig
usermod:无改变
# 更换chongpig 用户的家目录,指定新地址为 /home/chongpig_new
# 该命令执行时间很长,要改的东西其实还是蛮多的,大家耐心等候
# 先看原来 /home 目录下都有谁的家目录
[root@xiaoxiaozi home]# ls
chongpig  lost+found  simaopig  simaopig2  simaopig4
[root@xiaoxiaozi home]# usermod -d /home/chongpig_new -m chongpig
# 看chongpig的家目录是否已经换过来了
[root@xiaoxiaozi home]# ls
chongpig_new  lost+found  simaopig  simaopig2  simaopig4
# 将chongpig用户暂时冻结起来,然后再解冻
# 咋听着像是娱乐圈的事啊,呵呵,看密码栏(第二栏)先加上了 ! 后又没了
[root@xiaoxiaozi home]# usermod -L chongpig
[root@xiaoxiaozi home]# grep chongpig /etc/shadow
chongpig:!$6$mVu5nBAo$4HzNf92n3RYAiDfVk2Q5YtIxfjrVxvYHAusGeUAWfabLr5WIuQdn/2HCcsHwKRoRpxGLCJ.wA.1QLgG.rXuhw/:14447:0:99999:7::14456:
[root@xiaoxiaozi home]# usermod -U chongpig
[root@xiaoxiaozi home]# grep chongpig /etc/shadow
chongpig:$6$mVu5nBAo$4HzNf92n3RYAiDfVk2Q5YtIxfjrVxvYHAusGeUAWfabLr5WIuQdn/2HCcsHwKRoRpxGLCJ.wA.1QLgG.rXuhw/:14447:0:99999:7::14456:

chsh 描述、语法、示例:

chsh 这个命令现在一般被用来替换 usermod -s 命令即更改用户登录的shell。其常用的只有两个参数 -l 和 -s 至于其他的无非就是一些版本信息,及帮助之类的就不再介绍了。

chsh -l 起到的作用是列出当前系统的所有shell ,只有您知道有啥了,才会正确的为用户设置shell不是,否则没有的那就得您自己去安装了。咱们不谈。

[root@xiaoxiaozi home]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

而 chsh -s 呢就是为用户指定shell了,咱们继续看实例,这没啥好说的。嗯。

# 先切换用户至chongpig
sudo chongpig
# 要求输入chongpig用户的密码
[chongpig@xiaoxiaozi ~]$ chsh -s /bin/sh; grep chongpig /etc/passwd
Changing shell for chongpig.
密码:
Shell changed.
chongpig:x:501:501:这就是个快要删除的账号:/home/chongpig_new:/bin/sh

userdel 语法及示例:

看名字大家就知道这是删除用户用的,其语法也很简单,因为其带的参数很少,userdel 只有一个可选参数 -r 。在 linux 里 -r 一般都代表循环,把所有相关的内容一起处理。在这里也是一样,如果加上了 -r 参数就是说明连同用户的家目录一起删除掉

名称
userdel – 删 除 使 用 者 帐 号 及 相 关 档 案

语法
userdel [-r] login

# 倒霉的chongpig终于结束了自己的历程,要被清除出系统了
[chongpig@xiaoxiaozi ~]$ su
密码
[root@xiaoxiaozi ~]# userdel -r chongpig
[root@xiaoxiaozi ~]# ls /home/
lost+found  simaopig  simaopig2  simaopig4

userdel 的说明:

用户如果在系统上面操作一断时间,那么该用户其实在系统内可能会含有其他文件,例如其的邮箱,cron 脚本等。所以要想完整地删除某用户,在执行 userdel -r username 前,先以 “find/-user username”查出整个系统中属于 username 的文件,然后再删除。

因为我的chongpig是新用户,而且本机只有我自己在使用,所以我可以确定没有用chongpig做过一些什么操作。否则我是断不敢直接用 userdel来删除这个用户的。

而linux系统一般删除一个账号的方法是,手动将 /etc/passwd 与 /etc/shadow 里的该账号取消。一般而言,如果该账号只“暂时不启用“,那么将 /etc/shadow 里面最后一个字段(保留字段)置为0,就可以让该账号无法使用,但是,所有与该账号相关的数据都会留下来。使用 userdel 的时机通常是“真的不想让该用户在主机上有任何数据存在了”

总结及唠叨:

linux 的日志总是显得很长,写起来很累,因为每一个命令都要认真执行一下,而且为了能尽量多的把常用的参数都介绍一下,还要写表格,多举些例子,不过这些都是值得的。呵呵。

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

6 Responses to “linux usermod、chsh、userdel 浅谈”

  1. #1 hslx111 回复 | 引用 Post:2009-07-25 18:38

    继续占地留名…待学习~

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-07-25 19:06

    @hslx111
    呵呵,谢谢捧场。哈。

    [回复]

  3. #3 beetea 回复 | 引用 Post:2009-07-25 19:40

    啥时出php的啊

    [回复]

  4. #4 吖Bee 回复 | 引用 Post:2009-07-25 20:20

    呵呵….这个待学习..

    [回复]

  5. #5 simaopig 回复 | 引用 Post:2009-07-25 20:45

    @beetea
    呃,原来在期盼php啊,嗯。下周,下周就是php了。呵呵。

    [回复]

  6. #6 simaopig 回复 | 引用 Post:2009-07-25 20:45

    @吖Bee
    呵呵,慢慢来。呵。

    [回复]

发表评论

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