用户管理相关命令
工作中经常用到对系统上用户及文件权限的管理,本文详细介绍下用户及权限管理相关的命令
相关知识:
对计算机而言,每个使用者都是一个用户,每个用户都有一个用户ID和密码;用户登录系统分为认证(Authentication)、授权(Authorization)、审计(Audition)三步,任何一步出错用户都会登录不上系统;
在linux系统中用户分为管理用户和普通用户,普通又分为系统用户和登录用户;其中,每个用户都有一个ID号用来惟一标识此用户,此ID号也叫做UID;在linux系统中UID是由16bits的二进制数字组成的,范围为(0-65535),其中:
管理员的UID号为0
普通用户为1-65535
系统用户为1-499(CentOS5/6),1-999(CentOS7)
登录用户为500-60000(CentOS5/6),1000-60000(CentOS7)
当用户登录系统时需要输入用户名,用户输入用户名之后需要进行名称解析,将用户的用户名转换为系统的UID来惟一标识此用户,在此,系统根据名称解析库/etc/passwd进来行解析,其中,/etc/passwd中的内容由冒号分隔为七段:
account:password:UID:GID:GECOS:directory:shell
account:表示用户名
password:表示加密的密码,也可以是占位符;用户的真实密码存放于/etc/shadow中
UID:表示用户ID
GID:表示用户所属的主组的ID号
GECOS:表示注释信息
directory:表示用户的家目录路径
shell:表示用户的默认shell,登录时默认的shell程序
刚刚提到用户的真实密码存放于/etc/shadow文件中,其中,/etc/shadow文件的内容由冒号分隔为九段:
sp_namp:sp_pwdp:sp_lstchg:sp_min:sp_max:sp_warn:sp_inact:sp_expire:sp_flag
sp_name:账号名称,由于密码也需要与账号对应。因此,这个文件的第一列就是账号,必须要与/etc/passwd相同才行;
sp_pwdp:表示用户加密后的密码
sp_lstchg:最近一次修改密码的时间
sp_min:表示密码的最短使用期限(密码不可被改动的天数)
sp_max:表示密码的最长使用期限(密码需要重新更动的天数)
sp_warn:表示密码最长使用期限到期后的警告时间段,在此时间段内用户还可以正常使用密码
sp_inact:非活动时间(密码过期后的账号宽限时间),不过,如果密码过期了,那当你登录系统时,系统会强制要求你必须要重新设置密码才能登录继续使用。
sp_expire:账号失效日期,这个日期跟第三个字段一样,都是使用1970年以来的总日数设置。这个字段表示:这个账号在此字段规定的日期之后,将无法再使用。
sp_inact:保留字段
在linux系统中组分为管理员组和普通用户组,普通用户组又分为系统组和登录组,同用户ID一样,组也有ID叫做GID,GID和UID一样也是由16bits位的二进制数组成,范围为(0-65535),其中:
管理员组的ID号为0
普通用户组的ID号为1-65535
系统登录组的ID号为1-499(CentOS5/6),1-999(CentOS7)
登录用户组的ID号为500-60000(CentOS5/6),1000-60000(CentOS7)
存储组信息的名称库为/etc/group,此文件被冒号分隔为四段:
roup_name:passwd:GID:user_list
group_name:表示组名
passwd:组密码占位符,真实的密码存放于/etc/gshadow中,稍后介绍。
GID:组ID号
user_list:用户列表,表示的是以此组为附加组的用户列表。
组密码存放于/etc/gshadow中,此文件由冒号分隔为四段
group name:encrypted password:administrators:members
group name:用户组名,和/etc/group里面的组名一样
encrypted password:密码列
administrators:用户组管理员的账号
members:该用户组的所属账号
用户管理的命令详解:
useradd命令:
功能:创建用户
用法:useradd[options] LOGIN
参数:
-u:指定用户UID
-g:指定基本组ID,此组得事先存在
-G:指定用户所属的附加组,多个组之间用逗号分隔;
-c:指明注释信息
-d:指定用户家目录,通过复制/etc/skel目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
-r:表示创建的是系统用户
-m:创建用户时为用户创建家目录,默认创建用户时已经创建家目录
-M:表示创建用户时不为用户创建家目录
-D:显示创建用户时的默认配置,用户的默认配置文件为/etc/login.defs;
-e:后面接一个日期,格式为"YYYY-MM-DD",此选项可写入shadow第八个字段,即账号失效日;
-f:后面接shadow的第七个字段选项,指定密码是否会失效;
usermod命令:
功能:修改用户属性
用法:usermod[options] LOGIN
参数:
-u:修改用户的UID
-g:修改用户所属的基本组
-G:修改用户所属的附加组;原来的附加组会被覆盖,如果不想覆盖需要添加-a选项
-c:修改注释信息
-d:修改用户的家目录;用户原有的文件不会被转移至新位置,如果想转移原有的文件,需要添加-m选项;
-l:修改用户名
-s:修改用户的默认shell
-L:锁定用户账号,即在用户原来的密码字符串之前添加一个“!”,解锁即去掉叹号;
-U:解锁用户锁定
userdel命令:
功能:删除用户
用法:userdel[options] LOGIN
参数:
-r:删除用户时一并删除用户家目录,默认不删除
passwd命令:
功能:(1)修改用户自己的密码(2)修改制定用户的密码,仅root有此权限
用法:passwd/passwdUSERNAME
参数:
-l,-u:锁定和解锁用户
-d:清除用户密码
-e:date过期期限,日期
-i:days非活动期限
-n:密码的最短使用期限
-x:密码的最长使用期限
-w:警告期限
--stdin:
echo"PASSWORD" |passwd --stdin 用户名 修改用户名密码
groupadd命令
功能:添加用户组
用法:groupadd[options] groupname
参数:
-g GID:指定GID,默认是上一个组的GID+1;
-r:创建系统组,id号为1-499(CentOS6)或1-999(CentOS7)
groupmod命令:
功能:修改组信息
用法:groupmod[options] groupname
参数:
-g GID:修改GID
-n new_name:修改组名
groupdel命令:
功能:删除组
用法:groupdel组名
gpasswd命令:
功能:给组设定密码
用法:gpasswd[option] group
参数:
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
newgrp命令:
功能:临时切换用户的基本组为其它组,这时如果切换的组不是用户的附加组需要输入密码;
用法:newgrp[-] [group]
参数:
-:会模拟用户重新登录以实现重新初始化其工作环境;
chage命令:
功能:修改用户的密码过期信息
用法:chage[options] [LOGIN]
参数:
-d:修改最近一次更改密码的日期
-E:修改账号失效日
-W:修改密码过期警告时间
-m:修改密码最短保留天数
-M:修改密码多久需要进行更改的时间
-l:列出该账号的详细密码参数
-I:修改密码失效日期
id命令:
功能:显示用户的真实和有效ID
用法:id[OPTION]... [USERNAME]
参数:
-u:仅显示有效的UID;
-g:仅显示用户的基本组ID;
-G:仅显示用户所属的所有组的ID
-n:显示名字而非ID
-r:显示真实ID
su命令:switchuser
功能:
登录式切换:会通过重新读取目标用户的配置文件来重新初始化
非登录式切换:不会读取目标用户的配置文件来进行初始化
注意:管理员可无密码切换至其它任何用户;非管理员切换时必须给出目标用户的密码,否则,无法切换;
参数:
-c ‘COMMAND’仅以指定用户的身份运行此处指定的命令;
su - woniu -c ‘whoami‘ 表示以woniu用户执行whoami命令,执行完成后还是当前用户
chown命令:
功能:更改文件的属主或属组
用法:chown[OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
参数:
-R:递归修改
权限管理知识及命令
在命令ls -l的结果中,前一列为文件的类型和权限说明,如下所示:
[root@localhost/]# ls -l
total 106
dr-xr-xr-x. 2 root root 4096 Dec 11 09:43 bin
其中的d表示文件为目录,接下来的字符中,以3个为一组,且均为“rwx”的3个参数的组合。其中r代表可读、w代表可写、x代表可执行。要注意的是,这3个权限的位置不会改变,如果没有权限就会减号-代替。
第一组为文件所有者的权限,用u表示
第二组为文件用户组的权限,用g表示
第三组为其它非本用户组的权限,用o表示
进程对文件的访问权限应用模型:
首先检查进程的属主于文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
对文件而言:
r:可获取文件的数据
w:可修改文件的数据
x:可将此文件发起运行为进程
对目录而言:
r:可使用ls命令获取其下的所有文件列表
w:可修改此目录下的文件列表;即创建或删除文件
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
权限管理命令:
chmod命令:
功能:修改文件或目录的权限
用法:chmod[OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法: 直接操作一类用户的所有权限位
u=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位
u+,u-
g+,g-
o+,o-
a+,a-
chmod [OPTION]...OCTAL-MODE FILE...
chmod 755/etc/fstab
chmod[OPTION]... --reference=RFILE FILE...
chmod--reference=/var/log/message /etc/fstab 将/etc/fatab的权限修改为和/var/log/message的权限一样。
参数:
-R:表示递归修改
umask:文件的权限反向掩码,遮罩码,文件默认权限
对文件而言,默认权限是666,因为文件默认没有执行权限:而目录默认权限是777,而umask是从权限中“拿走”相应的位
所以默认创建文件时的权限为:666-umask;创建目录时的权限为777-umask
对文件而言,如果减得的结果中有执行权限,则需要将其加1;而目录不变。
例如,如果umask值为023,则创建出来的文件的权限为
666-023+1=644
umask命令:
umask:查看当前umask
umask MASK:设置umask
注意:此类设定仅对当前shell进程有效;
原文:http://zhangyoucai.blog.51cto.com/2377123/1722330