用户管理命令简单来说就是添加、删除和修改用户状态的命令,分别是:
- [huang@myhost/home]$ sudo useradd [-参数] [用户名]
useradd -- 创建新用户或者更新用户信息;如果是创建新用户,首先要求新创建的用户在系统中不能已经存在;
- [-c] comment,就是/etc/passwd对应用户的那一行中,对应的第五个字段,可以随便设置;
-
[-d] 后接一个目录,作为新建用户的登录home目录,取代系统中默认在/home目录下以用户名创建的新目录;如果[-d]
- 后接的目录并不存在,不会自动创建;
-
[-g] 新建用户登录的初始GID,并且这个GID对应的group必须存在;
-
[-G] 后接一连串的group,之间用逗号隔开,表示新建用户同时属于后面一连串的group;
-
[-u] 用户自己指定新建用户的UID,但是要求这个UID必须唯一而且符合/etc/login.defs中的设定;
-
[-U] 同时创建group,并且group的名称同新建用户名相同,然后添加新建用户到该group下;
-
[-m] 如果新用户home目录不存在时,创建home目录.并且将/etc/skel/目录下的文件全部复制到新建用户的home
- 目录下;如果在创建新用户时,没有用[-m]选项,而且/etc/login.defs中CREATE_HOME不是yes,则不
- 会创建home目录.
-
[-M] 强制不创建home目录,即使在/etc/login.defs中设置了CREATE_HOME为yes;
-
[-r] 创建系统账户,在/etc/shadow内没有年限信息,并且其UID范围要参考/etc/login.defs内容;
-
[-s] 后跟shell,规定新建用户使用的shell,如果为空,默认设置参考/etc/default/useradd文件内容。
下面看一些简单例子:
- [huang@myhost/~]$ sudo useradd tt ## 完全以默认设置创建新用户 ##
执行命令后,查看系统的变化:
- [huang@myhost/home]$ ls
-
archlinux huang lost+found
-
-
[huang@myhost/home]$ sudo grep tt /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:tt:x:1005:1005::/home/tt:/bin/bash
-
/etc/shadow:tt:!:15234:0:99999:7:::
-
/etc/group:tt:x:1005:
-
/etc/gshadow:tt:!::
-
## 一些无关消息已删除 ##
创建了新用户tt(uid=1005),和新组用户(gid=1005),但是没有创建tt登录的home目录,虽然在/etc/passwd中设置了/home/tt ,但是/home目录下没有自动创建tt目录;
下面示例是要创建一个新用户,uid=1009,并且属于huang用户组中:
- [huang@myhost/home]$ sudo useradd -u 1009 -g huang test3
查看系统文件中的变化:
- [huang@myhost/home]$ sudo grep test3 /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:test3:x:1009:1000::/home/test3:/bin/bash
-
/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目录:
- [huang@myhost/etc]$ sudo useradd -m -u 1100 -U whu ## 添加了[-m]选项 ##
检查系统发生的变化:
- [huang@myhost/home]$ ls
-
archlinux huang lost+found test whu
-
[huang@myhost/home]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1100:1100::/home/whu:/bin/bash
-
/etc/shadow:whu:!:15234:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
在/home目录下新建了/whu目录,新创建了whu用户组,并且uid=1100,gid=1100,因为没有设置密码,所以在/etc/passwd文件whu所在的一行中第二列有一个'!',密码被锁;同理,在/etc/gshadow里,whu所在的一行第二列有'!',group也不能用密码登陆,不过一般是不需要用密码登陆的;whu用户并不在whu组用户的第四字段内,系统不会自动添加上;下面看看/home/whu目录内容:
- [huang@myhost/home]$ sudo ls -al ./whu/
-
total 28
-
drwx------ 2 whu whu 4096 Sep 18 04:48 .
-
drwxrwxrwx 7 root root 4096 Sep 18 04:48 ..
-
-rw-r--r-- 1 whu whu 21 May 8 09:42 .bash_logout
-
-rw-r--r-- 1 whu whu 57 May 8 09:42 .bash_profile
-
-rw-r--r-- 1 whu whu 141 May 8 09:42 .bashrc
-
-rw-r--r-- 1 whu whu 312 Mar 11 2011 .xinitrc
-
-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 -- 删除用户账户及相关文件.前提是该账户删除前必须存在在.
- [huang@myhost/home]$ sudo userdel [-选项] 用户名
-
[-f] 强制删除用户,即使该用户正登录在系统中.并且会强制删出用户home目录及mail目录,即使其他用户在使用
- 相同的home目录或者mail目录也同样属于其他用户.在/etc/login.defs中USERGROUPS_ENAB=yes的话,
- 与待删除用户同名的group也会被强制删除,即使该group还是某些用户的初始group;
-
[-r] 自动删除该用户home目录及mail目录下的文件,位于其他文件系统中文件必须手动查找删除,其中/var/spool/mail/是在/etc/login.defs中定义的;
这个命令很简单,就不给实例了,命令的参数比较少,给出的解释已经很详细。
下面再看一个也是很重要的命令 -- usermod
usermod -- 修改用户账户信息
- [huang@myhost/~]$ sudo usermod [-选项] 用户名
- [-a] 附加用户到后面提供的group里,只跟[-G]选项合用
-
[-c] comment,修改/etc/passwd每个用户对应第五字段的内容,作用类似于命令:chfn
-
[-d] 用户新登录home目录;如果跟了[-m]参数,如果新home目录不曾在,便会创建新home目录,并且将原目录下的文
- 件全移动到新目录下;
-
[-e] 用户到期时间,后跟时间形式为:YYYY-MM-DD;
-
[-f] 后跟数字,表示在用户密码到期后多少天,该用户永久的被禁用掉.如果是0,表示密码和用户同时死亡;如果是
- -1,这项功能被禁用
-
[-g] 后跟已经存在的group(名称或者GID),修改用户初始用户组;在该用户home目录下被前初始用户组拥有的文
- 件,都将被新初始用户组拥有,其他地方的文,需要手动修改;
-
[-G] 后跟group,表示要将用户添加到的用户组
-
[-l] 修改用户登录名,但是原来用户的home目录需要手动修改xiugai
-
[-L] 锁住用户password,通过在/etc/shadow用户名第二字段密码前加之'!';
-
[-m] 移动用户home目录,必须配合[-d]命令来使用;
-
[-p] 加密后的password,是经crypt处理后的返回值;
-
[-s] 用户登录shell,空白表示使用系统默认的shell;
-
[-u] 修改用户的uid,如果没用[-o],uid必须是唯一的.修改后,用户mailbox以及home目录下的所有文件都会被自
- 动修改成新的uid,而其他地方的文件需要手动修改;
-
[-U] 解锁用户密码;
下面看一个小例子,用usermod来修改用户uid:
- [huang@myhost/~]$ sudo usermod -u 1023 whu
-
[huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
-
/etc/shadow:whu:!:15234:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
从前面列出的例子中知道,whu 的 uid=1100,现在修改为 1023;
下面再来看一个用[-p]选项来修改用户密码:
- [huang@myhost/~]$ sudo usermod -p 123456 whu
-
[huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
-
/etc/shadow:whu:123456:15235:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
从/etc/shadow中,whu行第二列以前的'!'被修改为‘123456’,但该文件存放的密码段都是经过加密函数处理过得,原始密码肯定不是'123456'.
下面的例子是用[-L]选项来锁定用户登录密码:
- [huang@myhost/~]$ sudo usermod -L whu
-
[huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
-
/etc/shadow:whu:!123456:15235:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
用[-U]选项来解锁密码:
- [huang@myhost/~]$ sudo usermod -U whu
-
[huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1023:1100::/home/whu:/bin/bash
-
/etc/shadow:whu:123456:15235:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
看到/etc/shadow第二字段密码前的'!'被移除了;
修改用户的shell:
- [huang@myhost/~]$ sudo chsh -s /bin/zsh whu
[\u@\h/\W]\$ ##登录后的界面,部分过程省略
- [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1023:1100::/home/whu:/bin/zsh
-
/etc/shadow:whu:$1$i1IG9I4I$szcPME3EfmUqaJSeaHkwV.:15235:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
查看/etc/passwd文件中,whu行最后一个字段原来/bin/bash被修改成/bin/zsh ;
补充一个小命令:chfn 修改用户/etc/passwd 第五字段中的内容:
- [whu@myhost huang]$ chfn
-
Password:
-
Changing the user information for whu
-
Enter the new value, or press ENTER for the default
-
Full Name:
-
Room Number []: 416
-
Work Phone []: 159729019**
-
Home Phone []: 837420**
- ## 真实电话号码在写博客的时候经过处理,运行命令时填写的是真实的号码 ##
查看修改后的内容:
- [huang@myhost/~]$ sudo grep 'whu' /etc/passwd /etc/shadow /etc/group /etc/gshadow
-
/etc/passwd:whu:x:1023:1100:,416,159729019**,83742096:/home/whu:/bin/bash
-
/etc/shadow:whu:$1$i1IG9I4I$szcPME3EfmUqaJSeaHkwV.:15235:0:99999:7:::
-
/etc/group:whu:x:1100:
-
/etc/gshadow:whu:!::
- ## 说明同上 ##
修改archlinux默认配置文件,在useradd命令添加用户时,使用到[-m]选项或者在/etc/login.defs文件中定义了CREATE_HOME 是 yes ,则会将/etc/skel/*下的文件全部拷贝到新建用户的home目录下;
在/etc/login.defs中最后添加:CREATE_HOME yes这行后,运行如下命令:
- [huang@myhost/home]$ sudo useradd hbj ## 没有加 [-m]选项 ##
-
[huang@myhost/home]$ ls -l
-
total 36
-
drwx------ 2 archlinux users 4096 Sep 18 02:57 archlinux
-
drwx------ 2 hbj hbj 4096 Sep 18 09:01 hbj ## 创建了hbj用户的home目录 ##
-
drwx------ 30 huang huang 4096 Sep 18 08:58 huang
-
drwx------ 2 root root 16384 May 3 21:07 lost+found
-
drwx------ 2 test test 4096 Sep 18 03:38 test
-
drwx------ 2 whu whu 4096 Sep 18 08:17 whu
下面删除用户hbj:
- [huang@myhost/home]$ sudo userdel -r hbj
-
[huang@myhost/home]$ ls
-
archlinux huang lost+found test whu ## /home目录创建的/hbj目录被删除了 ##
-
-
[huang@myhost/home]$ sudo grep 'hbj' /etc/passwd /etc/shadow /etc/group /etc/gshadow
- ## 四个重要的用户登录文件中,已经不再包含用户hbj的任何信息 ##
最后我们看一看在/etc/目录下创建用户home目录很重要的一个目录-- /etc/skel/
- [huang@myhost/etc]$ cd ./skel/
-
[huang@myhost/skel]$ ls -al
-
total 28
-
drwxr-xr-x 2 root root 4096 May 13 05:33 .
-
drwxrwxrwx 68 root root 4096 Sep 18 08:45 ..
-
-rw-r--r-- 1 root root 21 May 8 09:42 .bash_logout
-
-rw-r--r-- 1 root root 57 May 8 09:42 .bash_profile
-
-rw-r--r-- 1 root root 141 May 8 09:42 .bashrc
-
-rw-r--r-- 1 root root 312 Mar 11 2011 .xinitrc
-
-rw-r--r-- 1 root root 100 Mar 11 2011 .xsession
大家可以把这个列表跟前面提到查看用户whu的home目录列表相比较,很轻易的发现/home/whu/目录下的文件夹内容跟/etc/skel/文件夹下的内容一模一样,同时也论证了上面我提到的结论。
阅读(1960) | 评论(0) | 转发(3) |