文章目录
学习目标:
- [ ] 了解Linux中的权限
- [ ] 掌握修改权限的基础命令
- [ ] 掌握sudo及其配置文件的使用
一、文件权限管理
在Linux操作系统中文件权限分为读、写、执行权限
1、文件类型
我们在使用 ls -l 命令查看文件属性的时候(ll),展示出来许多文件的属性信息
字段分别是:文件类型、对不同角色的访问权限、链接次数、属主、属组、文件大小、文件最后修改的时间、文件名称
文件类型的分类:
- d(directory):文件夹
- -:普通文件
- l(link):软链接
- b(block device):块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
2、访问权限
用户对一个文件的权限有四种:可读r、可写w、可执行x、无权限-
访问权限对文件和文件夹的含义:
- 文件
- r(read)读权限:可以读取文件的内容。
- w(write)写权限:可以在文件中写入或删除内容
- x(execute)执行权限:可以执行文件
- 文件夹
- r(read)读权限:可以查看文件夹的内容。
- w(write)写权限:可以在文件夹内:创建、删除、修改名称等操作
- x(execute)执行权限:可以更改工作目录到此文件夹
文件的属性中描述权限的内容有9列,它们分别是对所有者的权限、对所属组的权限以及对其他用户的权限。其中对每个角色三种权限的描述分别为可读、可写、可执行,这些顺序都是固定的
前三列为对于所有者的权限,为r w -,表示该文件所有者对其可读可写,但是不可执行;
中间三列为所属组,为r w -,表示该文件所属组对其可读可写,但是不可执行;
后三列为其他用户,为r - -,表示其他用户对其可读,不可写不可执行
特殊权限:s
suid(4):任何用户执行程序的时候,都是以文件的属主的身份来运行
sgid(2):任何用户执行程序的时候,都是以文件的属组的身份来运行
s权限: 设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份.
典型的文件是passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.
ls -al /usr/bin/passwd
-rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd
注意:在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)
3 文件访问者的分类
文件访问者的分类
对于一个文件或者目录,在linux中有三种角色
1.文件的所有者(属主):u(user)
2.文件所有者的所属组(属组):g(group)
3.其他用户:o(other)
4.全部用户:a(all)
软件名:metis
软件版本:5.1.0-12
适用的系统类型:el7,这个表示在centos7可用
适用的cpu架构:x86_64
后缀:rpm
4 文件权限值的表示方法
对于三种权限有其固定的位置,当然可以通过二进制0与1的形式来表示一个角色对某文件的权限
5 基础命令
chmod:修改文件、文件夹权限
语法:chmod [选项] 用户+/-/=某项权限 文件
options
-R(recursive):递归的更改文件和目录(如果修改的对象文件夹里面的所有东西都会被修改)
用户:
代表角色的符号为u(所有者)、g(所属组)、o(其他用户)、a(所有用户);
+/-/=:
+:向权限范围增加权限代号所表示的权限(在原来的权限基础上,增加新的权限)
-:向权限范围取消权限代号所表示的权限(在原来的权限基础上,减掉某个授权)
=:向权限范围赋予权限代号所表示的权限(直接设置最终权限)
某项权限
代表权限的符号为r(读权限)、w(写权限)、x(执行权限);
文件的初始权限
-rw-r--r-- 1 bob bob 0 May 3 10:59 aaa.txt
案例:
案例1:给属组用户添加上写权限
chmod g+w 1.txt
案例2:给属主用户去掉写权限
chmod u-w 1.txt
案例3:给其他用户添加上读和执行权限
chmod o+rx 2.txt
案例4:将属主的权限设置为可读可写可执行
chmod u+rwx 2.txt
案例5:将属主的权限设置为可写
chmod u=w 2.txt
案例6:将属组的权限设置为没有任何权限
chmod g= 2.txt
案例7:将所有用户读权限都去掉
chmod a= 4.txt
另一种写法
chmod ugo= 4.txt
案例8:给所有用户都添加上写权限
chmod ugo+w 4.txt
另一种写法
chmod a+w 4.txt
案例9:将所有用户权限都设置为可读可执行
chmod ugo=rx 4.txt
另一种写法
chmod a=rx 4.txt
chown:修改文件、文件夹所有者、所属组
语法:chown [选项] 属主:属组 文件名
options
-R(recursive):递归的更改文件和目录(如果修改的对象文件夹里面的所有东西都会被修改)
案例:
[root@localhost ~]# ls -l 1.txt
-rw-r--r-- 1 root root 0 3月 19 16:33 1.txt
1、将1.txt的属主改为tom
[root@localhost ~]# chown tom 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r-- 1 tom root 0 3月 19 16:33 1.txt
2、将1.txt的数组改为tom
[root@localhost ~]# chown :tom 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r-- 1 tom tom 0 3月 19 16:33 1.txt
3、将1.txt的数组数组都改为root
[root@localhost ~]# chown root:root 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r-- 1 root root 0 3月 19 16:33 1.txt
二、用户授权 sudo
1、什么是sudo?
sudo(superuser do)是 Linux 系统中一种很常用的权限管理机制,允许非 root 用户以特定的身份执行特定的命令。sudo 命令通过 /etc/sudoers 配置文件实现。
语法:sudo [options] command
[options]
-l(list):可以列出当前用户的sudo权限
-k(reset-timestamp) :无效的时间戳
2、visudo命令简介
在linux系统中,visudo是一个用于编辑sudo配置文件的命令。
语法:visodu [options]
[options]
-c(check):检查sudoers文件的语法错误
-q(quite):再检查sudoers文件时,只输出错误的信息不进行其他操作
-s(strict):指定编辑的sudoers文件为模拟模式,不会真正写入sudoers文件中
3、sudo权限配置
sudo是linux系统中一种跟常见的权限管理机制,允许非root用户以特定的身份执行特定的权限。
sudo的配置文件
- /etc/sudoers
- /etc/sudoers.d
1、编辑sudo权限命令
在终端输入一下命令进入sudo配置文件:sudo visudo
注:不要直接编辑/etc/sudoers文件,因为可能导致配置文件错误
2、/etc/sudoers配置文件说明
sudoers文件包含sudo命令所需的所有配置信息。默认只有root用户编辑并修改。
sudoers文件的格式:
root ALL =(ALL) ALL
用户名 主机 切换的用户 可执行的命令
用户名:普通用户的名称
主机:可以再哪个主机上执行特定的命令
ALL:表示任意主机
localhost:表示当前主机
hostname:表示具体的主机名(web)
x.x.x.x:表示使用IP地址来标识主机
x.x.x.x/netmask:表示的是一个网段
切换的用户:以哪个用户的身份来执行命令(默认root)
(ALL)
(root)
可执行的命令(which 命令:查看此命令的绝对路径)
格式:命令1,命令2
命令是绝对路径
3、为用户配置sudo权限
默认情况下,sudo只能给单个用户授权,但也可以为用户组或别名组授权。
注意:如果要为用户组授权请在前面加上 %。
配置文件时的扩展写法
%groupname ALL=(ALL) ALL:给一个用户组授权
username ALL=(ALL) NOPASSWD:ALL:用户使用sudo来执行命令是不需要输入密码
案例:
1、zz2用户组中所有的用户可以执行/usr/sbin下除usermod以外的所有命令 。
%zz2 ALL= /usr/sbin/*,!/usr/sbin/usermod
2、zz2用户可以修改其他用户的密码 但是不能修改root用户的密码
zz2 ALL=(root) NOPASSWD: /usr/bin/passwd,!/usr/bin/passwd root
小结
今天我们聊了linux权限管理这个话题,知道了Linux的基本权限,如何付权限。各种权限作用在文件及文件夹的意义,以及sudo命令的配置。以上就是今天的内容了,希望小伙伴们有什么不懂的点留在评论区,或者博主有什么写错了的东西都欢迎来各个学霸大佬来指出。