• 用户管理基础概念:
  • 用户管理命令使用
  • 权限管理
  • 命令使用

  • 用户管理基础概念: 用户类别:管理员、普通用户(系统用户、登录用户) 组类别:管理员组、普通用户组(系统用户组、登录用户组) 组的类别还可以分为:
1.用户的基本组、用户的附加组
2.私有组:组名同用户名,且只包含一个用户;
	公共组:组内包含了多个用户;
- 系统判断用户的表示:userID->UID,使用16位二进制数字表示
管理员:0
普通用户:1~65535
-系统用户:1-499(centos6),1-999(centos7)
-登录用户:>=500 (centos6),>=1000(centos7)	
系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统,所获得权限也比较小,比较安全的做法
      • 组的标识: 管理员组:0 普通用户组:1-65635 -系统用户组:1-499(CentOS6), 1-999(CentOS7) -登录用户组:>=500(CentOS6), >=1000(CentOS7)

      • 用户和组的信息库存放位置 1.用户的配置信息:/etc/passwd,以冒号:分割7个字段 2.组的配置信息:/etc/group

      • 用户认证信息:通过对比事先存储的,与登录时提供的信息是否一致; 密码存储:/etc/shadow 、/etc/gshadow 密码安全使用策略: 1、使用随机密码; 2、最短长度不要低于8位; 3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类; 4、定期更换

  • 用户管理命令使用 相关命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su

    • groupadd 添加组 语法: groupadd [options] group_name -g |--gid GID:指定GID号 -r | --system :创建的是系统组 -p | --password string :创建组的密码

    • groupmod:修改组的属性 语法: groupmod [options] group_name -g GID:修改GID号 -n new_group_name:修改组名

    • groupdel:删除组 语法: groupdel [options] group_name

    • useradd :创建用户 语法: useradd [options] user_name -u, --uid UID:指定UID; -g, --gid GROUP:指定基本组ID,此组得事先存在; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔; -c, --comment COMMENT:指明注释信息; -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件; -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中; -r, --system:创建系统用户; 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

    • usermod :修改用户属性 语法: usermod [options] user_name -u, --uid UID:修改用户的ID为此处指定的新UID; -g, --gid GROUP:修改用户所属的基本组; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖; -a, --append:与-G一同使用,用于为用户追加新的附加组; -c, --comment COMMENT:修改注释信息; -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置; -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录; -l, --login new_user_name:修改用户名; -s, --shell SHELL:修改用户的默认shell; 如:添加附加组:把nginx添加到centos附加组 [root@node3 tmp]# usermod -aG centos nginx [root@node3 tmp]# id nginx uid=993(nginx) gid=990(nginx) groups=990(nginx),1001(centos)

    • userdel :删除用户 语法: userdel [options] user_name -r :删除用户并删除其家目录,若不加r,再添加相同用户会报错

    • passwd :修改用户密码 语法: passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username] passwd :表示修改当前用户密码 passwd user_name :修改指定用户密码,仅root管理员才能操作,普通用户只能修改自己且后不能加用户名 -d :清除用户密码 -e DATE: 过期期限,日期; -i DAYS:非活动期限; -n DAYS:密码的最短使用期限; -x DAYS:密码的最长使用期限; -w DAYS:警告期限; --stdin : 通过标准输入方式修改 通常使用非交互式设置密码: echo “password-string” | passwd --stdin user_name

    • gpasswd :修改组密码和管理用户组 语法: gpasswd [options] group_name -a user_name :向组中添加成员 -d user_name :移除组中的成员 不添加选项表示修改组的密码,可以实现认证组成员 如:gpasswd -d centos nginx :把centos添加至nginx组:

    • newgrp :临时切换指定的组为基本组 语法: newgrp [-] [group] -: 会模拟用户重新登录以实现重新初始化

    • id :显示用户ID信息 语法: id [options] [user_name] -u: 仅显示有效的UID; -g: 仅显示用户的基本组ID; -G:仅显示用户所属的所有组的ID; -n: 显示名字而非ID;

    • su :switch user切换用户 语法: su [options] [-] [USER [arg]...] 登录式切换:会通过读取目标用户的配置文件来重新初始化 su - user_name su -l user_name 非登录式切换:不会读取目标用户的配置文件进行初始化 su user_name 注意:管理员可无密码切换至任何用户; -c 'COMMAND':仅以指定用户的身份运行此处指定的命令;


  • 权限管理 进程安全上下文:进程对文件的访问权限应用策略: 进程的属主与文件的属主是否相同;如果相同,则应用属主权限; 否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限; 否则,就只能应用other的权限; 如图"第二个色标"的为权限为,"."位有特殊权限,有时为“+”号;
[root@xt tmp]# ll passwd 
-rw-r--r--. 1 root root 1173 Dec 28 12:15 passwd
[root@xt tmp]# setfacl -m u:user1:rwx passwd
[root@xt tmp]# ll passwd 
-rw-rwxr--+ 1 root root 1173 Dec 28 12:15 passwd
[root@xt tmp]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
user:user1:rwx
group::r--
mask::rwx
other::r--

"第二个色标"的权限位:一个9位,每3位一组从左->右分别为:user(owner)权限、group权限、other权限 权限位描述:r :read 、w : write 、x :excute,可以使用八进制表示:分别对应4--2--1,三位一组加权 比如:rw-rw-r--, rwxrwxr-x, rwxr-x---, rw------, rwxr-xr-x 664 ,775,750,600, 755

- 文件和目录的权限位区别:
	文件:
			r:可获取文件的数据;
			w: 可修改文件的数据;
			x:可将此文件运行为进程;

	目录:
			r:可使用ls命令获取其下的所有文件列表;
			w: 可修改此目录下的文件列表;即创建或删除文件;
			x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;
			*能不能删除文件并不取决于文件本身权限,而是取决于上一级目录的权限
			
	一般文件目录给予:644/755权限,权限最小化管理
  • 权限管理相关命令使用
    • chmod :修改文件权限位 语法: chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE...
      chmod [OPTION]... --reference=RFILE FILE... :参照文件的权限修改 选项:-R 递归,目录修改比较有效,子目录文件也生效; 一共分为3类用户:u :属主 g: 属组 o: 其他 a: 表示所有=ugo 1.chmod [OPTION]... MODE[,MODE]... FILE... MODE的表示方法: 赋权法:直接操作一类用户的所有权限位rwx; u= ,g= ,o= ,a= 加权法:直接操作一类用户的一个权限位r,w,x加减 u-|+ ,g+|- ,o +|-, a +|- 2.chmod [OPTION]... OCTAL-MODE FILE... 8进式必须要给3位如644 600

    • chown:修改文件的属主属组 语法: chown [OPTION]... [OWNER][:[GROUP]] FILE... 使用:或者.分割都可以 chown [OPTION]... --reference=RFILE FILE... -R,--recursive递归

    • chgrp:修改属组关系 语法: chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... 注仅管理员才可以操作chown/chgrp命令


  • 文件访问控制列表:facl:file access control lists 文件的额外赋权机制:在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;可以对某一用户做[拒绝]访问 赋权用户或组: setfacl -m u:user_name:MODE file... setfacl -m g:group_name:MODE file... 撤销权限: setfacl -x u:user_name file... setfacl -x g:group_name file... setfacl -b file...撤销所有用户组的权限 查看权限: getfacl file... 设置遮罩码:用户最大获得权限 setfacl -m mask::rwx
[root@xt test]# setfacl -m u:user1:rwx a
[root@xt test]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:user1:rwx
group::r--
mask::rwx
other::r--
[root@xt test]# setfacl -m mask::rx a
[root@xt test]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:user1:rwx			#effective:r-x
group::r--
mask::r-x
other::r--