开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL
开源不等于免费,开源指的是开放源码,但服务是收费的。
开源是有条件和有限制的,也就是开源协议/开源许可
-
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,并回车
语言和键盘处,保持默认,done
网络处保持默认
无需proxy
mirror安装好之后再配置,直接done
磁盘处使用默认的整个硬盘,然后done
确认后直接done
确认数据会全部擦除,并在continue处回车
输入用户名、计算机名、密码等信息
用空格来勾选SSH,后面我们用工具远程连接
很快会安装好,安装好之后,回车reboot now
重启后,会让你在移除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格式
<文件系统> <挂载点> <文件系统类型> <挂载选项> <备份频率> <自检顺序>
<文件系统>
:指定要挂载的文件系统的设备或设备标签。可以使用设备路径、UUID、卷标等方式。<挂载点>
:指定文件系统挂载的目标路径。<文件系统类型>
:指定文件系统的类型。常见的文件系统类型包括ext4、ntfs、xfs等。<挂载选项>
:定义文件系统的挂载选项。这个字段可以包含多个选项,它们以逗号分隔。常见的挂载选项包括:defaults
:使用默认挂载选项。ro
:以只读方式挂载文件系统。rw
:以读写方式挂载文件系统。noexec
:禁止在文件系统上执行可执行文件。nosuid
:禁止设置SUID和SGID标志。nodev
:禁止在文件系统上创建特殊设备文件。nofail
:允许即使挂载失败也继续引导系统。user
:允许普通用户挂载文件系统。auto
:在系统引导时自动挂载文件系统。
<备份频率>
:用于定义文件系统的备份频率。这个字段通常设置为0,表示不备份。<自检顺序>
:指定文件系统自检的顺序。这个字段通常设置为0,表示不自检。
FHS结构
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
标签:01,Rocky,22,第一周,txt,root,it1
From: https://www.cnblogs.com/chenpeishuo/p/17519785.html