本文共 4825 字,大约阅读时间需要 16 分钟。
Linux系统是一个多用户、多任务的操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,并授予相应的权限给到这个账号后才能进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和密码。用户只有在提供了正确的用户名和密码之后,才能够进入系统和自己的主目录。(这就类似于我们向银行申请个人账号,银行会为你创建一个个人账号和密码,并只授予你部分业务有相应的权限,如存钱、转帐,银行可以通过后台跟踪你的账号信息,用户享有相应的安全性保护)。
用户和组的UID的定义说明
Linux用户:
管理员:UID为“0”;
普通用户: UID 为“1-65535”
Linux组:
系统组:CentOS 6的UID为“1-499”,CentOS 7的UID为“1-999”
普通组:CentOS 6的UID为“500+”,CentOS 7的UID为“1000+”
简单的理解为用户名和它对应的UID、用户组和组UID他们都是唯一,比如我们要查看一下Root用户的用户属于,可以通过直接查询用户名、或者是UID,如下:
1 2 3 4 | [root@localhost ~] # id root uid=0(root) gid=0(root) groups =0(root) [root@localhost ~] # id 0 uid=0(root) gid=0(root) groups =0(root) |
Linux用户和组相关的配置文件
/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);
1 2 | [root@localhost ~] # cat /etc/passwd root:x:0:0:root: /root : /bin/bash |
意义:用户名:密码:UID:GID:附加组:主目录:默认shell
/etc/group:组及其属性信息;
1 2 | [root@localhost ~] # cat /etc/group gentoo:x:2201:mandriva |
意义:组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)
/etc/shadow:用户密码及其相关属性;
1 2 | [root@localhost ~] # cat /etc/shadow root:$1$6usIQoRH$544LSxLOucbxu6ONNAHea.:16787:0:99999:7::: |
意义:用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段
/etc/gshadow:组密码及其相关属性;
用户和组相关的管理命令
用户创建命令:useradd
1 2 | 语法格式: useradd [options] LOGIN #useradd 选项 用户名 |
选项包含如下:
1 2 3 4 5 6 7 | -u UID: 用户号(身份标识),[UID_MIN,UID_MAX],定义在 /etc/login .defs -g GID:指明用户所属基本组,可为组名,也可以GID; -c "COMMENT" :用户的注释信息; -d: 以指定的路径为家目录(主目录),如果此目录不存在,则同时使用-m选项,可以创建目录; -s SHELL: 指明用户的默认登录shell程序,可用列表在 /etc/shells 文件中; -G GROUP1: 为用户指明附加组;组必须事先存在; -r: 创建系统用户: |
组创建命令:groupadd
1 2 | 语法格式: groupadd [OPTION]... group_name #groupadd 选项 用户组 |
选项包含如下:
1 2 | -g GID: 指明GID号;[GID_MIN,GID_MAX] -r: 创建系统用户:(CentOS 6 : ID<500; CentOS 7 : ID<10) |
例如:
1、增添一个新组名为group1
1 | #groudadd group1 |
2、增添一个新组名为group2,用户的UID为120
1 | #groupadd –g 120 group2 |
组删除命令:groupdel
groupdel [OPTION]... group_name #group 选项 组名
1 | 例如:[root@localhost ~] # groupdel Linux |
例如:创建用户Jim,登录shell为/bin/csh,附加组为Admin,注释信息为"Gentoo Distribution",家目录为/usr/jim
1 2 | [root@localhost ~] # groupadd Admin [root@localhost ~] # useradd -s /bin/csh -GAdmin -c "Gentoo Distribution" -d /usr/jim -m jim |
删除用户命令: userdel
1 | 命令语法:userdel [OPTION]... login #userdel 选项 用户名 |
-r:删除用户家目录;
1 | 例如:[root@localhost ~] # userdel -r jim #删除用户jim以及家目录 |
切换用户或以其他用户身份执行命令:su
1 | 语法格式: su [options...] [-] [user [args...]] |
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@localhost ~] # su jimjimlv #切换至用户jimjimlv [jimjimlv@localhost root]$ ls #已切换至用户jimjimlv,尝试运行ls命令 ls : cannot open directory .: Permissiondenied #此时报错,原因是当前目录仍在root下,而用户jimjimlv是没有权限访问root用户目录下的文件, [jimjimlv@localhost root]$ su – root #切换为root用户 Password: Last login: Tue Jan 5 19:22:53 PST 2016 on pts /0 [root@localhost~] # su – jimjimlv #切换至用户jimjimlv,这次我们使用“-”选项 Last login: Tue Jan 5 19:23:04 PST 2016 on pts /0 [jimjimlv@localhost ~]$ ls #成功切换至用户jimjimlv,当前目录也为用户jimjimlv的家目录, Desktop Documents Downloads game.sh Music Pictures playground Public Templates Videos [jimjimlv@localhost ~]$ su - root Password: Last login: Tue Jan 5 19:23:37 PST 2016 on pts /0 [root@localhost ~] # su jimjimlv [jimjimlv@localhost root]$ su - root -c ls #以root账号执行ls命令 Password: anaconda-ks.cfg config.sh passWD Passwd |
总结:
su UserName:非登录式切换,即不会读取目标用户的配置文件;
su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;
换个身份执行命令:su [-] UserName -c 'COMMAND'
备注:root su至其他用户无须密码;非root用户切换时需要密码;
用户属性修改:usermod
语法格式:usermod [OPTION] login #usermod 选项 用户名
1 2 3 4 5 6 7 8 9 10 11 | -u UID: 新UID -g GID: 新基本组 -G:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append; -s SHELL:新的默认SHELL; -c 'COMMENT' :新的注释信息; -d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项; -l login_name: 新的名字; -L: lock指定用户 -U: unlock指定用户 -e YYYY-MM-DD: 指明用户账号过期日期; -f INACTIVE: 设定非活动期限 |
例如:修改用户jimjimlv的shell 为/bin/zch,家目录为/home/jimjimlv, 注释信息为“Revies Deitribution”,用户组为“Linux”
1 | [root@localhost home] # usermod -s /bin/zch-d /home/jimjimlv -m -c "Revies Distribution" -G Linux jimjimlv |
用户密码管理:passwd
用户管理的一项重要内容是用户密码的管理。用户账号刚创建时没有密码,但是被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。
指定和修改用户密码的Shell命令是passwd。超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。命令的格式为:
1 | Passwd [OPTIONS] UserName passwd 选项 用户名 |
1 2 3 4 5 6 7 8 | -l: 锁定指定用户,即禁用账号 -u: 解锁指定用户 -d:使账号无密码 -n mindays: 指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天开始警告 -i inactivedays:非活动期限; -f: 强迫用户下次登录时修改密码 |
密码的复杂性策略:
1、使用数字、大写字母、小写字母及特殊字符中至少3种;
2、足够长;
3、使用随机密码;
4、定期更换;不要使用最近曾经使用过的密码;
例如:
修改用户Rain的登录密码
1 2 3 4 5 | [root@localhost ~] # passwd Rain Changing password for user Rain. New password: Retype new password: passwd : all authentication tokens updatedsuccessfully. |
只允许管理员修改密码
1 2 3 4 | [Rain@localhost ~]$ passwd jimjimlv passwd : Only root can specify a user name. [Rain@localhost ~]$ passwd Rain passwd : Only root can specify a user name. |
使用选项“-l”锁定用户账号,使其不能登录
1 2 3 | [root@localhost ~] # passwd -l Rain Locking password for user Rain. passwd : Success |