用户管理相关命令 工作中经常用到对系统上用户及文件权限的管理,本文详细介绍下用户及权限管理相关的命令 相关知识: 对计算机而言,每个使用者都是一个用户,每个用户都有一个用户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进程有效;