Linux用户权限管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户权限管理相关的知识,希望对你有一定的参考价值。
- 用户管理基础概念:
- 用户管理命令使用
- 权限管理
- 命令使用
-
用户管理基础概念:
用户类别:管理员、普通用户(系统用户、登录用户)
组类别:管理员组、普通用户组(系统用户组、登录用户组)
组的类别还可以分为:1.用户的基本组、用户的附加组 2.私有组:组名同用户名,且只包含一个用户; 公共组:组内包含了多个用户;
- 系统判断用户的表示:userID->UID,使用16位二进制数字表示
管理员:0
普通用户:1~65535
-系统用户:1-499(centos6),1-999(centos7)
-登录用户:>=500 (centos6),>=1000(centos7)
- 系统判断用户的表示:userID->UID,使用16位二进制数字表示
系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统,所获得权限也比较小,比较安全的做法
-
-
-
组的标识:
管理员组: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附加组
[[email protected] tmp]# usermod -aG centos nginx
[[email protected] 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的权限;
如图"第二个色标"的为权限为,"."位有特殊权限,有时为“+”号;[[email protected] tmp]# ll passwd -rw-r--r--. 1 root root 1173 Dec 28 12:15 passwd [[email protected] tmp]# setfacl -m u:user1:rwx passwd [[email protected] tmp]# ll passwd -rw-rwxr--+ 1 root root 1173 Dec 28 12:15 passwd [[email protected] 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...
以上是关于Linux用户权限管理的主要内容,如果未能解决你的问题,请参考以下文章