📄 linux 用户管理工具介绍 linuxsir_org.htm
字号:
<P>
<DIV class=codeblock><CODE>[root@localhost beinan]# passwd
--help<BR>Usage: passwd [OPTION...] <accountName><BR> -k,
--keep-tokens keep non-expired authentication
tokens<BR> 注:保留即将过期的用户在期满后能仍能使用;<BR> -d,
--delete delete the password for the named account (root
only)<BR> 注:删除用户密码,仅能以root权限操作;<BR> -l,
--lock lock the named account (root
only)<BR> 注:锁住用户无权更改其密码,仅能通过root权限操作;<BR> -u,
--unlock unlock the named account (root
only)<BR> 注:解除锁定;<BR> -f,
--force force
operation<BR> 注:强制操作;仅root权限才能操作;<BR> -x,
--maximum=DAYS maximum password lifetime (root only)
注:两次密码修正的最大天数,后面接数字;仅能root权限操作;<BR> -n, --minimum=DAYS minimum
password lifetime (root only)
注:两次密码修改的最小天数,后面接数字,仅能root权限操作;<BR> -w, --warning=DAYS number
of days warning users receives before
注:在距多少天提醒用户修改密码;仅能root权限操作;<BR> password
expiration (root only)<BR> -i, --inactive=DAYS number of days
after password expiration when an
注:在密码过期后多少天,用户被禁掉,仅能以root操作;<BR> account
becomes disabled (root only)<BR> -S, --status report password
status on the named account (root
注:查询用户的密码状态,仅能root用户操作;<BR> only)<BR> --stdin
read new tokens from stdin (root only)</CODE></DIV>
<P></P>
<P>比如我们让某个用户不能修改密码,可以用-l 参数来锁定:</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# passwd -l beinan
注:锁定用户beinan不能更改密码;<BR>Locking password for user beinan.<BR>passwd:
Success 注:锁定成功;<BR>[beinan@localhost ~]# su beinan
注:通过su切换到beinan用户;<BR>[beinan@localhost ~]$ passwd
注:beinan来更改密码;<BR>Changing password for user beinan.<BR>Changing password
for beinan<BR>(current) UNIX password: 注:输入beinan的当前密码;<BR>passwd:
Authentication token manipulation error 注:失败,不能更改密码;</CODE></DIV>
<P></P>
<P><B><BR>再来一例:<BR></B></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# passwd -d beinan
注:清除beinan用户密码;<BR>Removing password for user beinan.<BR>passwd: Success
注:清除成功;<BR>[root@localhost ~]# passwd -S beinan 注:查询beinan用户密码状态;<BR>Empty
password. 注:空密码,也就是没有密码;</CODE></DIV>
<P></P>
<P><FONT color=red><B>注意:</B></FONT> 当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意;</P>
<P><FONT id=3.3 size=3><B><BR>3、chage 修改用户密码有效期限的命令;<BR></B></FONT></P>
<P>chage 用语法格式:</P>
<P>
<DIV class=codeblock><CODE>chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-I 失效日]
[-E 过期日] [-d 最后日] 用户</CODE></DIV>
<P></P>
<P>前面已经说的好多了,这个只是一笔带过吧,知道有这个命令就行,自己实践实践再说,大体和psswd有些参数的用法差不多;</P>
<P><FONT id=4 size=4><B><BR>四、删除用户和用户组的工具, userdel和 groupdel
介绍;<BR></B></FONT><BR><FONT id=4.1 size=3><B><BR>1、userdel
用法;<BR></B></FONT></P>
<P>userdel 的语法格式:</P>
<P><B><BR>userdel [-r] 名称<BR></B></P>
<P>userdel很简单,只有一个参数可选 -r ;如果加参数-r
,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;比如我们现在有两个用户bnnb和lanhaitun,其家目录都位于/home目录中,现在我们来删除这两个用户;</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# userdel bnnb
注:删除用户bnnb,但不删除其家目录及文件;<BR>[root@localhost ~]# ls -ld /home/bnnb
注:查看其家目录是否存在;<BR>drwxr-xr-x 14 501 501 4096 8月 29 16:33 /home/bnnb
注:存在;<BR>[root@localhost ~]# ls -ld /home/lanhaitun
注:查看lanhaitun家目录是否存在;<BR>drwx------ 4 lanhaitun lanhaitun 4096 11月 5 14:50
/home/lanhaitun 注:存在;<BR>[root@localhost ~]# userdel -r lanhaitun
注:删除用户lanhaitun,其家目录及文件一并删除; <BR>[root@localhost ~]# ls -ld
/home/lanhaitun 注:查看是否在删除lanhaitun 用户的同时,也一并把其家目录和文件一同删除;<BR>ls:
/home/lanhaitun: 没有那个文件或目录 注:已经删除;</CODE></DIV>
<P></P>
<P><FONT color=red><B>警告:</B></FONT>
请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份;</P>
<P>其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd
是极为重要的文件,可能您一不小心会操作失误;</P>
<P><FONT id=4.2 size=3><B><BR>2、groupdel的用法;<BR></B></FONT></P>
<P>groupdel 是用来删除用户组的;</P>
<P><B>语法格式:</B>groupdel 用户组</P>
<P>比如:<BR>
<DIV class=codeblock><CODE>[root@localhost ~]# groupdel
lanhaitun</CODE></DIV>
<P></P>
<P><FONT id=5 size=4><B><BR>五、修改用户的工具介绍;<BR></B></FONT></P>
<P>我们前面已经多次说过用户配置文件的重要性了,其实我们无论怎么改,都是改与用户相关的配置文件;如果我们与用户相关的配置文件的规则,可以直接修改配置文件,在这里就不再多说了,请参看相关文档吧,谢谢;</P>
<P><FONT id=5.1 size=3><B><BR>1、chfn 修改用户信息工具;<BR></B></FONT></P>
<P>chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下:</P>
<P>
<DIV class=codeblock><CODE>chfn [ -f full-name ] [ -o office ] [ -p
office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]</CODE></DIV>
<P></P>
<P>最简单的方法是</P>
<P><B>chfn 用户名</B><BR>
<DIV class=codeblock><CODE>[root@localhost ~]# chfn beinanlinux
注:更改用户beinanlinux的信息;<BR>Changing finger information for
beinanlinux.<BR>Name []: BeiNan.Linux 注:用户全名BeiNan.Linux
,随便写一个就行;<BR>Office []: ChinaDL<BR>Office Phone []: 66666666<BR>Home Phone
[]: 99999999<BR>Finger information changed. 注:更改完成;</CODE></DIV>
<P></P>
<P>我们怎么能知道更改好了呢??可以通过finger 或直接查看/etc/passwd文件;<BR>
<DIV class=codeblock><CODE>[root@localhost ~]# finger
beinanlinux<BR>Login: beinanlinux Name: BeiNan.Linux<BR>Directory:
/home/beinanlinux Shell: /bin/bash<BR>Office: ChinaDL Home Phone:
99999999<BR>Last login Sat Nov 5 11:27 (CST) on tty2<BR>No mail.<BR>No
Plan.</CODE></DIV>
<P></P>
<P>chfn 究竟改了/etc/passwd 文件中beinanlinux用户的哪部份呢??</P><PRE>[root@localhost ~]# more /etc/passwd |grep beinanlinux
beinanlinux:x:509:509:<FONT color=red>BeiNan.Linux,ChinaDL,66666666,99999999</FONT>:/home/beinanlinux:/bin/bash
</PRE>
<P>通过more /etc/passwd ,然后来抽取 beinanlinux记录,看一下红字标出的,就是我们通过chfn
修改过的地方,所以我们可以直接通过修改/etc/passwd文件来达到目的;</P>
<P><FONT id=5.2 size=3><B><BR>2、chsh 改变用户的SHELL类型;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# chsh --help<BR>Usage: chsh
[ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username
]</CODE></DIV>
<P></P>
<P>如果chsh 不加任何参数及用户名的情况下,默认为更改当前操作用户的SHELL类型;</P>
<P>举例说明:<BR>
<DIV class=codeblock><CODE>[root@localhost ~]# chsh --list-shells
注:列出当前系统中所有的SHELL;<BR>/bin/sh<BR>/bin/bash<BR>/sbin/nologin
注:这个是不允许用户登录系统所用,是极为有用的;您可以通过查看/etc/passwd
中看哪些用户是nologin;<BR>/bin/ksh<BR>/bin/tcsh<BR>/bin/csh<BR>/bin/zsh<BR>[root@localhost
~]# finger beinanlinux |grep Shell 注:查看用户beinanlinux
所用的SHELL类型;<BR>Directory: /home/beinanlinux Shell: /bin/bash
注:beinanlinux用的是bash ;<BR>[root@localhost ~]# chsh -s /bin/ksh beinanlinux
注:更改beinanlinux所用的shell 为ksh ;<BR>Changing shell for beinanlinux.<BR>Shell
changed. 注:更改完成;<BR>[root@localhost ~]# finger beinanlinux |grep Shell
注:再次查询beinanlinux所用的SHELL;<BR>Directory: /home/beinanlinux Shell: /bin/ksh
注:看来已经改过来了;</CODE></DIV>
<P></P>
<P>chsh 还是有用的,特加是不允许用户登录时,我们可以把用户的SHELL改到
/sbin/nologin;系统中一些虚拟用户大多是不能登录系统的,这对于系统安全来说是极为重要;通过下面的命令查看一下系统中哪些用户是没有登录权限的?</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# more /etc/passwd |grep
nologin</CODE></DIV><BR><FONT id=5.3 size=3><B><BR>3、usermod
用户修改工具(极其强大)<BR></B></FONT>
<P></P>
<P>usermod 不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。usermod
如此看来就是能做到用户帐号大转移;比如我把用户A改为新用户B;</P>
<P>
<DIV class=codeblock><CODE>usermod [-u uid [-o]] [-g group] [-G
group,...]<BR> [-d
主目录 [-m]] [-s shell] [-c 注释] [-l
新名称]<BR> [-f
失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名</CODE></DIV>
<P></P>
<P>
<DIV class=codeblock><CODE>usermod
命令会参照你命令列上指定的部份修改系统帐号档。下列为usermod可选用的参数。<BR>-c
comment<BR> 更新用户帐号password档中的注解栏,一般是使用chfn(1)来修改。<BR>-d
home_dir<BR> 更新用户新的登入目录。如果给定-m选项,用户旧目录会搬到新的目录去,如旧目录不存在则建个新的。<BR>-e
expire_date 加上用户帐号停止日期。日期格式为MM/DD/YY.<BR>-f inactive_days
帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1。<BR>-g initial_group
更新用户新的起始登入用户组。用户组名须已存在。用户组ID必须参照既有的的用户组。用户组ID预设值为1。<BR>-G group,[...]
定义用户为一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。如果用户现在的用户组不再此列,则将用户由该用户组中移除。<BR>-l
login_name 变更用户login时的名称为login_name。其它不变。特别是,用户目录名应该也会跟着更动成新的登入名。<BR>-s
shell 指定新登入shell。如此栏留白,系统将选用系统预设shell。<BR>-u
uid用户ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为最小不得小于/etc/login.defs中定义的UID_MIN值。0到UID_MIN值之间是传统上保留给系统帐号使用。用户目录树下所有的档案目录其userID会自动改变。放在用户目录外的档案则要自行手动更动。<BR>警告:usermod不允许你改变正在线上的用户帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序。你需手动更改用户的crontab档。也需手动更改用户的at工作档。采用NISserver须在server上更动相关的NIS设定。</CODE></DIV>
<P></P>
<P>举个简单的例子,我们在前面说了关于useradd的工具,而usermod
工具和useradd的参数差不多;两者不同之处在于useradd是添加,usermod 是修改;</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# usermod -d /opt/linuxfish
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -