一、权限定义

1、文件权限作用的对象

owner :属主 — u
group :属组 — g
other :其他人 — o

2、文件的三种权限

 //针对文件的权限
r 可读 可以使用cat命令查看文件的类容
w 可写 可以编辑或删除文件
x 可执行 在命令行界面下当做命令提交给内核执行 //针对目录的权限
r 可读 可以使用ls命令查看目录里面包含哪些文件
w 可写 可以在此目录中创建其他的文件或删除此目录中的文件
x 可执行 可以使用cd命令切换至此目录,也可以使用ls -l查看目录内部文件的详细信息 //其他:
rw:可以使用vim编辑器打开文件并保存
rx :可以执行执行类似脚本;需要将命令提交给内核才能执行的文件 ;单独使用x可能无法达到想要的效果

3、r、w、x 权限与十进制的转换

r  — 4
w — 2
x — 1 

二、权限管理命令

1、chmod —— 修改权限命令(可以修改文件或目录)

chmod
-R(recursive):递归处理,将该目录下的所有文件及子目录一起处理 <权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
示例
chmod u+r filename
chmod g+w filename
chmod o+x filename chmod u-r filename
chmod g-w filename
chmod o-x filename chmod u=rwx filename
chmod g=rw filename
chmod o=x filename chmod a+r filename
chomd a+w filename
chomd a+x filename
chomd a-r filename
chomd a-w filename
chomd a-x filename
chomd a=rw filename
chomd a=x filename

2、chown —— 修改文件或目录的属主或属组权限的命令

chown
-R(recursive):递归处理,将指定目录下的所有文件及子目录一并处理 示例
chown username:groupname filename //修改属主和属组
chown username.groupname filename //可以使用点代替冒号 chown username filename //只修改属主
chown :groupname filename //只修改属组
chown .groupname filename chown -R username:groupname filename //递归修改文件属主和属组 

三、遮罩码

1、什么是遮罩码

在Linux系统创建一个文件或目录时,一个文件的权限是644,而一个目录的权限时755,这些看上去好像是固定的?

仔细看看就会发现:

1️⃣:该文件都没有执行的权限;且该文件除了属主以外,其他的都没有写和执行的权限;

2️⃣:而目录除了属主以外,其他=都没有写的权限。这些都是由umask遮罩码控制的,遮罩码umask的目的就隐藏一些权限。

3️⃣:umask的默认大小是0022

4️⃣:文件的最终权限是:文件:666 — umask (0022;第一个不用减,从第二个开始;666 — 0022=644)

5️⃣:目录的最权限:目录:777 — umask (0022;第一个不用减,从第二个开始;777—0022=755)

2、查看遮罩码

[root@localhost ~]# umask
0022

四、Linux安全上下文

1、进程有属主和主组;文也有属主和属组

任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限
启动为进程后,其进程的属主为发起者,属组为发起者所属的组
进程访问文件时的权限取决于进程的发起者
进程的发起者是文件的属主时,则应用文件属主权限
进程的发起者是文件的属组时,则应用文件属组权限
应用文件“其它”权限

五、特殊权限

1、SUID(4)、SGID(2)、Sticky(1)

SUID
十进制:4 chmod u+s filename
chmod u-s filename
或者
chomd 4644 filename
//如果file本身原来就有执行权限,则SUID显示为s(小写),否则显示为S(大写) SGID
十进制:2 chmod g+s filename
chomd g-s filename
或者
chmod 2644 filename
//如果file本身原来就有执行权限,则SGID显示为s(小写),否则显示为S(大写) Sticky
十进制:1 chomd o+t filename
chomd o-t filename
或者
chmod 1644 filename
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T

2、特殊权限的作用

  • SUID

    1、SUID权限仅对二进制程序(binary program)有效;
    2、执行者对于该程序需要具有x的可执行权限;
    3、本权限仅在执行该程序的过程中有效(run-time);
    4、执行者将具有该程序拥有者(owner)的权限。 SetUID 的典型应用场景是 passwd 命令。普通用户可以用 passwd 命令修改自己的密码,修改密码实际上是修改 /etc/shadow 文件,而该文件的权限是 000,那么这时就需要普通用户暂时获得 root 用户的身份,来修改 /etc/shadow 文件,以达到修改密码的目的
  • SGID

    1、SGID对二进制程序有用;
    2、程序执行者对于该程序来说,需具备x的权限;
    3、SGID主要用在目录上; 如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同
  • Sticky

    sticky 在英文里面是粘着的意思,而 bit 是位的意思,所以 Sticky BIT 也叫做粘着位。
    
    1、粘着位目前只对目录有效
    2、普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录拥有写入权限
    3、如果没有粘着位,因为普通用户拥有 w 权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件 典型如 /tmp/,任何人都可以在这个目录下进行创建文件或目录,但是只能删除自己创建的目录或文件

3、演示

 //SUID
[root@localhost ~]# touch file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod u+x file
[root@localhost ~]# ll file
-rwxr--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod u+s file
[root@localhost ~]# ll file
-rwsr--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod u-x file
[root@localhost ~]# ll file
-rwSr--r--. 1 root root 0 8月 6 16:02 file //SGID
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod g=rwx file
[root@localhost ~]# ll file
-rw-rwxr--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod g+s file
[root@localhost ~]# ll file
-rw-rwsr--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod g-x file
[root@localhost ~]# ll file
-rw-rwSr--. 1 root root 0 8月 6 16:02 file //Sticky
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod o=rwx file
[root@localhost ~]# ll file
-rw-r--rwx. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod o+t file
[root@localhost ~]# ll file
-rw-r--rwt. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod o-x file
[root@localhost ~]# ll file
-rw-r--rwT. 1 root root 0 8月 6 16:02 file 或
//SUID
[root@localhost ~]# touch file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 4644 file
[root@localhost ~]# ll file
-rwSr--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod u+x file
[root@localhost ~]# ll file
-rwsr--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 0644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file //SGID
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 2644 file
[root@localhost ~]# ll file
-rw-r-Sr--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod g+x file
[root@localhost ~]# ll file
-rw-r-sr--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 0644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file //Sticky
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 1644 file
[root@localhost ~]# ll file
-rw-r--r-T. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod o+x file
[root@localhost ~]# ll file
-rw-r--r-t. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 0644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file

六、命令委派

1、什么是命令委派

sudo可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令

2、主配置文件

/etc/sudoers

3、sudo配置

sudo
使用visudo直接打开/etc/sudoers文件,每一行就是一个sudo条目 格式
who hosts=(runas) command
who :运行命令着的身份
hosts :通过哪些主机
(runas) :以哪个用户的身份
command :运行哪些命令

4、示例

[root@localhost ~]# visudo
..........
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zhangsan ALL=(ALL) ALL
..........
//添加一个zhangsan用户,在任何位置、以任何身份、执行任何命令

5、别名分类

用户别名
User_Alias NETWORKADMIN =
用户的用户名
组名,使用%引导
还可以其它已经定义的用户别名 主机别名
Host_Alias =
主机名
IP地址
网络地址
其它主机别名 runas(用户身份)别名
Runas_Alias =
用户名
%组名
其它的Runas别名 命令别名
Cmnd_Alias =
命令路径
目录(此目录内的所有命令)
其它已定义的命令别名

6、sudo命令语法

sudo [options] command
-b:在后台执行指令
-v:延长密码有效期限5分钟,如果超过会再次提示输入密码
-l:列出目前用户可执行与无法执行的指令
-V :显示版本信息
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份

7、演示

 //创建一个zhangsan用户
[root@localhost ~]# ls /home/
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# id zhangsan
uid=1000(zhangsan) gid=1000(zhangsan) 组=1000(zhangsan)
[root@localhost ~]# ls /home/
zhangsan
[root@localhost ~]# echo '123456' | passwd --stdin zhangsan
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。 //在/etc/sudoers里面添加一条sudo条目
[root@localhost ~]# visudo
..........
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zhangsan ALL=(ALL) /usr/sbin/useradd
...........
[root@localhost ~]# cat /etc/sudoers |grep zhangsan
zhangsan ALL=(ALL) /usr/sbin/useradd //切换至zhangsan用户执行useradd命令
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ pwd
/home/zhangsan
[zhangsan@localhost ~]$ sudo useradd lisi 我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点: #1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。 [sudo] zhangsan 的密码:
[zhangsan@localhost ~]$ id lisi
uid=1001(lisi) gid=1001(lisi) 组=1001(lisi)
[zhangsan@localhost ~]$ ls /home/
lisi zhangsan //查看zhsngsan用户可以执行的权限
[zhangsan@localhost ~]$ pwd
/home/zhangsan
[zhangsan@localhost ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin 用户 zhangsan 可以在 localhost 上运行以下命令:
(ALL) /usr/sbin/useradd //以zhangsan身份查看版本信息
[zhangsan@localhost ~]$ sudo -V
Sudo 版本 1.8.25p1
Sudoers 策略插件版本 1.8.25p1
Sudoers 文件语法版本 46
Sudoers I/O plugin version 1.8.25p1

七、管理命令

1、last —— 显示用户最近登录信息

单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

last       //显示用户登录历史及系统重启历史
-n # //显示最近#次的相关信息 示例
[root@localhost ~]# last
root pts/2 192.168.174.1 Fri Aug 7 15:05 still logged in
root pts/1 192.168.174.1 Sat Aug 1 14:30 gone - no logout
root pts/0 192.168.174.1 Sat Aug 1 00:56 gone - no logout
root tty1 Sat Aug 1 00:54 gone - no logout
reboot system boot 4.18.0-147.el8.x Sat Aug 1 00:54 still running
root pts/2 10.0.0.1 Tue Jul 28 19:52 - 10:43 (2+14:51)
root pts/1 10.0.0.1 Tue Jul 28 19:50 - 10:43 (2+14:53)
root pts/1 10.0.0.1 Tue Jul 28 01:14 - 01:23 (00:08)
root pts/0 10.0.0.1 Tue Jul 28 01:10 - 10:43 (3+09:33)
root tty1 Tue Jul 28 00:44 - 10:43 (3+09:59)
reboot system boot 4.18.0-147.el8.x Tue Jul 28 00:41 - 10:43 (3+10:01) wtmp begins Tue Jul 28 00:41:43 2020
[root@localhost ~]# last -n 3
root pts/2 192.168.174.1 Fri Aug 7 15:05 still logged in
root pts/1 192.168.174.1 Sat Aug 1 14:30 gone - no logout
root pts/0 192.168.174.1 Sat Aug 1 00:56 gone - no logout wtmp begins Tue Jul 28 00:41:43 2020

2、lastb —— 显示用户错误的登录列表,此指令可以发现系统的登录异常

单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来

lastb
-n # //显示最近#次的相关信息 示例
[root@localhost ~]# lastb btmp begins Sat Aug 1 00:54:30 2020
[root@localhost ~]# lastb -n 3 btmp begins Sat Aug 1 00:54:30 2020
//由于错误登录比较少,所以只有这一个

3、lastlog —— 显示系统中所有用户最近一次成功登录信息

lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容  

lastlog
-u<用户名>:显示指定用户的最近登录信息
-t<天数>:显示指定天数以来的登录信息
-b<天数>:显示指定天数前的登录信息 示例
[root@localhost ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/2 192.168.174.1 五 8月 7 15:05:21 +0800 2020
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
............... [root@localhost ~]# lastlog -u root
用户名 端口 来自 最后登陆时间
root pts/2 192.168.174.1 五 8月 7 15:05:21 +0800 2020

4、basename、dirname —— 显示路径基名

basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称

[root@localhost ~]# basename /usr/local/src/
src
[root@localhost ~]# dirname /usr/local/src/
/usr/local

Linux_权限管理理论概述的更多相关文章

  1. Linux_日志管理理论概述

    一.日志系统 1.kernel -->物理终端(/dev/console) --> /var/log/dmesg(系统启动时信息(包括错误信息)记录到该文件) 或者:# dmesg 或 # ...

  2. Linux_磁盘管理理论概述

    一.磁盘阵列 1.什么是磁盘阵列? 1️⃣:磁盘整列就是将多块独立的磁盘组合到一起,形成容量大的磁盘组. 2️⃣:将相同的数据存放到不多个的磁盘的不同位置 2.RAID0 1️⃣:RAID0是磁盘整列 ...

  3. Linux_源码安装包管理理论概述

    一.源码包基本概述 1️⃣:源码包的编译用到了linux系统里的编译器,通常源码包都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言 2️⃣:Linux上的C语言编译器叫做gcc,利用 ...

  4. 译-BMC Remedy Action Request System权限控制概述

    原文链接:Access control overview 说明: BMC Remedy Action Request System是BMC ITSM产品平台,简称AR 或者Remedy,可实现基于IT ...

  5. Linux_权限

    一.查看文件或文件夹权限 [root@hadoop09-linux etc]# ll -h /etc #ll 是ls -l 的缩写方式 -h文件大小单位k 截取其中三行说明 drwxr-xr-x. 2 ...

  6. linux_权限小练习

    下面是解释: 当前# root用户, ls列出列表 mkdir 新建目录 赋予目录744权限      对others来说是  r--  只可读 touch 新建在目录下的同名文件 赋予文件600权限 ...

  7. python 学习笔记十八 django深入学习三 分页,自定义标签,权限机制

    django  Pagination(分页) django 自带的分页功能非常强大,我们来看一个简单的练习示例: #导入Paginator>>> from django.core.p ...

  8. SQL Server 数据库的安全管理(登录、角色、权限)

    ---数据库的安全管理 --登录:SQL Server数据库服务器登录的身份验证模式:1)Windows身份验证.2)Windows和SQL Server混合验证 --角色:分类:1)服务器角色.服务 ...

  9. ASP.NET MVC 基于角色的权限控制系统的示例教程

    上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于 ...

随机推荐

  1. ES6转ES5(Babel转码器)

    ES6转ES5(Babel转码器) 前提:必须在VScode中已经安装了Node.js 官网:https://nodejs.org/en/ 一.安装命令行转码工具 npm install --glob ...

  2. 《RT-Thread Studio开发STM32》第一章~第一节《配置STM32H743XIH6点亮LED灯》

    安装RT-Thread Studio后添加相关芯片库文件,打开软件 打开SDK管理界面,安装相关的库文件,本次采用STM32H743XIH6芯片,野火开发板. 新建工程并设置相关的参数 先编译下下载到 ...

  3. 记docker安装和ida远程调试问题

    docker安装 1.卸载可能存在的旧版本: sudo apt-get remove docker docker-engine docker-ce docker.io   如果想要彻底卸载docker ...

  4. 【随笔】C++类静态成员变量初始化引发的惨痛教训

    事情是这样的,我在某个类中声明了一个静态的map成员, 文件名暂且称之为 xxx.h 然后在 xxx.cc 中全局定义了这个东西,静态成员在类里面只是声明,需要在外边被定义才有内存 然后又在main. ...

  5. linux安装cmake

    1 概述 linux下安装cmake,目前最新的版本为3.17.0-rc2,安装的方式一共有三种:通过软件包仓库安装,通过编译好的版本进行安装,从源码手动编译安装. 2 仓库安装 笔者的是deepin ...

  6. Day13_72_类锁

    类锁 * 对象锁(synchronized method{})和类锁(static sychronized method{})的区别 - 对象锁也叫实例锁,对应synchronized关键字,当多个线 ...

  7. String a=new String("abc")创建了几个对象

    String str=new String("abc");   紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案 ...

  8. HTTP 网络通讯过程

    1. 网络模型概览 2. HTTP 网络通讯过程 1. 网络模型概览 OSI 先有模型,后有协议,先有标准,后进行实践:而 TCP/IP 则相反,先有协议和应用再提出了模型,且是参照的 OSI 模型. ...

  9. 二向箔web安全学院 --新手入门

    二向箔安全学院 click here 新手入门|梦境穿越 1.要建立一个这样的观念|理解:计算机之所以是计算机,是它具有重复进行某种指令的特征,因而我们写的代码 or 脚本,本质上就是让计算机代替我们 ...

  10. Docker仓库-Docker Hub

    Docker Hub Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量上百万的镜像,大部分需求都可以通过在Docker Hub 中直接下载镜像来实现. 注册: https:/ ...