第一周
  KDtCPZUvqiPd 2023年11月02日 34 0

开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL

开源不等于免费,开源指的是开放源码,但服务是收费的。

开源是有条件和有限制的,也就是开源协议/开源许可

image-20230701174355411

  • GNU GPL:只要软件中包含了GPL协议的产品或代码,该软件必须要遵循GPL许可协议且开源、免费。

  • LGPL:是 GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写形式,在GPL协议的基础上发布的更宽松的协议,获取源码修改后可以选择公开一部分源码,来获取开发软件的拥有权。

  • Mozilla:MIT是和BSD一样宽范的许可协议。你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。作者只想保留版权,而无任何其他了限制,较BSD协议宽松。

  • BSD:是原先是用在加州大学伯克利分校发表的各个版本的许可证(BSD是Berkly Software Distribution的简写)。相较于GPL许可证和MPL许可证的严格性,BSD许可证就宽松许多了,一样是只需要附上许可证的原文,它还要求所有进一步开发者将自己的版权资料放上去,所以拿到以BSD许可证发行的软件可能会遇到一个小状况,就是这些版权资料许可证占的空间比程序还大。

  • MIT:源自麻省理工学院(Massachusetts Institute of Technology, MIT),是许多软件授权条款中,被广泛使用的其中一种。与其他常见的软件授权条款(如GPL、LGPL、BSD)相比,MIT是相对宽松的软件授权条款,但是赋予软件被授权人更大的权利与更少的限制。

  • Apache:是一个在Apache软件基金会发布的自由软件许可证,Apache许可证要求被授权者在每一个文件中写入版权申明,以维护开发者的劳动成果。

  • 木兰宽松许可证V2中国第一个开源许可证:openEuler、BCLinux都是基于木兰宽松许可证开源的。

    它是基于Apache许可证2.0进行修改和扩展而来的。木兰宽松许可证V2旨在平衡开源软件的自由使用和知识产权保护之间的关系。

    参考链接http://license.coscl.org.cn/MulanPSL

Ubuntu安装

安装Ubuntu

在修改好虚拟机配置之后,点击打开虚拟机电源,稍等之后,会出现以下界面,请选择english,并回车

image-20230701144322568

语言和键盘处,保持默认,done

image-20230701144331586

网络处保持默认

image-20230701144344249

无需proxy

image-20230701144352114

mirror安装好之后再配置,直接done

image-20230701144400146

磁盘处使用默认的整个硬盘,然后done

image-20230701144409737

确认后直接done

image-20230701144419538

确认数据会全部擦除,并在continue处回车

image-20230701144425635

输入用户名、计算机名、密码等信息

image-20230701144536588

用空格来勾选SSH,后面我们用工具远程连接

image-20230701144557930

很快会安装好,安装好之后,回车reboot now

image-20230701144606010

重启后,会让你在移除ISO或光盘,按回车移除并启动系统

安装后配置

设置root密码

cps@ubuntu:~$ sudo passwd root  
[sudo] password for cps:       #输入安装系统时设置的账号密码
New password:                   #输入要设置的root密码
Retype new password:
passwd: password updated successfully

开启root用户ssh权限

sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd

配置软件仓库加速

cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's/^deb.*archive.ubuntu.com/deb https:\/\/mirror.nju.edu.cn/' /etc/apt/sources.list
apt update

Linux获取帮助

通过关键字获取相关命令

whereis cmd 列出命令路径与对应man的路径

whatis cmd 列出命令路径与对应man的章节号

man -k 关键字获取man手册页中包含该关键字的章节

root@ubuntu-01:~# man -k passwd
chgpasswd (8)        - update group passwords in batch mode
chpasswd (8)         - update passwords in batch mode
gpasswd (1)          - administer /etc/group and /etc/gshadow
grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB
openssl-passwd (1ssl) - compute password hashes
pam_localuser (8)    - require users to be listed in /etc/passwd
passwd (1)           - change user password
passwd (1ssl)        - compute password hashes
passwd (5)           - the password file
update-passwd (8)    - safely update /etc/passwd, /etc/shadow and /etc/group

通过命令描述获取命令的man文档

man [章节号] cmd 获取对应man文档。

当命令有多个相关的man文档时,指定章节号获取对应文档

root@ubuntu-01:~# man passwd
root@ubuntu-01:~# man 5 passwd

man文档解读

man手册的章节

章节名 说明
Executable programs or shell commands 用户使用的命令
System calls (functions provided by the kernel) 系统的调用
Library calls (functions within program libraries) 系统的库文件等
Special files (usually found in /dev) 特殊的文件
File formats and conventions eg /etc/passwd 文件的格式
Games 游戏
Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 杂项
System administration commands (usually only for root) root用户使用的命令
Kernel routines [Non standard] 内核相关

man手册结构

结构名 说明
NAME 名称及说明
SYNOPSYS 格式和使用方法说明
DESCRIPTION 详细说明
OPTIONS 可用选项及其介绍说明
EXAMPLE 示例
FILES 相关文件
ENVIRONMENT 环境变量
SEE ALSO 其他帮助参考

命令语法

command    [options...]   [arguments...}
命令          选项           参数
  • [] 可选项
  • CAPS<> 必选项,表示一个变量;通常会有默认值
  • 大写字母 必选项
  • ... 列表,表示可以跟多个
  • x|y|z xyz中选一
  • () 分组

示例:

ls [OPTION]... [FILE]...

root@ubuntu-01:~# ls
a.txt  snap
root@ubuntu-01:~# ls a.txt
a.txt
root@ubuntu-01:~# ls -l
total 8
-rw-r--r-- 1 root root  225 Jun 23 07:26 a.txt
drwx------ 3 root root 4096 Jun 13 13:56 snap
root@ubuntu-01:~# ls -l snap/
total 4
drwxr-xr-x 5 root root 4096 Jun 17 02:58 lxd

/etc/fstab解读

/etc/fstab格式

<文件系统> <挂载点> <文件系统类型> <挂载选项> <备份频率> <自检顺序>
  1. <文件系统>:指定要挂载的文件系统的设备或设备标签。可以使用设备路径、UUID、卷标等方式。
  2. <挂载点>:指定文件系统挂载的目标路径。
  3. <文件系统类型>:指定文件系统的类型。常见的文件系统类型包括ext4、ntfs、xfs等。
  4. <挂载选项>:定义文件系统的挂载选项。这个字段可以包含多个选项,它们以逗号分隔。常见的挂载选项包括:
    • defaults:使用默认挂载选项。
    • ro:以只读方式挂载文件系统。
    • rw:以读写方式挂载文件系统。
    • noexec:禁止在文件系统上执行可执行文件。
    • nosuid:禁止设置SUID和SGID标志。
    • nodev:禁止在文件系统上创建特殊设备文件。
    • nofail:允许即使挂载失败也继续引导系统。
    • user:允许普通用户挂载文件系统。
    • auto:在系统引导时自动挂载文件系统。
  5. <备份频率>:用于定义文件系统的备份频率。这个字段通常设置为0,表示不备份。
  6. <自检顺序>:指定文件系统自检的顺序。这个字段通常设置为0,表示不自检。

FHS结构

image-20230701155103145

1.家目录 /home

  • /home/username 普通用户的家目录,存放普通用户的数据
  • /root 管理员用户的家目录

2./usr 存放用户和共享的应用程序、库

重要的子目录有

/bin/usr/bin/usr/local/bin 普通用户可执行命令

/sbin/usr/sbin/usr/local/sbin 管理用户可执行命令

/usr/local 一般存放自定义安装的软件

3./etc 存放系统,服务等配置文件

4./tmp 存放临时文件

5./boot 引导分区 将内核和引导程序加载的分区 系统引导目录

6./var 系统服务的数据,例如数据库文件,日志文件和网站内容等

7./proc 输出内核与进程相关的虚拟文件系统

/sys 输出当前系统硬件设备相关信息虚拟文件系统

8./lib 驱动程序、库存放的目录

9./media 挂载点 约定俗成光盘挂载到/media

10./dev 设备文件,供系统用于访问硬件

文件管理、用户管理、权限管理

文件管理

  • ls:列出目录中的文件和子目录。
  • cd:切换当前工作目录。
  • pwd:显示当前工作目录的路径。
  • mkdir:创建新目录。
  • rm:删除文件或目录。
  • rmdir: 删除空目录
  • cp:复制文件和目录。
  • mv:移动或重命名文件和目录。
  • touch:创建空文件或更新文件的访问和修改时间。
  • cat:显示文件内容。
  • more : 分页显示文件内容,从头到尾看一遍结束
  • less:分页显示文件内容,可以反复查看。
  • head:显示文件开头的内容
  • tail:显示文件结尾的内容。
  • file:查看文件类型
  • stat : 查看文件时间戳

示例:

拷贝时,结果可能不同,视情况而定

[root@Rocky-01 ~]# cp -r /opt/  /data/cps  #把/opt/下所有拷贝到/data/cps目录中
[root@Rocky-01 ~]# ls /data/cps/
a.txt  b.txt  c.txt
[root@Rocky-01 ~]# cp -r /opt/  /data/cps #把/opt/目录拷贝到/data/cps目录中
[root@Rocky-01 ~]# ls /data/cps/
a.txt  b.txt  c.txt  opt

用户和组管理

用户管理命令:

  • useradd:创建新用户。
  • userdel:删除用户。
  • usermod:更改用户属性信息

组管理命令:

  • groupadd:创建新组
  • groupdel:删除组
  • groupmod:更改组属性信息
  • groupmems: 管理附加组成员关系
  • groups:查看用户所有的组

用户管理命令

创建用户
useradd [OPTIONS] LOGIN

常用选项:

-u  指定uid,>1000
-o  配合-u,不检查uid唯一性
-g  指定gid 主组,该组必须要存在
-G  指定附加组
-c  指定描述信息,指定描述信息如果有空格要用''引起来作为一个整体
-d  指定家目录,家目录不要提前创建,否则会出现权限问题
-s  指定登录shell  /bin/bash  /sbin/nologin
-p 指定加密密码
-r  创建系统用户
-M 不创建家目录,用于系统用户

新建用户相关文件:

  • /etc/default/useradd :定义useradd命令默认值
  • /etc/skel/ :用户家目录的模板文件,在该目录下的所有文件作为新建用户的家目录的模板。
  • /etc/login.defs :用户账号的默认设置和限制

示例:用户的uid范围

root@ubuntu-01:~# cat /etc/login.defs |grep UID
UID_MIN                  1000
UID_MAX                 60000
#SYS_UID_MIN              100
#SYS_UID_MAX              999

示例:创建用户时默认的uid是/etc/passwd中最大的uid值+1

root@ubuntu-01:~# id a
uid=3000(a) gid=3000(a) groups=3000(a)
root@ubuntu-01:~# cat /etc/passwd |cut -d : -f 3 |sort -n |tail -2
3000
65534     #nobody用户
root@ubuntu-01:~# useradd b
root@ubuntu-01:~# id b
uid=3001(b) gid=3001(b) groups=3001(b)

示例:

[root@Rocky-01 ~]# cat /etc/group |grep IT
IT:x:1002:
[root@Rocky-01 ~]# useradd -g IT it1
[root@Rocky-01 ~]# id it1
uid=1001(it1) gid=1002(IT) groups=1002(IT)
[root@Rocky-01 ~]# groupadd IP
[root@Rocky-01 ~]# useradd -G IP -u 6666 -d /test test
[root@Rocky-01 ~]# cat /etc/passwd |grep test
test:x:6666:6666::/test:/bin/bash
[root@Rocky-01 ~]# cd ~test
[root@Rocky-01 test]# pwd
/test
[root@Rocky-01 test]# id test
uid=6666(test) gid=6666(test) groups=6666(test),1003(IP)

修改用户属性
usermod [option] LOGIN

常用选项

-u  修改uid,>1000
-g  修改gid 主组,该组必须存在
-G  修改附加组
-L 锁定用户
-U 解锁用户
-c  指定描述信息
-d  修改家目录(只会修改/etc/passwd文件中家目录的内容,不会创建修改后的家目录),要与-m连用
-m 移动家目录 一般与-d连用,必须原先的家目录存在
-s  修改登录shell
-e 修改账号过期日期

示例:修改主组

[root@Rocky-01 test]# id it1
uid=1001(it1) gid=1002(IT) groups=1002(IT)
[root@Rocky-01 test]# groupadd it1
[root@Rocky-01 test]# usermod -g it1 it1
[root@Rocky-01 test]# id it1
uid=1001(it1) gid=6667(it1) groups=6667(it1)

示例:修改用户家目录

[root@Rocky-01 ~]# cat /etc/passwd |grep it1
it1:x:1001:6667::/home/it1:/bin/bash
[root@Rocky-01 ~]# usermod -d /it1 it1
[root@Rocky-01 ~]# cat /etc/passwd |grep it1
it1:x:1001:6667::/it1:/bin/bash
[root@Rocky-01 ~]# cd ~it1
-bash: cd: /it1: No such file or directory
[root@Rocky-01 ~]# usermod -d  /home/it1  it1
[root@Rocky-01 ~]# cat /etc/passwd |grep it1
it1:x:1001:6667::/home/it1:/bin/bash
[root@Rocky-01 ~]# cd ~it1
[root@Rocky-01 it1]# pwd
/home/it1
[root@Rocky-01 it1]# cd
[root@Rocky-01 ~]# usermod -md /it1 it1
[root@Rocky-01 ~]# cat /etc/passwd |grep it1
it1:x:1001:6667::/it1:/bin/bash
[root@Rocky-01 ~]# cd ~it1
[root@Rocky-01 it1]# pwd
/it1
删除用户
userdel [option]... LOGIN

常用选项:

-f 强制
-r 删除用户家目录和邮箱

示例:

如果用户所在的同名主组还有其他用户存在,则该组不会自动删除;

如果用户所在的同名主组没有其他用户存在。则该组会被自动删除

#用户与主组不同名
[10:50:01 root@Rocky-01 ~]#useradd -g IT it1
[10:50:19 root@Rocky-01 ~]#id it1
uid=1002(it1) gid=1013(IT) groups=1013(IT)
[10:51:01 root@Rocky-01 ~]#getent group |grep IT
IT:x:1013:
[10:51:12 root@Rocky-01 ~]#userdel -r it1
[10:51:22 root@Rocky-01 ~]#id it1
id: ‘it1’: no such user
[10:51:28 root@Rocky-01 ~]#getent group |grep IT
IT:x:1013:

#用户与主组同名
#没有其他用户
[10:51:33 root@Rocky-01 ~]#useradd it2
[10:52:04 root@Rocky-01 ~]#id it2
uid=1002(it2) gid=1002(it2) groups=1002(it2)
[10:52:06 root@Rocky-01 ~]#getent group |grep it2
it2:x:1002:
[10:52:12 root@Rocky-01 ~]#userdel -r it2
[10:52:42 root@Rocky-01 ~]#getent group |grep it2
[10:52:44 root@Rocky-01 ~]#

#有其他用户时,只会删除用户不会删除组
[10:52:46 root@Rocky-01 ~]#useradd it3
[10:56:00 root@Rocky-01 ~]#useradd -G it3 it4
[10:56:11 root@Rocky-01 ~]#getent group |grep it3
it3:x:1002:it4
[10:56:22 root@Rocky-01 ~]#id it4
uid=1003(it4) gid=1003(it4) groups=1003(it4),1002(it3)
[10:56:42 root@Rocky-01 ~]#userdel -r it3
userdel: group it3 not removed because it has other members.
[10:56:54 root@Rocky-01 ~]#getent group |grep it3
it3:x:1002:it4
[10:57:02 root@Rocky-01 ~]#id it3
id: ‘it3’: no such user

组管理命令

创建组
groupadd [optionn]... groupname

常用选项:

-g GID
-r  创建系统组

示例:

创建的gid默认是/etc/group中最大gid值+1

[root@Rocky-01 ~]# getent group |cut -d : -f 3 |sort -n |tail -2
6667
65534
[root@Rocky-01 ~]# groupadd SRE
[root@Rocky-01 ~]# getent group |grep SRE
SRE:x:6668:
修改组属性
groupmod [options] GROUP 

选项:

-g 更改gid
-n 更改组名
-p 更改组密码

示例:

[root@Rocky-01 ~]# getent group
test:x:6666:
it1:x:6667:
SRE:x:6668:
[root@Rocky-01 ~]# groupmod -g 1004 it1
[root@Rocky-01 ~]# groupmod -g 1005 test
[root@Rocky-01 ~]# groupmod -g 1006 SRE
[root@Rocky-01 ~]# getent group
test:x:1005:
it1:x:1004:
SRE:x:1006:
[root@Rocky-01 ~]# groupmod -n Linux SRE
[root@Rocky-01 ~]# getent group
Linux:x:1006:
[root@Rocky-01 ~]# openssl passwd -6 redhat
$6$AO0/fkutBeLf5Tio$09kebnUzOH5YtaZzaieB0oxN7.ZhgBhRu96bbVjEKi2KF20Ug9WFN6v4LpGNs.RBFleU8r7bq/PKSQDno.kyS1
[root@Rocky-01 ~]# groupmod -p '$6$AO0/fkutBeLf5Tio$09kebnUzOH5YtaZzaieB0oxN7.ZhgBhRu96bbVjEKi2KF20Ug9WFN6v4LpGNs.RBFleU8r7bq/PKSQDno.kyS1' Linux
[root@Rocky-01 ~]# newgrp Linux
[root@Rocky-01 ~]# id
uid=0(root) gid=1006(Linux) groups=1006(Linux),0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

删除组
groupdel [options] GROUP

选项:

-f 强制删除,即使是用户的主组也可以强制删除,但会导致无主组的用户不可用无法登录

示例:

[root@Rocky-01 ~]# id it1
uid=1001(it1) gid=1004(it1) groups=1004(it1)
[root@Rocky-01 ~]# groupdel IP
[root@Rocky-01 ~]# cat /etc/group |grep IP
[root@Rocky-01 ~]# groupdel it1
groupdel: cannot remove the primary group of user 'it1'
[root@Rocky-01 ~]# groupdel -f it1
[root@Rocky-01 ~]# cat /etc/group |grep it1
[root@Rocky-01 ~]# id it1
uid=1001(it1) gid=1004 groups=1004
[root@Rocky-01 ~]# su - it1
/usr/bin/id: cannot find name for group ID 1004
[it1@Rocky-01 ~]$ pwd
/home/it1
[it1@Rocky-01 ~]$ id
uid=1001(it1) gid=1004 groups=1004 context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

设置组密码并登录组

gpasswd可更改组密码,也可以修改附加组的成员关系

gpasswd [OPTION] GROUP

常用选项:

-a user  将user添加至指定组中
-d user 在指定附加组中移除用户user
-A user1,user2...  设置有管理权限的用户列表
-M user1,user2 ...  设置加入附加组的用户列表

组密码文件为/etc/gshadow,密码为密文

  • 登录组
 newgrp [-] [group]

登录组以后该组会临时成为用户的私有组,用于临时授权场景

示例:

[root@Rocky-01 ~]# getent gshadow |grep IT
IT:!::
[root@Rocky-01 ~]# gpasswd IT
Changing the password for group IT
New Password:
Re-enter new password:
[root@Rocky-01 ~]# su - cps
[cps@Rocky-01 ~]$ newgrp IT
Password:
[cps@Rocky-01 ~]$ id
uid=1000(cps) gid=1002(IT) groups=1002(IT),1000(cps) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

批量添加组的其他用户

gpasswd -M usera,userb,userc ...   groupname

[root@Rocky-01 ~]# getent group |grep IT
IT:x:1002:
[root@Rocky-01 ~]# gpasswd -M it1,it2,it3  IT
[root@Rocky-01 ~]# getent group |grep IT
IT:x:1002:it1,it2,it3
更改和查看组成员

groupmems管理附加组的成员关系

groupmems [options] [action]

常用选项:

-g 指定组
-a 添加用户
-d 删除用户
-l 列出组内用户
-p 清空组内用户

示例:

[root@Rocky-01 ~]# groupmems -g IT -l
it1  it2  it3
[root@Rocky-01 ~]# groupmems -g IT -p
[root@Rocky-01 ~]# groupmems -g IT -l
[root@Rocky-01 ~]#
[root@Rocky-01 ~]# groupmems -g IT -a it1
[root@Rocky-01 ~]# groupmems -g IT -a it2
[root@Rocky-01 ~]# groupmems -g IT -a it3
[root@Rocky-01 ~]# groupmems -g IT -l
it1  it2  it3

groups查看用户组列表

groups username  #列出用户所有的组,包括主组和附加组

示例:

[root@Rocky-01 ~]# groups it2
it2 : it2 IT
[root@Rocky-01 ~]# groups it3
it3 : it3 IT

权限管理

  • chmod:修改文件或目录的权限。
  • chown:修改文件或目录的所有者。
  • chgrp:修改文件或目录的所属用户组。

普通权限管理

  • chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
  • chgrp
chgrp [OPTION]... GROUP FILE...
  • chmod
chmod [OPTION]... MODE[,MODE]... FILE...

示例:

[root@Rocky-01 ~]# ll a.txt
----------. 1 root cps 6 Jun 22 21:23 a.txt
[root@Rocky-01 ~]# chown root:  a.txt
[root@Rocky-01 ~]# ll a.txt
----------. 1 root root 6 Jun 22 21:23 a.txt
[root@Rocky-01 ~]# chown cps: a.txt
[root@Rocky-01 ~]# ll a.txt
----------. 1 cps cps 6 Jun 22 21:23 a.txt
[root@Rocky-01 ~]# chown :root a.txt
[root@Rocky-01 ~]# ll a.txt
----------. 1 cps root 6 Jun 22 21:23 a.txt
[root@Rocky-01 ~]# chgrp it2 a.txt
[root@Rocky-01 ~]# ll a.txt
----------. 1 cps it2 6 Jun 22 21:23 a.txt
[root@Rocky-01 ~]# chmod 600 a.txt
[root@Rocky-01 ~]# ll a.txt
-rw-------. 1 cps it2 6 Jun 22 21:23 a.txt

特殊权限管理

三种特殊权限:SUID,SGID,Sticky

  • SUID作用于二进制可执行文件上,用户将继承此程序所有者的权限
  • SGID
    • 作用于二进制可执行文件上,用户将继承此程序所有组的权限
    • 作用于目录上,此目录中新建文件所属组将自动从此目录继承
  • Sticky 作用于目录上,此目录中的文件只能有所有者自己删除
SUID

SUID作用于目录上无意义

SUID权限设定

chmod u+s FILE ...
chmod 4xxx FILE ...
SGID

SGID权限设定

chmod g+s FILE/DIR ...
chmod 2xxx FILE/DIR ...
  • 目录上的SGID权限功能:

默认情况下,用户创建文件时其属组为用户的主组;一旦目录被设置了SGID,则对此目录有写权限的用户在该目录中创建的文件所属的组为该目录的属组,通常用于创建一个协作目录。

示例:

[22:02:00 root@Rocky-01 data]#chmod g+s it
[22:02:00 root@Rocky-01 data]#ll -d it/
drwxrwsr-x. 2 root IT 6 Jun 22 22:01 it/
[22:02:04 root@Rocky-01 data]#id it1
uid=1001(it1) gid=1001(it1) groups=1001(it1),1002(IT)

[22:02:11 root@Rocky-01 data]#su it1
[22:02:14 it1@Rocky-01 data]$cd it/
[22:02:18 it1@Rocky-01 it]$touch a,txt
[22:02:24 it1@Rocky-01 it]$ll
total 0
-rw-rw-r--. 1 it1 IT 0 Jun 22 22:02 a,txt
Stick

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件是否有权限;

在目录上设置Sticky粘滞位,只有文件的所有者或root可以删除该文件

Sticky权限设定

chmod o+s DIR ...
chmod 1xxx DIR ...

示例:

[22:03:12 root@Rocky-01 data]#mkdir dir1
[22:03:17 root@Rocky-01 data]#chmod 1777 dir1/
[22:03:38 root@Rocky-01 data]#ll -d dir1/
drwxrwxrwt. 2 root root 6 Jun 22 22:03 dir1/
[22:03:41 root@Rocky-01 data]#
[22:03:41 root@Rocky-01 data]#su cps
[22:03:54 cps@Rocky-01 data]$cd dir1/
[22:03:59 cps@Rocky-01 dir1]$touch a.txt
[22:04:04 cps@Rocky-01 dir1]$exit
exit
[22:04:09 root@Rocky-01 data]#su it1
[22:04:14 it1@Rocky-01 data]$cd dir1/
[22:04:16 it1@Rocky-01 dir1]$touch b.txt
[22:04:20 it1@Rocky-01 dir1]$ll
total 0
-rw-rw-r--. 1 cps cps 0 Jun 22 22:04 a.txt
-rw-rw-r--. 1 it1 it1 0 Jun 22 22:04 b.txt
[22:04:22 it1@Rocky-01 dir1]$ll -ld /data/dir1/
drwxrwxrwt. 2 root root 32 Jun 22 22:04 /data/dir1/
[22:04:35 it1@Rocky-01 dir1]$rm -f a.txt
rm: cannot remove 'a.txt': Operation not permitted
[22:04:42 it1@Rocky-01 dir1]$mv a.txt aa.txt
mv: cannot move 'a.txt' to 'aa.txt': Operation not permitted

文件特殊属性

chattr管理文件特殊权限

lsattr查看文件特殊权限

  • 不能删除,改名,更改内容
chattr +i file

示例

[21:16:47 root@Rocky-01 ~]#chattr +i a.txt
[21:20:05 root@Rocky-01 ~]#lsattr a.txt ;ll a.txt
----i--------------- a.txt
----------. 1 root root 0 Jun 22 21:16 a.txt
[21:20:13 root@Rocky-01 ~]#rm -f a.txt
rm: cannot remove 'a.txt': Operation not permitted
[21:20:21 root@Rocky-01 ~]#mv a.txt aa.txt
mv: cannot move 'a.txt' to 'aa.txt': Operation not permitted
[21:20:57 root@Rocky-01 ~]#echo hello,n80 >> a.txt
-bash: a.txt: Operation not permitted
  • 只能追加内容,不能删除、改名
chattr +a file

示例

[21:22:53 root@Rocky-01 ~]#chattr +a  a.txt
[21:22:58 root@Rocky-01 ~]#lsattr a.txt
-----a-------------- a.txt
[21:23:05 root@Rocky-01 ~]#cat a.txt
[21:23:21 root@Rocky-01 ~]#echo hello > a.txt
-bash: a.txt: Operation not permitted
[21:23:32 root@Rocky-01 ~]#echo hello >> a.txt

ACL权限

Linux ACL是一种用于文件和目录的扩展权限系统。它允许我们在标准的基于用户和组的权限之外,为特定用户和组分配更细粒度的权限控制。

使用ACL,可以为每个文件和目录指定一组规则,定义哪些用户和组具有对该文件或目录的读取、写入和执行权限,甚至可以设置特定用户或组的特殊权限。

setfacl 设置acl权限

getfacl 查看设置的acl权限

示例

#查看acl权限
getfacl file/dir

#设置acl权限
setfacl -m u:cps:rwx file/dir
setfacl -m g:cps:rw file/dir

#清除acl权限
setfacl -x u:cps:rwx file/dir  #清除cps的acl权限
setfacl -b file/dir #清除所有的acl权限

#复制file1的acl权限给file2
getfacl file1 |setfacl --set-file=-   file2
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  6YY0QMPUXEwu   2023年12月10日   31   0   0 linux网卡
  Ex81gqy3LOX7   2023年12月07日   22   0   0 linux
  nIt0XG0acU8j   2023年12月11日   32   0   0 linuxhtop
  nIt0XG0acU8j   2023年12月09日   36   0   0 linuxsort