记得好像是从论坛里面找到了,今天在电脑上看到了,就贴上来大家看一下
Linux用户管理一
Linux 用户管理工具介绍
本文主要介绍
Linux系统的用户和用户组的查询、添加、修改及删除等管理工具;
Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询、添加、修改,以及用户之间相互切换的工具等;通过这些工具,我们能安全、轻松的完成用户管理;
一、与用户管理相关的配置文件
1
、
/etc/passwd
和
/etc/groups
在
linux
系统下,对用户和用户组进行添加、修改、删除等操作的最终目的都是通过修改用户和组的配置文件来实现的,这些主要配置文件主要有:
/etc/passwd
、
/etc/shadows
、
/etc/groups
、
/etc/gshadow
、
/etc/skel 目录等;
用户和用户组的配置文件,是系统管理员最应该了解和掌握的系统基础之一,从另一方面来说,了解这些文件也是系统安全管理的重要组成部分;
1
、
/etc/passwd
用户帐号密码文件
[root@jekay /]# cat /etc/passwd
登陆名 口令 UID GID 用户全称和描述 用户主目录 用户登陆的shell环境
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
……
在
/etc/passwd
中,每一行都表示的是一个用户的信息;一行有
7
个段位;每个段位用:号分割,如上:
说明:
UID
是用户的
ID
值,
是确认用户权限的标识,
在系统中每个用户的
UID
的值是唯一的,更确切的说每个用户都要对应一个
唯一
的
UID
,系统管理员应该确保这一规则。系统用户的
UID
的值从
0
开始,是一个正整数,至于最大值可以在
/etc/login.defs
可以查到,一般
Linux
发行版约定为
60000
;
在
Linux
中,
root
的
UID
是
0
,拥有系统最高权限;把几个用户设置为同样的
UID
会造成系统安全的隐患,尤其是设置成
root
的
UID
号
0
;
Linux
系统中的用户角色:
用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;
root 用户
:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
虚拟用户
:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
普通用户
:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;
/etc/login.defs
是设置用户帐号限制的文件
,
在这里我们可配置密码的最大过期天数
,
密码的最大长度约束等内容;
多数发行版本,添加新用户时的
UID
从
500
开始的,
GID
也是从
500
开始;
500内的为系统预留;
2
、
/etc/shadows
用户帐号的加密文件
[root@jekay /]# cat /etc/shadow
root:$1$MebjzxXM$0hVmQ6MMDB5ZVVAGuUG7G1:13599:0:99999:7:::
bin:*:13599:0:99999:7:::
daemon:*:13599:0:99999:7:::
adm:*:13599:0:99999:7:::
lp:*:13599:0:99999:7:::
sync:*:13599:0:99999:7:::
……
/etc/shadow
文件的内容包括
9
个段位,每个段位之间用:号分割;
第一字段: 用户名(也被称为登录名)
,在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密)
,如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
第三字段:上次修改口令的时间;
这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;
如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;
这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;
当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;
此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;
此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
第九字段:保留字段;
/etc/shadow
文件是
/etc/passwd 的投影文件
,这个文件并不由/etc/passwd
而产生的,这两个文件是应该是对应互补的;
shadow
内容包括用户及被加密的密码以及其它
/etc/passwd
不能包括的信息,比如用户的有效期限等;这个文件只有
root权限可以读取和操作,权限如下:
-r-------- 1 root root 740 Mar 27 17:03 /etc/shadow
3
、
/etc/groups 用户组帐号文件
具有某种共同特征的用户集合起来就是用户组(
Group
)。用户组(
Group
)配置文件主要有
/etc/group
和
/etc/gshadow
,其中
/etc/gshadow
是
/etc/group的加密信息文件;
/etc/group文件相对来说比较简单,通过这个配置文件,我们可以清楚地看到系统中用户组,以及用户属于哪个组,某个组中的用户成员有谁等;
Linux
系统下用户组分为
2
种,用户私有组和公有组;
私用组
:
只包含一个用户
,
创建用户时自动创建一个和用户同名的组
公有组
:
可以包含多个用户
当一个用户属于多个用户组时,某个用户的权限只能是当前所属组的权限,而不能是多个组权限的累加,这与
windows是不一样的;
不要随便把普通用户加入到
root组;
[root@jekay /]# cat /etc/group
组名 群组密码 GID 组中用户列表
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
……
在
/etc/group
中的每条记录分四个字段,中间使用:隔开
GID
和
UID
类似,是一个正整数或
0
,是用户组的
ID
值,
GID
从
0
开始,
0
被系统赋予
root
用户组;系统会预留一些较靠前的
GID
给系统虚拟用户组之用;多数
linux
发行版本预留了
500
,也就是说新用户组的
GID
从
500
开始;查看
/etc/login.defs
中的
GID_MIN
和
GID_MAX
值,可以知道
GID
的最大设置值;
Linux用户管理二
4
、
/etc/gshadow 用户组帐号的加密文件
[root@jekay /]# cat /etc/gshadow
用户组名 用户组密码 用户组的管理者 组成员列表
root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon
sys:::root,bin,adm
adm:::root,adm,daemon
tty:::
……
/etc/gshadow
是
/etc/group的加密文件;
用户组密码,用于结构比较复杂的权限模型;
5
、
/etc/skel
目录
用来初始化用户的主目录
[root@jekay /]# ls -al /etc/skel
total 20
drwxr-xr-x 2 root root 4096 Mar 27 16:59 .
drwxr-xr-x 32 root root 4096 Mar 27 17:04 ..
-rw-r--r-- 1 root root 24 Feb 11 2003 .bash_logout
-rw-r--r-- 1 root root 191 Feb 11 2003 .bash_profile
-rw-r--r-- 1 root root 124 Feb 11 2003 .bashrc
目录中存放有与用户相关的配置文件。一般来说,每个用户都有自己的主目录,用户
成功登录后就处于自己的主目录下。
当为新用户创建主目录时,系统会在新用户的主目录下建立一份
/etc/skel目录下所有文件的拷贝,用来初始化用户的主目录。
2
、超级权限控制
sudo
的配置文件
/etc/sudoers
root
超级用户是系统最高权限的拥有者;几乎无所不能,多数的系统设置和权限设置对
root
帐号来说是无用的;所以
root
帐号权限管理不善就会造成系统安全的隐患;
在对系统操作时尽量避免使用
root
登陆,也应该尽量避免直接使用
root
帐号对系统进行配置和操作;但有时普通用户可能需要
root
权限来完成必要的系统管理工作,我们可以使用
su
和
sudo
来实现;
用户帐号类型:
超级用户:
在
Linux
操作系统中,
root
的权限是最高的,也被称为超级权限的拥有者。普通用户无法执行的操作,
root
用户都能完成,所以也被称之为超级管理用户。在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对
root
除外。
root
用户的特权性还表现在
root
可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为
root
是系统中权限最高的特权用户);
UID
为
0
;
普通用户和伪装用户:
与超级用户相对的就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户;但为了完成特定的任务,普通用户和伪装用户也是必须的;
Linux
是一个多用户、多任务的操作系统,多用户主要体现在用户的角色的多样性,不同的用户所分配的权限也不同;这也是
Linux
系统比
Windows
系统更为安全的本质所在;
但值得注意的是超级用户的操作是在系统最高许可范围内的操作;有些操作就是具有超级权限的
root
也无法完成;如:
/proc
目录、加了写保护的文件等;
[root@jekay /]# ls -ld /proc
dr-xr-xr-x
47 root root 0 Mar 27 12:03 /proc
[root@jekay tmp]# chattr +i file
[root@jekay tmp]# rm -f file
rm: cannot remove `file': Operation not permitted
获取超级权限的过程,就是切换普通用户身份到超级用户身份的过程;这个过程主要是通过
su
和
sudo
来解决;
使用
su
命令临时切换用户身份
su
命令就是切换用户的工具;
su [OPTION选项参数] [用户]
-, -l, --login 登录并改变到所切换的用户环境;
-c, --commmand=COMMAND 执行一个命令,然后退出所切换到的用户环境;
su
在不加任何参数,默认为切换到
root
用户,不改变
shell
环境;
su
加参数
-
,表示默认切换到
root
用户,并且改变到
root
用户的环境;
su
的确为管理带来方便,通过切换到
root
下,能完成所有系统管理工具,只要把
root
的密码交给任何一个普通用户,他都能切换到
root
来完成所有的系统管理工作;但如果登陆的用户比较多,而多个用户都需要使用
root
权限,这时就可能会造成安全隐患,而且由于切换的过程是打开
root
的
shell
环境,很多情况下也会造成
root
权限外泻;
sudo
工具
由于
su
对切换到超级权限用户
root
后,权限的无限制性,所以
su
并不能担任多个管理员所管理的系统。通过
sudo
,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道
root
密码,所以
sudo
相对于权限无限制性的
su
来说,还是比较安全的,所以
sudo
也能被称为受限制的
su
;另外
sudo
是需要授权许可的,所以也被称为授权许可的
su;
sudo
执行命令的流程是当前用户切换到
root
(或其它指定切换到的用户),然后以
root
(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过
sudo
的配置文件
/etc/sudoers
来进行授权;
sudo
的配置文件是
/etc/sudoers
;可通过命令
visudo
直接进行编辑;
通过
sudo -l
来查看哪些命令是可以执行或禁止的;
/etc/sudoers
文件中每行算一个规则,前面带有
#
号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用
\
号来续行,这样看来一个规则也可以拥有多个行;
/etc/sudoers
的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的;
默认
/etc/sudoers配置文件
[root@jekay]# cat /etc/sudoers
# sudoers file.
# This file MUST be edited with the 'visudo' command as root.
# See the sudoers man page for the details on how to write a sudoers file.
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
别名规则定义格式如下:
Alias_Type NAME = item1, item2, ...
或
Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
别名类型(
Alias_Type
):别名类型包括如下四种
Host_Alias
定义主机别名;项目可以是主机名、可以是单个
ip
(整段
ip
地址也可以),也可以是网络掩码;
Host_Alias BE01=localhost,bt05,tt04,10.0.0.4,255.255.255.0,192.168.1.0/24 注:定义主机别名HT01,通过=号列出成员
User_Alias
用户别名,别名成员可以是用户,用户组(前面要加
%
号)
User_Alias SYSAD=jekay,linux,lt,benet:NETAD=jekay:WEBMASTER=admin
Runas_Alias
用来定义
runas
别名,这个别名指定的是
“
目的用户
”
,即
sudo
允许切换至的用户;
Runas_Alias OP = root, operator
Cmnd_Alias
定义命令别名;
Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted
Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network
Cmnd_Alias KILL = /usr/bin/kill
NAME
就是别名了,
NMAE
的命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头;
item
按中文翻译是项目,在这里我们可以译成成员,如果一个别名下有多个成员,成员与成员之间,通过半角
,
号分隔;成员在必须是有效并事实存在的。
item
成员受别名类型
Host_Alias
、
User_Alias
、
Runas_Alias
、
Cmnd_Alias
制约,定义什么类型的别名,就要有什么类型的成员相配。我们用
Host_Alias
定义主机别名时,成员必须是与主机相关相关联,比如是主机名(包括远程登录的主机名)、
ip
地址(单个或整段)、掩码等;当用户登录时,可以通过
w
命令来查看登录用户主机信息;用
User_Alias
和
Runas_Alias
定义时,必须要用系统用户做为成员;用
Cmnd_Alias
定义执行命令的别名时,必须是系统存在的文件,文件名可以用通配符表示,配置
Cmnd_Alias
时命令需要绝对路径;其中
Runas_Alias
和
User_Alias
有点相似,但与
User_Alias
绝对不是同一个概念,
Runas_Alias
定义的是某个系统用户可以
sudo
切换身份到
Runas_Alias
下的成员;我们在授权规则中以实例进行解说;
别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过
\
来续行;同一类型别名的定义,一次也可以定义几个别名,他们中间用
:
号分隔,
Linux用户管理三
/etc/sudoers中的授权规则
授权规则是分配权限的执行规则,我们前面所讲到的定义别名主要是为了更方便的授权引用别名;如果系统中只有几个用户,其实下放权限比较有限的话,可以不用定义别名,而是针对系统用户直接直接授权,所以在授权规则中别名并不是必须的;
授权用户 主机=命令动作
这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用
( )
号括起来,如果不需要密码直接运行命令的,应该加
NOPASSWD:
参数,但这些可以省略;
授权用户
主机
=[(
切换到哪些用户或用户组
)] [
是否需要密码验证
]
命令
1,[(
切换到哪些用户或用户组
)] [
是否需要密码验证
] [
命令
2],[(
切换到哪些用户或用户组
)] [
是否需要密码验证
] [
命令
3]......
注解:
凡是
[ ]
中的内容,是可以省略;命令与命令之间用
,号分隔;可以使用
NOPASSWD参数,就不要在运行命令时提示密码输入;
举例:
jekay ALL=(root) /bin/chown,/bin/chmod 执行时会提示输入jekay的密码
jekay ALL=(root)
NOPASSWD:
/bin/chown,/bin/chmod 就不需要密码
jekay ALL=(root) NOPASSWD: /bin/more
切换到jekay用户下使用more /etc/shadow就可以了,不会提示输入密码
User_Alias SYSUSER=jekay
SYSUSER ALL=(root) /sbin/fdisk
使用用户别名来完成;
sudo [
参数选项
]
命令
-l
列出用户在主机上可用的和被禁止的命令;一般配置好
/etc/sudoers
后,要用这个命令来查看和测试是不是配置正确的;
-v
验证用户的时间戳;如果用户运行
sudo
后,输入用户的密码后,在短时间内可以不用输入口令来直接进行
sudo
操作;用
-v
可以跟踪最新的时间戳;
-u
指定以以某个用户执行特定操作;
-k
删除时间戳,下一个
sudo
命令要求用求提供密码;
3
、添加用户规则文件
/etc/login.defs
和
/etc/default/useradd
/etc/login.defs
配置文件
/etc/login.defs
文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,
UID
和
GID
的范围;用户的期限等等,这个文件是可以通过
root
来定义的;
/etc/logins.defs
文件内容;
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999 注:用户的密码不过期最多的天数;
PASS_MIN_DAYS 0 注:密码修改之间最小的天数;
PASS_MIN_LEN 5 注:密码最小长度;
PASS_WARN_AGE 7 注:
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的;
UID_MAX 60000 注:最大UID为60000;
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 注:GID 是从500开始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes 注:是否创用户家目录,要求创建;
/etc/default/useradd
文件
通过
useradd
添加用户时的规则文件;
# useradd defaults file
GROUP=100
HOME=/home 注:把用户的家目录建在/home中;
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用;
EXPIRE= 注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash 注:所用SHELL的类型;
SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
二、用户相关工具命令;
1
、添加用户工具有
useradd
和
adduser ,这两个工具所达到的目的都是一样的;
2
、通过修改用户配置文件
/etc/passwd
和
/etc/groups的办法来实现;
3
、还有图形下的工具;
1
、
useradd 工具
Useradd
添加用户时,先读取
/etc/login.defs
和
/etc/default/useradd
中所定义的规则添加用户;并向
/etc/passwd
和
/etc/groups
文件添加用户和用户组记录;当然
/etc/passwd
和
/etc/groups
的加密文件也同步生成记录;同时发生的还有系统会自动在
/etc/add/default
中所约定的目录中建用户的主目录,并复制
/etc/skel中的文件(包括隐藏文件)到新用户的主目录中;
useradd 的语法:
(1)
对
/etc/default/useradd进行修改,设置添加的新用户的默认设置;
useradd -D [-g group] [-b base] [-s shell]
[-f inactive] [-e expire ]
-D
选项出现时,显示/etc/default/useradd配置文件中设置的useradd的设置;
-b
default_home 注:定义用户所属目录的前一个目录。用户名称会附加在default_home后面用来建立新用户的目录。当然使用-d后则此选项无效。
-e
default_expire_date 注:用户帐号停止日期。
-f
default_inactive 注:帐号过期几日后停权。
-g
default_group 注:新帐号起始用户组名或ID。用户组名须为现有存在的名称。用户组ID也须为现有存在的用户组。
-s
default_shell 注:用户登入后使用的shell名称。往后新加入的帐号都将使用此shell.
如不指定任何参数,useradd显示目前预设的值。
(2)useradd 添加用户;
useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] name
useradd 可使用的选项为
-c
comment 注:新帐号 password 档的说明栏 。
-d
home_dir 注:新帐号每次登入时所使用的home_dir。预设值为default_home内login名称,并当成登入时目录名称。
-e
expire_date 注:帐号终止日期。日期的指定格式为MM/DD/YY。
-f
inactive_days 注:帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1
-g
initial_group 注:group名称或以数字来做为用户登入起始用户组(group)。用户组名须为现有存在的名称。用户组数字也须为现有存在的用户组。预设的用户组数字为1。
-G
group,[...]
注:定义此用户为此一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。定义值为用户的起始用户组。。
-m
注:用户目录如不存在则自动建立。如使用-k选项skeleton_dir内的档案将复制至用户目录下。然而在/etc/skel目录下的档案也会复制过去取代。任何在skeleton_dir or /etc/skel的目录也相同会在用户目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。
-M
不建立用户目录,即使/etc/login.defs系统档设定要建立用户目录。
-n
预设值用户用户组与用户名称会相同。此选项将取消此预设值。
-r
此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立用户目录,也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有用户目录须额外指定-m参数来建立系统帐号。
-s
shell 注:用户登入后使用的shell名称。预设为不填写,这样系统会帮你指定预设的登入shell。
-u
uid uid用户的ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为以/etc/login.defs中的UID_MIN的值为准,0到UID_MIN的值之间,为系统保留的UID ;
2
、
userdel 用法;
userdel 的语法格式:
userdel [-r] 名称
userdel
很简单,只有一个参数可选
-r
;如果加参数
-r
,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;
userdel
参数
用户名
警告:
请不要轻易用
-r
参数;他会删除用户的同时删除用户所有的文件和目录;如果用户目录下有重要的文件,在删除前请备份;
Linux用户管理四
3
、
usermod 用户修改工具(极其强大)
usermod
不仅能改用户的
SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。
usermod [-u uid [-o]] [-g group] [-G group,...]
[-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
[-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名
-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设定。
警告:
usermod
最好不要用它来改用户的密码,因为他在
/etc/shadow
中显示的是明口令;修改用户的口令最好用
passwd ;
4
、添加用户组命令
groupadd ;
语法格式:
groupadd [-g gid [-o]] [-r] [-f] 组名
-g
后接GID值,除非使用-o参数不然该值必须是唯一,不可相同,数值不可为负,预设值以/etc/login.defs为准;
-r
此参数是用来建立系统帐号的GID会比定义在系统档文件上/etc/login.defs 的GID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会纪录在/etc/login.defs.的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号,它会自动帮你选定一个小于的GID_MIN的值,不需要再加上-g参数。
-f
This is force flag.新增一个已经存在的用户组帐号,系统会出现错误讯息然后结束groupadd。
5
、
groupdel的用法;
groupdel 是用来删除用户组的;
语法格式:
groupdel 用户组
6
、
passwd命令;
我们已经学会如何添加用户了,所以我们还要学习设置或修改用户的密码;
passwd
命令的用法也很多,我们只选如下的几个参数加以说明;想了解更多,请参考
man passwd
或
passwd --help ;
passwd [OPTION...]
passwd
作为普通用户和超级权限用户都可以运行,但作为普通用户只能更改自己的用户密码,但前提是没有被
root
用户锁定;如果
root
用户运行
passwd ,可以设置或修改任何用户的密码;
passwd
命令后面不接任何参数或用户名,则表示修改当前用户的密码;
[root@localhost]# passwd 注:没有加任何用户,我是用root用户来执行的passwd 表示修改root用户的密码;下面也有提示;
Changing password for user root.
New UNIX password: 注:请输入新密码;
Retype new UNIX password: 注:验证新密码;
passwd: all authentication tokens updated successfully. 注:修改root密码成功;
如果新建用户后,要为新用户创建密码,则用
passwd
用户名
,注意要以
root用户的权限来创建;
passwd 几个比较重要的参数
;
[root@localhost]# passwd --help
Usage: passwd [OPTION...] <accountName>
-k,
--keep-tokens keep non-expired authentication tokens
注:保留即将过期的用户在期满后能仍能使用;
-d,
--delete delete the password for the named account (root only)
注:删除用户密码,仅能以root权限操作;
-l,
--lock lock the named account (root only)
注:锁住用户无权更改其密码,仅能通过root权限操作;
-u,
--unlock unlock the named account (root only)
注:解除锁定;
-f,
--force force operation
注:强制操作;仅root权限才能操作;
-x,
--maximum=DAYS maximum password lifetime (root only)
注:两次密码修正的最大天数,后面接数字;仅能root权限操作;
-n,
--minimum=DAYS minimum password lifetime (root only)
注:两次密码修改的最小天数,后面接数字,仅能root权限操作;
-w,
--warning=DAYS number of days warning users receives before
注:在距多少天提醒用户修改密码;仅能root权限操作;
password expiration (root only)
-i,
--inactive=DAYS number of days after password expiration when an
注:在密码过期后多少天,用户被禁掉,仅能以root操作;
account becomes disabled (root only)
-S,
--status report password status on the named account (root only)
注:查询用户的密码状态,仅能root用户操作;
--stdin read new tokens from stdin (root only)
注意:
当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意;
7
、
chage 修改用户密码有效期限的命令;
chage 用语法格式:
chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-I 失效日] [-E 过期日] [-d 最后日] 用户
8
、
chfn 修改用户信息工具;
chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下:
chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]
[root@localhost]# chfn linux 注:更改用户linux的信息;
Changing finger information for linux.
Name []: jekay Linux 注:用户全名jekay Linux ,随便写一个就行;
Office []: benet
Office Phone []: 44444444
Home Phone []: 88888888
Finger information changed. 注:更改完成;
9
、
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]# chsh -s /bin/ksh linux
注:更改linux所用的shell为ksh ;
Changing shell for linux.
Shell changed. 注:更改完成;
Linux用户管理五
10
、
gpasswd 设置一个组的群组密码
格式:
gpasswd
参数
用户名
组名
-a----将一个用户加入到一个组中
-d----将一个用户从一个组中删除掉
-r----取消一个用户组的群组密码
-g----修改一个用户组的gid号
-n----修改一个用户组的组名 groupmod -n 新组名 老组名
finger 参数 用户名
id 选项 用户名
除了直接查看用户(
User
)和用户组(
Group
)配置文件的办法除外,我们还有
id
和
finger
工具可用,我们一样通过命令行的操作,来完成对用户的查询;
id
和
finger
,是两个各有测重的工具,
id
工具更测重用户、用户所归属的用户组、
UID
和
GID
的查看;
finger
侧重用户资讯的查询,比如用户名(登录名)、电话、家目录、登录
SHELL
类型、真实姓名、空闲时间等等;
id
命令用法:
[root@localhost /]# id jekay
uid=500(jekay) gid=500(jekay) groups=500(jekay)
finger
的用法:
finger [参数选项] [用户名]
-l
采用长格式(默认),显示由-s选项所包含的所有信息,以及主目录、办公地址、办公电话、登录SHELL、邮件状态、.plan、.project和.forward;
-m
禁止对用户真实名字进行匹配;
-p
把.plan和.project文件中的内容省略;
-s
显示短格式,用户名(也被称为登录名Login)、真实名字(NAME)、在哪个终端登录(Tty)、写状态、空闲时间(Idle)、登录时间(Login Time)、办公地点、办公电话等;
[root@localhost /]# finger jekay
Login: jekay Name: (null)
Directory: /home/jekay Shell: /bin/bash
Never logged in.
No mail.
No Plan.
查看用户信息还可以通过配置文件去查询用户和组的信息;
w
、
who
和
users
工具,是查询已登录当前主机的用户;另外
finger -s
也同样能查询;侧重点不一样;
[root@localhost /]# w
22:43:44 up 3:03, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.104 7:41pm 0.00s 1.93s 0.35s w
[root@localhost /]# who
root pts/0 Mar 27 19:41 (192.168.1.104)
[root@localhost /]# users
rootbeinan pts/4 :0.0 12:06 0.00s 0.21s 0.00s w
w
命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对
who
命令来说更加详细和科学,可以认为
w
命令就是
who
命令的一个增强版。
w
命令的显示项目按以下顺序排列:
-----
当前时间,系统启动到现在的时间,登录用户的数目,系统在最近
1
秒、
5
秒和
15
秒的平均负载。
然后是每个用户的各项数据,项目显示顺序如下:
-----
登录帐号、终端名称、远程主机名、登录时间、空闲时间、
JCPU
、
PCPU
、当前正在运行进程的命令行。
16
、
pwcov
注:同步用户从
/etc/passwd
到
/etc/shadow
pwck
注:
pwck
是校验用户配置文件
/etc/passwd
和
/etc/shadow
文件内容是否合法或完整;
pwunconv
注:是
pwcov
的立逆向操作,是从
/etc/shadow
和
/etc/passwd
创建
/etc/passwd
,然后会删除
/etc/shadow
文件;
visudo
来编辑
/etc/sudoers
来实现;
visodo
是编辑
/etc/sudoers
的命令;也可以不用这个命令,直接用
vi
来编辑
/etc/sudoers
的效果是一样的;
通过修改用户和用户组配置文件的办法来添加用户和组
流程:
1
)修改
/etc/passwd
,添加用户记录;
jekay:x:508:508::/home/jekay:/bin/bash
然后执行
pwconv
,让
/etc/passwd
和
/etc/shadow
同步,您可以查看
/etc/shadow
的内容是否同步;
[root@localhost]# pwconv
2
)修改
/etc/group
,添加私有用户组
jekay:x:508:
其次,是运行
grpconv
来同步
/etc/group
和
/etc/gshadow
内容,您可以通过查看
/etc/gshadow
的内容变化确认是不是添加组成功了;
[root@localhost]# grpconv
3
)创建用户的主目录,并把用户启动文件也复制过去;
在
/home
下创建
jekay
用户的主目录,名称与用户名相同,另外我们还需要把
/etc/skel
目录下的
.*
隐藏文件复制过去;
[root@localhost]# cp -R /etc/skel/ /home/jekay
[root@localhost]# ls -la /home/jekay
4
)改变新增用户家目录的属主和权限;
我们发现新增用户的主目录的属主目前是
root
,并且主目录下的隐藏文件也是
root
权限;
[root@localhost]# chown -R jekay.jekay /home/jekay
[root@localhost]# chmod 700 /home/jekay/
5
)设置新增用户的密码;
passwd
的用法:
passwd 用户名
6
)测试添增用户是否成功;