RHEL7--第五章

用户身份与文件权限

  • 用户身份与能力

用户的类别

管理员UID:0  root

系统用户UID:

1~999  RHEL 7

1~499  RHEL 5,6

系统为了避免因某个程序出现漏洞而被黑客提权至服务器,默认服务程序会有独立的系统用户复制运行,有效控制被破坏范围;

普通用户UID:

1000~无限制  RHEL 7

500~65535  RHEL 5,6

是由管理员创建的用于日常工作的用户;

用户组的类别

管理员组;

普通组:

系统组;

一般组;

组的类别:

基本组:创建用户时,如果没有特别为其指定所属的组,系统会自动为其创建一个与用户同名的组;基本组只有用户一人;

附加组:A用户被纳入B用户组,则这个B用户组就是A用户的附加组;

 

1:useradd  创建用户

-d:指定用户家目录,默认为/home/username;

-e:账户的到期时间,时间格式:YYYY-MM-DD;

-u:指定该用户的默认UID;

# useradd -u 1006 user1

-g:可跟组名或GID,指定一个初始的用户基本组(组必须已存在);

# useradd -g group1 user2

# useradd -g 1007 user2

-G:指定一个或多个附加组(组必须已存在);

# useradd -G group2 user1  给user1 添加附加组 group2;

-N:不创建与用户同名的基本组;

-s:指定用户的默认shell;

当前系统支持的所有shell版本:etc/shells;

# useradd -s /bin/tcsh user3

/sbin/nologin:是终端解释器的一员,与bash解释器完全不同,一旦用户的解释器被设置为nologin,代表该用户不能登录系统;

# useradd -s /sbin/nologin user4

 

2:usermod  修改用户属性  

格式:usermod [选项] 用户名;

-c:备注用户信息;

-d:修改家目录,之前数据不迁移;

-d -m:参数m与参数d连用,可重新指定用户的家目录并自动把旧目录数据迁移过去;不懂!!!

-e:账户的到期时间,格式:YYYY-MM-DD;

-g:修改用户GID;

-G:变更所属 附加组,覆盖之前的附加组

-a -G GID:添加附加组,不使用 -a 选项,会覆盖此前的附加组;

-L:锁定用户禁止其登陆系统;

-U:解锁用户,允许其登陆系统;

-s:变更默认shell;

-u:修改用户UID;

 

3:groupadd  创建用户组  

格式:groupadd [选项] 组名;

把几个用户加入到同一组,可以针对一类用户统一安排权限;

-g:指定GID号;

-r:添加系统组;

 

4:passwd  修改用户密码,过期时间,认证信息等;

root用户修改密码,无须验证旧密码;

-l:锁定用户,禁止其修改密码;

-u:解锁用户,运行其修改密码;

--stdin:允许通过标准输入修改用户密码;

-d:使该用户用空密码登录系统;

-e:强制用户在下次登录时修改密码;

-S:显示用户的密码是否锁定,以及密码锁采用的加密算法名称;

5:userdel  删除用户;

-f:强制删除用户;

-r:同时删除用户及家目录;

 

  •  文件权限与归属

常见文件类型字符:

-:普通文件;

d:目录文件;

l:连接文件;

b:块设备文件;

c:字符设备文件

p:管道文件;

s:套字节文件;

文件权限:

r:可读,读取文件内容;

w:可写,编辑,新增,修改,删除文件的实际内容;

x:可执行,生成可执行的脚本程序;

目录权限:

r:读,能够读取目录内的文件列表;

w:写,能够在目录内新增,删除,重命名文件;

x:执行,能够进入该目录中,即 cd 命令生效;

 

chmod  修改文件权限

-R:递归修改权限;

# chmod  770  /tmp/test  修改目录test权限为770,test目录下的权限不变;

# chmod  -R  770 /tmp/test  修改目录test权限为770,包括test目录下的所有文件权限;

MODE:修改一类用户的所有权限;

u=rw

g=r

o=rwx

# chmod  u=rwx  /tmp/test  修改test的所有者权限为 rwx;

MODE:修改一类用户的某位或某些权限;

u+,u-,g+,g-,o+,o-

# chmod  u-w  /tmp/test  取消test的所有者的 w 权限;

 

chown  修改文件的属主;仅root可用;

chown [OPTION]... [OWNER][:[GROUP]] FILE...

# chown  a1  b.txt  修改 b文件的属主为 a1 用户;

# chown  a1:a1  b.txt  修改 b文件的属主及属组为 a1;

# chown  :a1  b.txt  修改 b文件的属组为 a1;

chgrp  修改文件的属组;

 

umask  文件或目录创建时的遮罩码;

查看 umask:

root:显示4位,如0022,只看后三位,即:666-022=644;

普通用户:只显示1位,如2,666-002=664;

文件:666-umask

创建文件时默认权限为666-umask,得到的额结果就是文件的权限;

Note:只针对文件:如果某类用户的权限减得的结果中存在x权限,则将其权限+1

目录:777-umask

创建目录时默认权限为777减去umask,得到的结果就是目录权限;

# umask  查看umask;

# umask  #   设定umask

# umask  3

 

  • 文件的特殊权限

SUID,SGID,SBIT 可以与一般权限同时使用,弥补一般权限无法实现的功能;

SUID

1:可以让二进制程序(如,cat 等)的执行者临时拥有程序的属主权限,仅对拥有执行权限的二进制程序有效;

2:进程访问文件时的权限,取决于进程的发起者;

a):进程的发起者,同文件的属主,则应用文件属主权限;

b):进程的发起者,属于文件的属组,则应用文件属组权限;

c):进程的发起者,属于文件的其他,则应用文件其他权限;

3:任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限;

4:启动为进程后,其进程的属主为原程序文件的属主;

4:设置在属主上,即user;

 

权限设定:

chmod u+s 可执行程序  添加SUID权限;

#chmod u+s /bin/cat  使普通用户可以用cat查看/etc/shadow文件内容;

chmod u-s 可执行程序  删除SUID权限;

SGID

实现的两大功能:

1:让执行者临时拥有属组的权限,对拥有执行权限的二进制程序进行设置;

2:在某个目录中创建的文件自动继承该目录的用户组,只可以对目录进行设置;

3:设置在属组上,即group;

例1:

设置共享目录,让共享目录中所有用户都能读取目录中内容,首先用户需加入这个共享用户组,即用户的附加组。创建完共享目录后,设置SGID权限即可实现,即任何用户在此共享目录中创建的文件,属组都是这个共享目录的属组;

SBIT(Sticky Bit)粘滞位,保护位

作用:设置共享目录,用户之间无法删除编辑;即便共享目录权限全开;

1:SBIT确保用户只能删除自己的文件,其他用户的无法删除;

2:文件能否被删除取决于所在目录是否有写入权限,开启SBIT权限后,即便权限全开也无法删除他人账号的文件。

3:目录的other权限,有x执行权限则写出 t,没有x权限则写出 T;

4:设置在其他用户上,即other;

权限设定:

# chmod o+t  DIR

系统的 tmp 目录,默认就是SBIT权限开启状态;

 

解析权限的设定:

SUID  SGID  SBIT(Sticky)

4    2    1    

当以数字显示设置权限的时候,特殊权限在一般权限的前面,如:4777,其中4即为特殊权限SUID;

例:

# chmod  4777  a.txt  设置 a.txt文件拥有SUID权限及一般权限为777;

# chmod  6666  a.txt  设置 a.txt文件拥有SUID,SGID权限及一般权限为666;

  

  • 文件的隐藏属性

除了一般权限和特殊权限,还有一种隐藏权限,默认情况下无法直接被用户发现。

1:chattr

设置文件的隐藏权限,格式:chattr [+_参数] 文件;

i:无法对文件进行修改,若对目录设置该参数,则仅能修改其中的子文件内容不能新建或删除文件;

a:仅允许补充(追加)内容,无法覆盖/删除内容;Append Only;

S:文件内容在变更后立即同步到硬盘(sync);

s:彻底从硬盘中删除,不可恢复(用0填充源文件所在硬盘区域)

A:不再修改这个文件或目录的最后访问时间(atime);

b:不再修改文件或目录的存取时间;

D:检查压缩文件中的错误;

d:使用dump命令备份时忽略本文件/目录;

c:默认将文件或目录进行压缩;

u:当删除该文件后依然保留其在硬盘中的数据,方便日后恢复;

t:让文件系统支持尾部合并(tail-merging)

x:可以直接访问压缩文件中的内容;

例:

# chattr +a  test.txt

2:lsattr

显示文件的隐藏权限

# lsattr  test.txt 

  •  文件访问控制列表

对某个指定的用户进行单独的权限控制,需要用到文件的访问控制列表 ACL;

基于普通文件或目录设置ACL就是针对指定的用户或用户组设置文件或目录的操作权限;

1:针对某个目录设置ACL,则目录中的文件会继承其ACL;

2:针对文件设置ACL,则文件不再继承其所在目录的ACL;

1:setfacl

用于管理设置文件或目录的ACL规则,格式:setfacl [参数] 文件名称;

针对单一用户或用户组,单一文件或目录进行读写执行权限的控制;

-R:  针对目录使用递归参数;

-m:   更改文件或目录的规则;

-b:  删除所有的ACL;

-x:  删除指定用户的ACL;

例1:

# setfacl  -Rm u:user1:rwx /tmp/test

# setfacl  -x  u:user1  /tmp/test

# setfacl  -b  /tmp/test

解析:

1:R必须在m前面;

2:u 表示用户,g 表示用户组;

3:user1 表示指定的用户名;

4:rwx 表示权限,r-x等;

5:/tmp/test 表示添加ACL规则的目录;

备注:

在使用 ls 查看文件时,权限的最后一个 . 变成了 + ,意味者文件设置了ACL;

2:getfacl

显示文件上设置的ACL信息;格式:getfacl 文件名称;

  • su命令与sudo服务

1:su

解决切换用户身份的需求,当前用户不需退出,直接切换到其他用户;

- :表示完全切换新用户,包括环境变量也变更为新用户信息;

root切换到普通用户无需密码验证;反之需要密码验证;

例:

# su - 用户名

2:sudo

用于给普通用户提供额外的权限来完成root才能完成的任务;格式:sudo 参数 命令名称;

参数:

-h:列出帮助信息;

-l: 列出当前用户可执行的命令;

-u 用户名或UID:以指定的用户身份执行命令;

-k:清空密码的有效时间,下次执行sudo时需要再次进行密码验证;

-b:在后台执行指定的命令;

-p:更改询问密码的提示语;

功能:

限制用户执行指定的命令;

记录用户执行的每一条命令;

配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;

验证密码的后5分钟内(默认值)无需再让用户再次验证密码;

配置方法:

只有root才能进行visudo命令编辑sudo服务的配置文件;

1:# vi  /etc/sudoers  或直接使用  # visudo  命令

参照98行进行添加新的用户及权限;以外各字段的意思:

root:  谁可以使用;

ALL:  允许使用的主机;

(ALL):以谁的身份;

ALL:  可执行命令的列表;

例1:

a1  ALL=(ALL)  ALL

表示 a1 在任何主机 以任何用户的身份,执行任何的命令;

2:配置完 /etc/sudoers 后;

# ls  /root

提示:没有权限访问root目录;

# sudo  ls  /root

成功显示root目录下的文件信息;

例2:

a2用户指定可执行的命令;

a2  ALL=(ALL)  /usr/bin/cat

a3用户执行sudo时不需要密码验证;

a3  ALL=(ALL)  NOPASSWD: ALL

例3:

[a1@host~]# sudo  -u  a2  cat  /etc/passwd

当前用户a1指定以a2的身份运行 cat /etc/passwd;

 

3:whereis

查找命令的绝对路径及搜索程序名,二进制文件;

 

 

 

 

 

 

 

 

 

posted on 2019-03-18 21:00  风中的疯子  阅读(245)  评论(0)    收藏  举报

导航