Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2316188
  • 博文数量: 252
  • 博客积分: 5472
  • 博客等级: 大校
  • 技术积分: 3107
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-17 18:39
文章分类

全部博文(252)

文章存档

2012年(96)

2011年(156)

分类:

2011-09-20 08:48:42

用户管理命令简单来说就是添加、删除和修改用户状态的命令,分别是:
  1. [huang@myhost/home]$ sudo useradd [-参数] [用户名]
useradd -- 创建新用户或者更新用户信息;如果是创建新用户,首先要求新创建的用户在系统中不能已经存在;
  1. [-c]   comment,就是/etc/passwd对应用户的那一行中,对应的第五个字段,可以随便设置;
  2. [-d]   后接一个目录,作为新建用户的登录home目录,取代系统中默认在/home目录下以用户名创建的新目录;如果[-d]
  3.        后接的目录并不存在,不会自动创建;
  4. [-g]   新建用户登录的初始GID,并且这个GID对应的group必须存在;
  5. [-G]   后接一连串的group,之间用逗号隔开,表示新建用户同时属于后面一连串的group;
  6. [-u]   用户自己指定新建用户的UID,但是要求这个UID必须唯一而且符合/etc/login.defs中的设定;
  7. [-U]   同时创建group,并且group的名称同新建用户名相同,然后添加新建用户到该group下;
  8. [-m]   如果新用户home目录不存在时,创建home目录.并且将/etc/skel/目录下的文件全部复制到新建用户的home
  9.        目录下;如果在创建新用户时,没有用[-m]选项,而且/etc/login.defs中CREATE_HOME不是yes,则不
  10.        会创建home目录.
  11. [-M]   强制不创建home目录,即使在/etc/login.defs中设置了CREATE_HOME为yes;
  12. [-r]   创建系统账户,/etc/shadow内没有年限信息,并且其UID范围要参考/etc/login.defs内容;
  13. [-s]   后跟shell,规定新建用户使用的shell,如果为空,默认设置参考/etc/default/useradd文件内容。
下面看一些简单例子:
  1. [huang@myhost/~]$ sudo useradd tt      ##  完全以默认设置创建新用户  ##
执行命令后,查看系统的变化:
  1. [huang@myhost/home]$ ls
  2. archlinux huang lost+found

  3. [huang@myhost/home]$ sudo grep tt /etc/passwd /etc/shadow /etc/group /etc/gshadow
  4. /etc/passwd:tt:x:1005:1005::/home/tt:/bin/bash
  5. /etc/shadow:tt:!:15234:0:99999:7:::
  6. /etc/group:tt:x:1005:
  7. /etc/gshadow:tt:!::
  8. ##   一些无关消息已删除   ##
创建了新用户tt(uid=1005),和新组用户(gid=1005),但是没有创建tt登录的home目录,虽然在/etc/passwd中设置了/home/tt ,但是/home目录下没有自动创建tt目录;
下面示例是要创建一个新用户,uid=1009,并且属于huang用户组中:
  1. [huang@myhost/home]$ sudo useradd -u 1009 -g huang test3
查看系统文件中的变化:
  1. [huang@myhost/home]$ sudo grep test3 /etc/passwd /etc/shadow /etc/group /etc/gshadow
  2. /etc/passwd:test3:x:1009:1000::/home/test3:/bin/bash
  3. /etc/shadow:test3:!:15234:0:99999:7:::
从结果中可以清晰的看到,在/etc/passwd 内,test3的uid=1009,gid=1000(huang),但是在/etc/gshadow中没有在huang组后添加test3;当然在/home目录下也没有新建test3目录.
如果我要新建一个账户,账户名为whu,uid=1100,group=whu,并且有自己的home目录:
  1. [huang@myhost/etc]$ sudo useradd -m -u 1100 -U whu        ## 添加了[-m]选项  ##
检查系统发生的变化:
  1. [huang@myhost/home]$ ls
  2. archlinux huang lost+found test whu
  3. [huang@myhost/home]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  4. /etc/passwd:whu:x:1100:1100::/home/whu:/bin/bash
  5. /etc/shadow:whu:!:15234:0:99999:7:::
  6. /etc/group:whu:x:1100:
  7. /etc/gshadow:whu:!::
在/home目录下新建了/whu目录,新创建了whu用户组,并且uid=1100,gid=1100,因为没有设置密码,所以在/etc/passwd文件whu所在的一行中第二列有一个'!',密码被锁;同理,在/etc/gshadow里,whu所在的一行第二列有'!',group也不能用密码登陆,不过一般是不需要用密码登陆的;whu用户并不在whu组用户的第四字段内,系统不会自动添加上;下面看看/home/whu目录内容:
  1. [huang@myhost/home]$ sudo ls -al ./whu/
  2. total 28
  3. drwx------ 2 whu whu 4096 Sep 18 04:48 .
  4. drwxrwxrwx 7 root root 4096 Sep 18 04:48 ..
  5. -rw-r--r-- 1 whu whu 21  May 8 09:42 .bash_logout
  6. -rw-r--r-- 1 whu whu 57  May 8 09:42 .bash_profile
  7. -rw-r--r-- 1 whu whu 141 May 8 09:42 .bashrc
  8. -rw-r--r-- 1 whu whu 312 Mar 11 2011 .xinitrc
  9. -rw-r--r-- 1 whu whu 100 Mar 11 2011 .xsession
这个文件内容都是在执行命令时,系统自动将/etc/skel/目录下文件。如果有疑问,可以在/etc/skel/下新建一个文件,然后再创建一个新用户,查看改用户home目录下文件,这里省略了,如果有时间可以做做这个小测试。
总结:添加用户过程其实蛮复杂的,它涉及到的文件很多,比如/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/etc/default/useradd,/etc/login.defs,/etc/skel/*,useradd 后的参数含义不清楚可以查看说明文档,讲得还是很详细清楚的。

用户删除: userdel -- 删除用户账户及相关文件.前提是该账户删除前必须存在在.
  1. [huang@myhost/home]$ sudo userdel   [-选项]   用户名

  2. [-f]  强制删除用户,即使该用户正登录在系统中.并且会强制删出用户home目录及mail目录,即使其他用户在使用
  3.     相同的home目录或者mail目录也同样属于其他用户./etc/login.defs中USERGROUPS_ENAB=yes的话,
  4.     与待删除用户同名的group也会被强制删除,即使该group还是某些用户的初始group;
  5. [-r]  自动删除该用户home目录及mail目录下的文件,位于其他文件系统中文件必须手动查找删除,其中/var/spool/mail/是在/etc/login.defs中定义的;
这个命令很简单,就不给实例了,命令的参数比较少,给出的解释已经很详细。

下面再看一个也是很重要的命令 -- usermod
usermod  -- 修改用户账户信息
  1. [huang@myhost/~]$ sudo usermod  [-选项]  用户名
  1. [-a]  附加用户到后面提供的group里,只跟[-G]选项合用
  2. [-c]  comment,修改/etc/passwd每个用户对应第五字段的内容,作用类似于命令:chfn
  3. [-d]  用户新登录home目录;如果跟了[-m]参数,如果新home目录不曾在,便会创建新home目录,并且将原目录下的文
  4.       件全移动到新目录下;
  5. [-e]  用户到期时间,后跟时间形式为:YYYY-MM-DD;
  6. [-f]  后跟数字,表示在用户密码到期后多少天,该用户永久的被禁用掉.如果是0,表示密码和用户同时死亡;如果是
  7.       -1,这项功能被禁用
  8. [-g]  后跟已经存在的group(名称或者GID),修改用户初始用户组;在该用户home目录下被前初始用户组拥有的文
  9.       件,都将被新初始用户组拥有,其他地方的文,需要手动修改;
  10. [-G]  后跟group,表示要将用户添加到的用户组
  11. [-l]  修改用户登录名,但是原来用户的home目录需要手动修改xiugai
  12. [-L]  锁住用户password,通过在/etc/shadow用户名第二字段密码前加之'!';
  13. [-m]  移动用户home目录,必须配合[-d]命令来使用;
  14. [-p]  加密后的password,是经crypt处理后的返回值;
  15. [-s]  用户登录shell,空白表示使用系统默认的shell;
  16. [-u]  修改用户的uid,如果没用[-o],uid必须是唯一的.修改后,用户mailbox以及home目录下的所有文件都会被自
  17.       动修改成新的uid,而其他地方的文件需要手动修改;
  18. [-U]  解锁用户密码;
下面看一个小例子,用usermod来修改用户uid:
  1. [huang@myhost/~]$ sudo usermod -u 1023 whu
  2. [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  3. /etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
  4. /etc/shadow:whu:!:15234:0:99999:7:::
  5. /etc/group:whu:x:1100:
  6. /etc/gshadow:whu:!::
从前面列出的例子中知道,whu 的 uid=1100,现在修改为 1023;
下面再来看一个用[-p]选项来修改用户密码:
  1. [huang@myhost/~]$ sudo usermod -p 123456 whu
  2. [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  3. /etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
  4. /etc/shadow:whu:123456:15235:0:99999:7:::
  5. /etc/group:whu:x:1100:
  6. /etc/gshadow:whu:!::
从/etc/shadow中,whu行第二列以前的'!'被修改为‘123456’,但该文件存放的密码段都是经过加密函数处理过得,原始密码肯定不是'123456'.
下面的例子是用[-L]选项来锁定用户登录密码:
  1. [huang@myhost/~]$ sudo usermod -L whu
  2. [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  3. /etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
  4. /etc/shadow:whu:!123456:15235:0:99999:7:::
  5. /etc/group:whu:x:1100:
  6. /etc/gshadow:whu:!::
用[-U]选项来解锁密码:
  1. [huang@myhost/~]$ sudo usermod -U whu
  2. [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  3. /etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
  4. /etc/shadow:whu:123456:15235:0:99999:7:::
  5. /etc/group:whu:x:1100:
  6. /etc/gshadow:whu:!::
看到/etc/shadow第二字段密码前的'!'被移除了;
修改用户的shell:
  1. [huang@myhost/~]$ sudo chsh -s /bin/zsh whu

  [\u@\h/\W]\$                                           ##登录后的界面,部分过程省略
  1. [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  2. /etc/passwd:whu:x:1023:1100::/home/whu:/bin/zsh
  3. /etc/shadow:whu:$1$i1IG9I4I$szcPME3EfmUqaJSeaHkwV.:15235:0:99999:7:::
  4. /etc/group:whu:x:1100:
  5. /etc/gshadow:whu:!::
查看/etc/passwd文件中,whu行最后一个字段原来/bin/bash被修改成/bin/zsh ;

补充一个小命令:chfn 修改用户/etc/passwd 第五字段中的内容:
  1. [whu@myhost huang]$ chfn
  2. Password:
  3. Changing the user information for whu
  4. Enter the new value, or press ENTER for the default
  5.     Full Name:
  6.     Room Number []: 416
  7.     Work Phone []: 159729019**
  8.     Home Phone []: 837420**
  9. ##   真实电话号码在写博客的时候经过处理,运行命令时填写的是真实的号码  ##
查看修改后的内容:
  1. [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  2. /etc/passwd:whu:x:1023:1100:,416,159729019**,83742096:/home/whu:/bin/bash
  3. /etc/shadow:whu:$1$i1IG9I4I$szcPME3EfmUqaJSeaHkwV.:15235:0:99999:7:::
  4. /etc/group:whu:x:1100:
  5. /etc/gshadow:whu:!::
  6. ##  说明同上 ##
修改archlinux默认配置文件,在useradd命令添加用户时,使用到[-m]选项或者在/etc/login.defs文件中定义了CREATE_HOME 是 yes ,则会将/etc/skel/*下的文件全部拷贝到新建用户的home目录下;
在/etc/login.defs中最后添加:CREATE_HOME yes这行后,运行如下命令:
  1. [huang@myhost/home]$ sudo useradd hbj       ##  没有加 [-m]选项  ##
  2. [huang@myhost/home]$ ls -l
  3. total 36
  4. drwx------ 2 archlinux users 4096 Sep 18 02:57 archlinux
  5. drwx------ 2 hbj hbj 4096 Sep 18 09:01 hbj                ## 创建了hbj用户的home目录 ##
  6. drwx------ 30 huang huang 4096 Sep 18 08:58 huang
  7. drwx------ 2 root root 16384 May 3 21:07 lost+found
  8. drwx------ 2 test test 4096 Sep 18 03:38 test
  9. drwx------ 2 whu whu 4096 Sep 18 08:17 whu
下面删除用户hbj:
  1. [huang@myhost/home]$ sudo userdel -r hbj
  2. [huang@myhost/home]$ ls
  3. archlinux huang lost+found test whu     ## /home目录创建的/hbj目录被删除了  ##

  4. [huang@myhost/home]$ sudo grep 'hbj' /etc/passwd /etc/shadow /etc/group /etc/gshadow
  5. ##  四个重要的用户登录文件中,已经不再包含用户hbj的任何信息  ##
最后我们看一看在/etc/目录下创建用户home目录很重要的一个目录-- /etc/skel/
  1. [huang@myhost/etc]$ cd ./skel/
  2. [huang@myhost/skel]$ ls -al
  3. total 28
  4. drwxr-xr-x 2 root root 4096 May 13 05:33 .
  5. drwxrwxrwx 68 root root 4096 Sep 18 08:45 ..
  6. -rw-r--r-- 1 root root 21 May 8 09:42 .bash_logout
  7. -rw-r--r-- 1 root root 57 May 8 09:42 .bash_profile
  8. -rw-r--r-- 1 root root 141 May 8 09:42 .bashrc
  9. -rw-r--r-- 1 root root 312 Mar 11 2011 .xinitrc
  10. -rw-r--r-- 1 root root 100 Mar 11 2011 .xsession
大家可以把这个列表跟前面提到查看用户whu的home目录列表相比较,很轻易的发现/home/whu/目录下的文件夹内容跟/etc/skel/文件夹下的内容一模一样,同时也论证了上面我提到的结论。



















阅读(1150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~