linux下修改用户的工具介绍
作者:
linux下修改用户的工具介绍
1、chfn 修改用户信息工具;
chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下:
chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]
最简单的方法是
chfn 用户名
[root@localhost ~]# chfn beinanlinux 注:更改用户beinanlinux的信息;
Changing finger information for beinanlinux.
Name []: BeiNan.Linux 注:用户全名BeiNan.Linux ,随便写一个就行;
Office []: ChinaDL
Office Phone []: 66666666
Home Phone []: 99999999
Finger information changed. 注:更改完成;
我们怎么能知道更改好了呢??可以通过finger 或直接查看/etc/passwd文件;
[root@localhost ~]# finger beinanlinux
Login: beinanlinux Name: BeiNan.Linux
Directory: /home/beinanlinux Shell: /bin/bash
Office: ChinaDL Home Phone: 99999999
Last login Sat Nov 5 11:27 (CST) on tty2
No mail.
No Plan.
chfn 究竟改了/etc/passwd 文件中beinanlinux用户的哪部份呢??
[root@localhost ~]# more /etc/passwd |grep beinanlinux
beinanlinux:x:509:509:BeiNan.Linux,ChinaDL,66666666,99999999:/home/beinanlinux:/bin/bash
通过more /etc/passwd ,然后来抽取 beinanlinux记录,看一下红字标出的,就是我们通过chfn 修改过的地方,所以我们可以直接通过修改/etc/passwd文件来达到目的;
2、chsh 改变用户的SHELL类型;
[root@localhost ~]# chsh --help
Usage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username ]
如果chsh 不加任何参数及用户名的情况下,默认为更改当前操作用户的SHELL类型;
举例说明:
[root@localhost ~]# chsh --list-shells 注:列出当前系统中所有的SHELL;
/bin/sh
/bin/bash
/sbin/nologin 注:这个是不允许用户登录系统所用,是极为有用的;您可以通过查看/etc/passwd 中看哪些用户是nologin;
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh
[root@localhost ~]# finger beinanlinux |grep Shell 注:查看用户beinanlinux 所用的SHELL类型;
Directory: /home/beinanlinux Shell: /bin/bash 注:beinanlinux用的是bash ;
[root@localhost ~]# chsh -s /bin/ksh beinanlinux 注:更改beinanlinux所用的shell 为ksh ;
Changing shell for beinanlinux.
Shell changed. 注:更改完成;
[root@localhost ~]# finger beinanlinux |grep Shell 注:再次查询beinanlinux所用的SHELL;
Directory: /home/beinanlinux Shell: /bin/ksh 注:看来已经改过来了;
chsh 还是有用的,特加是不允许用户登录时,我们可以把用户的SHELL改到 /sbin/nologin;系统中一些虚拟用户大多是不能登录系统的,这对于系统安全来说是极为重要;通过下面的命令查看一下系统中哪些用户是没有登录权限的?
[root@localhost ~]# more /etc/passwd |grep nologin
3、usermod 用户修改工具(极其强大)
usermod 不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。usermod 如此看来就是能做到用户帐号大转移;比如我把用户A改为新用户B;
usermod [-u uid [-o]] [-g group] [-G group,...]
[-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
[-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名
usermod 命令会参照你命令列上指定的部份修改系统帐号档。下列为usermod可选用的参数。
-c comment
更新用户帐号password档中的注解栏,一般是使用chfn(1)来修改。
-d home_dir
更新用户新的登入目录。如果给定-m选项,用户旧目录会搬到新的目录去,如旧目录不存在则建个新的。
-e expire_date 加上用户帐号停止日期。日期格式为MM/DD/YY.
-f inactive_days 帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1。
-g initial_group 更新用户新的起始登入用户组。用户组名须已存在。用户组ID必须参照既有的的用户组。用户组ID预设值为1。
-G group,[...] 定义用户为一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。如果用户现在的用户组不再此列,则将用户由该用户组中移除。
-l login_name 变更用户login时的名称为login_name。其它不变。特别是,用户目录名应该也会跟着更动成新的登入名。
-s shell 指定新登入shell。如此栏留白,系统将选用系统预设shell。
-u uid用户ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为最小不得小于/etc/login.defs中定义的UID_MIN值。 0到UID_MIN值之间是传统上保留给系统帐号使用。用户目录树下所有的档案目录其userID会自动改变。放在用户目录外的档案则要自行手动更动。
警告:usermod不允许你改变正在线上的用户帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序。你需手 动更改用户的crontab档。也需手动更改用户的at工作档。采用NISserver须在server上更动相关的NIS设定。
举个简单的例子,我们在前面说了关于useradd的工具,而usermod 工具和useradd的参数差不多;两者不同之处在于useradd是添加,usermod 是修改;
[root@localhost ~]# usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish
注:把linuxfish 用户名改为fishlinux ,并且把其家目录转移到 /opt/linuxfish ;
[root@localhost ~]# ls -la /opt/linuxfish/ 注:查看用户fishlinux的家目录下的文件及属主;
总用量 48
drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .
drwxrwxrwx 29 root root 4096 11月 5 16:48 ..
-rw-r--r-- 1 fishlinux linuxfish 24 11月 5 16:46 .bash_logout
-rw-r--r-- 1 fishlinux linuxfish 191 11月 5 16:46 .bash_profile
-rw-r--r-- 1 fishlinux linuxfish 124 11月 5 16:46 .bashrc
-rw-r--r-- 1 fishlinux linuxfish 5619 11月 5 16:46 .canna
-rw-r--r-- 1 fishlinux linuxfish 438 11月 5 16:46 .emacs
-rw-r--r-- 1 fishlinux linuxfish 120 11月 5 16:46 .gtkrc
drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .kde
-rw-r--r-- 1 fishlinux linuxfish 0 11月 5 16:46 mydoc.txt
-rw-r--r-- 1 fishlinux linuxfish 658 11月 5 16:46 .zshrc
[root@localhost ~]# more /etc/passwd |grep fishlinux 注:查看有关fishlinux的记录;
fishlinux:x:512:512::/opt/linuxfish:/bin/bash
通过上面的例子,我们发现文件的用户组还没有变,如果您想改变为fishlinux用户组,如果想用通过 usermod来修改,就要先添加fishlinux用户组;然后用usermod -g 来修改 ,也可以用chown -R fishlinux:fishlinux /opt/finshlinux 来改;
警告: usermod 最好不要用它来改用户的密码,因为他在/etc/shadow中显示的是明口令;修改用户的口令最好用passwd ;
[root@localhost ~]# usermod -p 123456 fishlinux 注:修改fishlinux的口令是123456 ;
[root@localhost ~]# more /etc/shadow |grep fishlinux 注:查询/etc/shadow文件中fishlinux的口令;我们看到明显是没有加密;
fishlinux:123456:13092:0:99999:7:::
4、userinfo 图形介面的修改工具;
userinfo 系统普通用户都能调用,但都是修改当前操作用户的;还是点鼠标完成吧,多点几下就OK了。
[root@localhost ~]# userinfo
chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下:
chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]
最简单的方法是
chfn 用户名
[root@localhost ~]# chfn beinanlinux 注:更改用户beinanlinux的信息;
Changing finger information for beinanlinux.
Name []: BeiNan.Linux 注:用户全名BeiNan.Linux ,随便写一个就行;
Office []: ChinaDL
Office Phone []: 66666666
Home Phone []: 99999999
Finger information changed. 注:更改完成;
我们怎么能知道更改好了呢??可以通过finger 或直接查看/etc/passwd文件;
[root@localhost ~]# finger beinanlinux
Login: beinanlinux Name: BeiNan.Linux
Directory: /home/beinanlinux Shell: /bin/bash
Office: ChinaDL Home Phone: 99999999
Last login Sat Nov 5 11:27 (CST) on tty2
No mail.
No Plan.
chfn 究竟改了/etc/passwd 文件中beinanlinux用户的哪部份呢??
[root@localhost ~]# more /etc/passwd |grep beinanlinux
beinanlinux:x:509:509:BeiNan.Linux,ChinaDL,66666666,99999999:/home/beinanlinux:/bin/bash
通过more /etc/passwd ,然后来抽取 beinanlinux记录,看一下红字标出的,就是我们通过chfn 修改过的地方,所以我们可以直接通过修改/etc/passwd文件来达到目的;
2、chsh 改变用户的SHELL类型;
[root@localhost ~]# chsh --help
Usage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username ]
如果chsh 不加任何参数及用户名的情况下,默认为更改当前操作用户的SHELL类型;
举例说明:
[root@localhost ~]# chsh --list-shells 注:列出当前系统中所有的SHELL;
/bin/sh
/bin/bash
/sbin/nologin 注:这个是不允许用户登录系统所用,是极为有用的;您可以通过查看/etc/passwd 中看哪些用户是nologin;
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh
[root@localhost ~]# finger beinanlinux |grep Shell 注:查看用户beinanlinux 所用的SHELL类型;
Directory: /home/beinanlinux Shell: /bin/bash 注:beinanlinux用的是bash ;
[root@localhost ~]# chsh -s /bin/ksh beinanlinux 注:更改beinanlinux所用的shell 为ksh ;
Changing shell for beinanlinux.
Shell changed. 注:更改完成;
[root@localhost ~]# finger beinanlinux |grep Shell 注:再次查询beinanlinux所用的SHELL;
Directory: /home/beinanlinux Shell: /bin/ksh 注:看来已经改过来了;
chsh 还是有用的,特加是不允许用户登录时,我们可以把用户的SHELL改到 /sbin/nologin;系统中一些虚拟用户大多是不能登录系统的,这对于系统安全来说是极为重要;通过下面的命令查看一下系统中哪些用户是没有登录权限的?
[root@localhost ~]# more /etc/passwd |grep nologin
3、usermod 用户修改工具(极其强大)
usermod 不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。usermod 如此看来就是能做到用户帐号大转移;比如我把用户A改为新用户B;
usermod [-u uid [-o]] [-g group] [-G group,...]
[-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
[-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名
usermod 命令会参照你命令列上指定的部份修改系统帐号档。下列为usermod可选用的参数。
-c comment
更新用户帐号password档中的注解栏,一般是使用chfn(1)来修改。
-d home_dir
更新用户新的登入目录。如果给定-m选项,用户旧目录会搬到新的目录去,如旧目录不存在则建个新的。
-e expire_date 加上用户帐号停止日期。日期格式为MM/DD/YY.
-f inactive_days 帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1。
-g initial_group 更新用户新的起始登入用户组。用户组名须已存在。用户组ID必须参照既有的的用户组。用户组ID预设值为1。
-G group,[...] 定义用户为一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。如果用户现在的用户组不再此列,则将用户由该用户组中移除。
-l login_name 变更用户login时的名称为login_name。其它不变。特别是,用户目录名应该也会跟着更动成新的登入名。
-s shell 指定新登入shell。如此栏留白,系统将选用系统预设shell。
-u uid用户ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为最小不得小于/etc/login.defs中定义的UID_MIN值。 0到UID_MIN值之间是传统上保留给系统帐号使用。用户目录树下所有的档案目录其userID会自动改变。放在用户目录外的档案则要自行手动更动。
警告:usermod不允许你改变正在线上的用户帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序。你需手 动更改用户的crontab档。也需手动更改用户的at工作档。采用NISserver须在server上更动相关的NIS设定。
举个简单的例子,我们在前面说了关于useradd的工具,而usermod 工具和useradd的参数差不多;两者不同之处在于useradd是添加,usermod 是修改;
[root@localhost ~]# usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish
注:把linuxfish 用户名改为fishlinux ,并且把其家目录转移到 /opt/linuxfish ;
[root@localhost ~]# ls -la /opt/linuxfish/ 注:查看用户fishlinux的家目录下的文件及属主;
总用量 48
drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .
drwxrwxrwx 29 root root 4096 11月 5 16:48 ..
-rw-r--r-- 1 fishlinux linuxfish 24 11月 5 16:46 .bash_logout
-rw-r--r-- 1 fishlinux linuxfish 191 11月 5 16:46 .bash_profile
-rw-r--r-- 1 fishlinux linuxfish 124 11月 5 16:46 .bashrc
-rw-r--r-- 1 fishlinux linuxfish 5619 11月 5 16:46 .canna
-rw-r--r-- 1 fishlinux linuxfish 438 11月 5 16:46 .emacs
-rw-r--r-- 1 fishlinux linuxfish 120 11月 5 16:46 .gtkrc
drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .kde
-rw-r--r-- 1 fishlinux linuxfish 0 11月 5 16:46 mydoc.txt
-rw-r--r-- 1 fishlinux linuxfish 658 11月 5 16:46 .zshrc
[root@localhost ~]# more /etc/passwd |grep fishlinux 注:查看有关fishlinux的记录;
fishlinux:x:512:512::/opt/linuxfish:/bin/bash
通过上面的例子,我们发现文件的用户组还没有变,如果您想改变为fishlinux用户组,如果想用通过 usermod来修改,就要先添加fishlinux用户组;然后用usermod -g 来修改 ,也可以用chown -R fishlinux:fishlinux /opt/finshlinux 来改;
警告: usermod 最好不要用它来改用户的密码,因为他在/etc/shadow中显示的是明口令;修改用户的口令最好用passwd ;
[root@localhost ~]# usermod -p 123456 fishlinux 注:修改fishlinux的口令是123456 ;
[root@localhost ~]# more /etc/shadow |grep fishlinux 注:查询/etc/shadow文件中fishlinux的口令;我们看到明显是没有加密;
fishlinux:123456:13092:0:99999:7:::
4、userinfo 图形介面的修改工具;
userinfo 系统普通用户都能调用,但都是修改当前操作用户的;还是点鼠标完成吧,多点几下就OK了。
[root@localhost ~]# userinfo