一、首先我们来了解下用户管理和权限管理的机制
A:认证机制
identity(username/password) 用户名/密码
A:permission 权限
mode 模式
ownership 所有权
二、Linux下的用户和组的介绍
用户:USERNAME/password
用户的UID(user identity)从:0-65535
用户分为:管理员、普通用户>系统用户、登录用户。
管理员UID为:0
普通用户UID为:1-60000
组:GROUPNAME/GID
管理员组:0
普通组:
1-499, 1-999
500+, 1000+
用户的基本组:
用户的私有组;
用户的附加组
三、Linux用户和组的相关的配置文件:
/etc/passwd:用户名、UID、基本组等信息
/etc/group:组名、GID、组内包含的用户;
/etc/shadow:用户密码及相关属性;
/etc/gshadow:组的密码及相关属性;
四、用户和组管理的相关命令
useradd、usermod、passwd、userdel
groupadd、groupmod、gpasswd、groupdel
chage, chsh, chfn
id, w, who, whoami
su
首先来看useradd:创建用户
useradd [options] LOGIN
useradd -D [options]
-r: 创建系统用户
-u UID: 指定UID;
-g GID: 指定用户所属基本组,此组必须事先存在
-c 'COMMENT':
-d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先存在,否则,其用户相关配置文件将被复制;/etc/skel
-s SHELL:设定用户的默认shell;
cat /etc/shells
-G GID,...:指定所属的附加组;
-M: 不给用户创建家目录;
usermod:用户属性修改
usermod [OPTION]... LOGIN
-u UID
-g GID
-G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项;
-s SHELL
-c 'COMMENT'
-d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录;
-l LOGIN:
-L:lock user
-U: unlock user
passwd:给用户添加密码
passwd [OPTION] [UserName]
-l: lock user
-u: unlock user
-n mindays: 最短使用期限;
-x maxdays:默认为99999天;
-w warndays:
-i inactivedays:
--stdin:从标准输出接收用户密码;
echo 'centos' | passwd --stdin centos
userdel:删除用户
userdel [-r] USERNAME
-r:删除用户的同时删除其家目录;
我们来做个举例:
[root@localhost ~]# useradd -u 100 centos -r //创建centos用户为系统用户,并制定UID为100.
[root@localhost ~]# usermod -u 200 centos //修改centos用户UID为200,并查看修改是否成功
usermod: warning: /var/spool/mail/centos not owned by centos
[root@localhost ~]# id centos
uid=200(centos) gid=493(centos) groups=493(centos)
[root@localhost ~]# usermod -G sql centos //为用户添加database和sql两个附加组
[root@localhost ~]# usermod -G database -a centos //注意:如果不加-a的话原附加组将被覆盖,而达不到同时添加两个附加组的效果。
[root@localhost ~]# id centos //查看用户centos属性。
uid=200(centos) gid=493(centos) groups=493(centos),501(database),502(sql)
[root@localhost ~]# mkdir /home/database //创建home下一个目录,并将centos用户家目录更
[root@localhost ~]# usermod -d /home/database centos 换为/home/database
[root@localhost ~]# passwd -n 30 centos //为用户设置密码最短使用期限:
Adjusting aging data for user centos.
passwd: Success
[root@localhost ~]# echo 'centos' | //从标准输出接收用户密码的使用方法;
> echo 'centos' | passwd --stdin centos
Changing password for user centos.
passwd: all authentication tokens updated successfully.
ok,以上是我们useradd的基本简单的用法,下面我们继续来看组的建立与组命令的用法:
groupmod: 组属性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME
-g GID
gpasswd:设定组密码
newgrp:切换基本组为指定的组
groupdel:删除组
我们来试运行这些命令:
首先我们来创建一个组,并对这个组做属性修改、设定密码、切换组、删除组等操作:
[root@localhost ~]# groupadd schneider
[root@localhost ~]# groupmod -g 503 schneider
[root@localhost ~]# gpasswd schneider
Changing the password for group schneider
New Password: ******
Re-enter new password: ******
[root@localhost ~]# su -l base
说明下:su base 只是临时切换到用户下面,我们可以用echo $PATH查看下linux变量,会发现:
[root@localhost ~]# su base
bash-4.1$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
但是如果我们exit退出,使用su - base登录,会是这样:
[root@localhost ~]# su - base
-bash-4.1$ echo - base
- base
linux环境变量不一样,su - USERNAME是完全切换到该用户下面,请区分。
我们再来看切换组:
bash-4.1$ newgrp schneider
Password:
bash-4.1$ groups
schneider sql //我们临时添加了schneider组到base用户中,注意,newgrp不是永久性的添加用 户到组中,只是使用户临时拥有这个组的权限。
那么删除组我们就不做操作了,很简单,groupdel直接删除就好,但是要注意,如果组内有用户,那么是删除不了的,所以在做删除组操作前,我们需要查看并转移组内用户!
chage:修改用户账号及密码的属性
chage [OPTION]... LOGIN
-l:列出用户的以及密码的有效期限
-m:修改密码的最小天数
-M:修改密码的最大天数
-I:密码过期后,锁定帐号的天数
-d:指定密码最后修改的日期
-E:有效期,0表示立即过期,-1表示永不过期
-W:密码过期前,开始警告天数
我们做个简单的操作示例:
[root@localhost ~]# chage -l base //查看用户的密码信息有效天数等。
Last password change : Jan 31, 56704
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : -1
Maximum number of days between password change : -1
Number of days of warning before password expires : -1
其它命令:chfn, chsh, finger, whoami, who, w
我们可以使用chfn为用户添加用户信息:
[root@localhost ~]# chfn base
Changing finger information for base.
Name []: basee
Office []: shanghai
Office Phone []: 119
Home Phone []: 120
Finger information changed.
当添加完用户信息后,我们可通过cat /etc/passwd命令来查看用户改变的信息。
那么以上就是我们关于用户管理各命令的使用及示例,如果有什么不足的或者忽略的地方,欢迎大家指正!谢谢!