logname命令用来显示用户名称。
语法
logname(选项)
选项
--help:在线帮助;
--vesion:显示版本信息。
newusers命令用于批处理的方式一次创建多个命令。
newusers(参数)
用户文件:指定包含用户信息的文本文件,文件的格式要与/etc/passwd
相同。
实用newusers命令批量添加用户:
用法很简单,newusers后面直接跟一个文件,文件格式和/etc/passwd
的格式相同。
用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL
举例:
jingang0:x:520:520::/home/jingang0:/sbin/nologin
jingang1:x:521:521::/home/jingang1:/sbin/nologin
......
值得一提的是关于SHELL类型,查看主机上所有SHELL,可以通过chsh来查看:
[root@localhost beinan]# chsh --list /bin/sh /bin/bash /sbin/nologin /bin/ksh /bin/tcsh /bin/csh /bin/zsh
其中除了/sbin/nologin
,其它类型的SHELL都能登录系统,nologin大多是虚拟用户用的SHELL,也就是说虽然他是系统用户,但他并无登录系统的权限;如果您想添加这类用户,就把他的SHELL设置成/sbin/nologin
,比如上面的例子。
关于用户名、UID、GID及用户的家目录是怎么回事,您可以读相应的参考文档。
chfn命令用来改变finger命令显示的信息。这些信息都存放在/etc目录里的passwd文件里。若不指定任何选项,则chfn命令会进入问答式界面。
chfn(选项)(参数)
-f<真实姓名>或--full-name<真实姓名>:设置真实姓名;
-h<家中电话>或--home-phone<家中电话>:设置家中的电话号码;
-o<办公地址>或--office<办公地址>:设置办公室的地址;
-p<办公电话>或--office-phone<办公电话>:设置办公室的电话号码;
-u或--help:在线帮助;
-v或-version:显示版本信息。
用户名:指定要改变finger信息的用户名。
范例1,改变finger信息:
[root@localhost Desktop]# chfn Changing finger information for root. Name [root]: jack Office []: hn Office Phone []: 888888 Home Phone []: 9999999 Finger information changed.
范例2,改变账号真实姓名:
[root@localhost Desktop]# chfn -f jack Changing finger information for root. Finger information changed.
范例3:
shell>> chfn Changing finger information for user Password: [del] Name[]:linuxdoc ### 提供 finger 时的资料 Office[]:NCCU Office Phone[]: [del] Home Phone[]: [del]
passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
passwd(选项)(参数)
-d:删除密码,仅有系统管理者才能使用; -f:强制执行; -k:设置只有在密码过期失效后,方能更新; -l:锁住密码; -s:列出密码的相关信息,仅有系统管理者才能使用; -u:解开已上锁的帐号。
用户名:需要设置密码的用户名。
与用户、组账户信息相关的文件
存放用户信息:
/etc/passwd /etc/shadow
存放组信息:
/etc/group /etc/gshadow
用户信息文件分析(每项用:
隔开)
例如:jack:X:503:504:::/home/jack/:/bin/bash
jack //用户名
X //口令、密码
503 //用户id(0代表root、普通新建用户从500开始)
504 //所在组
: //描述
/home/jack/ //用户主目录
/bin/bash //用户缺省Shell
组信息文件分析
例如:jack:$!$:???:13801:0:99999:7:*:*: jack //组名 $!$ //被加密的口令 13801 //创建日期与今天相隔的天数 0 //口令最短位数 99999 //用户口令 7 //到7天时提醒 * //禁用天数 * //过期天数
如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。
[root@localhost ~]# passwd linuxdoc //更改或创建linuxdoc用户的密码; Changing password for user linuxdoc. New UNIX password: //请输入新密码; Retype new UNIX password: //再输入一次; passwd: all authentication tokens updated successfully. //成功;
普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxdoc。
[linuxdoc@localhost ~]$ passwd Changing password for user linuxdoc. //更改linuxdoc用户的密码; (current) UNIX password: //请输入当前密码; New UNIX password: //请输入新密码; Retype new UNIX password: //确认新密码; passwd: all authentication tokens updated successfully. //更改成功;
比如我们让某个用户不能修改密码,可以用-l
选项来锁定:
[root@localhost ~]# passwd -l linuxdoc //锁定用户linuxdoc不能更改密码;
Locking password for user linuxdoc.
passwd: Success //锁定成功;
[linuxdoc@localhost ~]# su linuxdoc //通过su切换到linuxdoc用户;
[linuxdoc@localhost ~]$ passwd //linuxdoc来更改密码;
Changing password for user linuxdoc.
Changing password for linuxdoc
(current) UNIX password: //输入linuxdoc的当前密码;
passwd: Authentication token manipulation error //失败,不能更改密码;
再来一例:
[root@localhost ~]# passwd -d linuxdoc //清除linuxdoc用户密码; Removing password for user linuxdoc. passwd: Success //清除成功; [root@localhost ~]# passwd -S linuxdoc //查询linuxdoc用户密码状态; Empty password. //空密码,也就是没有密码;
注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意。
groupmod命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
groupmod(选项)(参数)
-g<群组识别码>:设置欲使用的群组识别码; -o:重复使用群组识别码; -n<新群组名称>:设置欲使用的群组名称。
组名:指定要修改的工作的组名。
pwck命令用来验证系统认证文件/etc/passwd
和/etc/shadow
的内容和格式的完整性。
pwck(选项)(参数)
-q:仅报告错误信息;
-s:以用户id排序文件“/etc/passwd”和“/etc/shadow”;
-r:只读方式运行指令。
pwck /etc/passwd
user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'www-data': directory '/var/www' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/var/run/ircd' does not exist
user 'gnats': directory '/var/lib/gnats' does not exist
user 'nobody': directory '/nonexistent' does not exist
user 'syslog': directory '/home/syslog' does not exist
user 'couchdb': directory '/var/lib/couchdb' does not exist
user 'speech-dispatcher': directory '/var/run/speech-dispatcher' does not exist
user 'usbmux': directory '/home/usbmux' does not exist
user 'haldaemon': directory '/var/run/hald' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'saned': directory '/home/saned' does not exist
user 'hplip': directory '/var/run/hplip' does not exist
pwck:无改变
gpasswd命令是Linux下工作组文件/etc/group
和/etc/gshadow
管理工具。
gpasswd(选项)(参数)
-a:添加用户到组; -d:从组删除用户; -A:指定管理员; -M:指定组成员和-A的用途差不多; -r:删除密码; -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
组:指定要管理的工作组。
如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可。
gpasswd groupname
让使用者暂时加入成为该组成员,之后peter建立的文件group也会是groupname。所以该方式可以暂时让peter建立文件时使用其他的组,而不是peter本身所在的组。
所以使用gpasswd groupname
设定密码,就是让知道该群组密码的人可以暂时切换具备groupname群组功能的。
gpasswd -A peter users
这样peter就是users群组的管理员,就可以执行下面的操作:
gpasswd -a mary users gpasswd -a allen users
注意:添加用户到某一个组 可以使用usermod -G group_name user_name
这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用gpasswd这个命令来添加操作用户:
gpasswd -a user_name group_name
chsh命令用来更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。
chsh(选项)(参数)
-s<shell 名称>或--shell<shell 名称>:更改系统预设的shell环境。;
-l或--list-shells:列出目前系统可用的shell清单;
-u或--help:在线帮助;
-v或-version:显示版本信息。
用户名:要改变默认shell的用户。
查看系统安装了哪些shell的两种方法:
第一种:
[rocrocket@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh
第二种:
[rocrocket@localhost ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh
其实chsh -l
也是来查看这个文件。
查看当前正在使用的shell:
[rocrocket@localhost ~]$ echo $SHELL
/bin/bash
注意SHELL一定要是大写。可以看到,目前使用的shell是/bin/bash
把我的shell改成zsh:
[rocrocket@localhost ~]$ chsh -s /bin/zsh Changing shell for rocrocket. Password: Shell changed. [rocrocket@localhost ~]$
使用chsh加选项-s
就可以修改登录的shell了!你会发现你现在执行echo $SHELL
后仍然输出为/bin/bash
,这是因为你需要重启你的shell才完全投入到zsh怀抱中去。chsh -s
其实修改的就是/etc/passwd
文件里和你的用户名相对应的那一行。现在来查看下:
[rocrocket@localhost ~]$ cat /etc/passwd|grep ^rocrocket
rocrocket:x:500:500:rocrocket,China:/rocrocket/PSB/home:/bin/zsh
你可以发现输出内容的最后部分已经变成了/bin/zsh
了,下次重启的时候,linux就会读取这一命令来启动shell了!
把shell修改回/bin/bash:
[rocrocket@localhost ~]$ chsh -s /bin/bash Changing shell for rocrocket. Password: Shell changed.
groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
groupdel(参数)
组:要删除的工作组名。
groupadd damon //创建damon工作组
groupdel damon //删除这个工作组