目录结构
/bin /usr/bin 所有用户可用命令
/sbin /usr/sbin root用户才可以使用的命令
命令格式
命令格式: 命令 [-选项] [参数]
列:ls -la /etc
说明:
-
个别命令使用不遵循次格式
-
当有多个选项时,可以写在一起
-
简化选项与完整选项
-a 等于 --all
目录处理命令
文件查看命令
ls
命令名称:ls
命令英文原意:list
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:现实目录文件
语法:ls 选项[-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性
-
-rw-r–r--
-
-
文件类型(-
二进制文件,d目录,软连接文件) -
rw- r-- r–
u(所有者) g(所属组 ) o(其他人)
r 读 w 写 x执行
touch
文件名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
语法: touch [文件名]
功能描述:创建空文件
范例:touch test.list
cat
文件名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
语法: cat [文件名]
功能描述:显示文件内容
-n 显示行号
范例:cat /etc/issue
cat /etc/servoces
tac
文件名称:tac
命令所在路径:/usr/bin/cat
执行权限:所有用户
语法: tac [文件名]
功能描述:显示文件内容(反向列示)
范例:cat /etc/issue
more
文件名称:more
命令所在路径:/bin/more
执行权限:所有用户
语法: more[文件名]
(空格) 或F 翻页
(Enter) 换行
q或Q 退出
功能描述:分页显示文件内容
范例:more /etc/services
less
文件名称:less
命令所在路径:/usr/bin/less
执行权限:所有用户
语法: less [文件名]
功能描述:分页显示文件内容(可向上翻页)
范例:less /etc/services
head
文件名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
语法: head[文件名]
功能描述:显示文件的前面几行
-n 指定行数
范例:head - n 20 /etc/services
tail
文件名称:tail
命令所在路径:/usr/bin/tail
执行权限:所有用户
语法: tail[文件名]
功能描述:显示文件的后面几行
-n 指定行数
-f 动态显示文件末尾内容
范例:tail -n 20 /etc/services
文件链接命令
ln
文件名称:link
命令所在路径:/bin/ln
执行权限:所有用户
语法: ln -s [源文件] [目标文件]
-s 创建软链接
功能描述:生成链接文件
范例:
ln -s /etc/issue /tmp/issue.soft
创建文件/etc/issue的软链接文件/tmp/issue.soft
ln /etc/issue /tmp/issue.hard
创建文件/etc/issue的硬链接文件/tmp/issue.hard
软链接特征:
类似windows的快捷方式
-
lrwxrwxrwx l软链接 ;所有权限全是rwx;但最终决定权限是目标权限
-
文件大小-只是符号链接
-
箭头指向源文件
硬链接特征
- 拷贝 cp -p +同步更新
文件大小、修改时间、权限都是一致
- 软文件就是是丢失了硬链接也可以访问
怎么区分文件是否是硬链接?
查看文件的 i节点 ;硬链接的目标文件和源文件的i节点是一致的
注意:硬链接不能夸分区,而软链接是可以的;硬链接不能生成目录,软链接可以
文件权限命令
chmod
文件名称:chmod
文件名称原意:change the permissions mode of a file
命令所在路径:/bin/chmod
执行权限:所有用户(更改文件的权限要么是文件的所有者,要么是root用户)
语法: chmod [{ugoa}{±=}{rwx}] [文件或目录]
[mode=421] [文件或目录]
-R 递归修改
数字权限:4=r 2=w 1=x
功能描述:更改文件或目录权限
范例:chmod g+w,o-r a.txt chmod a=rwx a.txt chmod 755 a.txt
实验:
#root用户
mkdir /temp
touch /temp/testfile
chmod 777 /temp
# 问:普通用户是否可以删除/temp/testfile文件
# 答案:可以;删除一个文件是对一个文件所在的目录有些权限才可以;对一个文件有w权限只是表示对这个文件的内容有些的权限
权限解析:
file r:cat/more/less/head/tail
w:vim
x:script command
directory:r:ls
w:touch/mkdir/rmdir/rm
x:cd
chown
文件名称:chown
文件名称原意:change file ownership
命令所在路径:/bin/chown
执行权限:所有用户
语法: chown [用户] [文件或目录]
功能描述:改变文件或目录的所有者
范例:chown www app
改变目录app目录的所有者为www
chgrp
文件名称:chgrp
文件名称原意:change file group ownership
命令所在路径:/bin/chgrp
执行权限:所有用户
语法: chgrp [用户] [文件或目录]
功能描述:改变文件或目录的所属组
范例:chgrp www app
改变目录app目录的所属组为www
umask
文件名称:umask
文件名称原意:the user file-creation mask
命令所在路径:shell命令内置
执行权限:所有用户
语法: umask [-S]
-S 以rwx形式显示新建文件缺省权限
功能描述:显示设置文件的缺省权限
范例:umask -S
文件搜索命令
find
文件名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法: find [搜索范围] [条件匹配]
功能描述:文件搜索;
范例一:
根据文件名来搜索:精准搜索,不像Windows会进行模糊搜索
find /etc -name init
如果要进行模糊搜索,只需要进行添加通配符*表示匹配热所有字符
find /etc -name *init*
如果精确知道字符的长度,具体不知道后面是怎么字母,可以使用占位符匹配?
find /etc -name init???
linux 系统是严格区分大小写的,所以要在搜索的时候想要不区分大小写,使用 -iname
find /etc -iname init
范例二:
根据文件大小来搜索
find / -size 数据块大小
数据块是存储文件的最小单位
1个数据块 512字节 0.5K
100M=102400kb 1k等于2个数据块 =204800
find /etc +204800
表示搜索/etc文件夹大于100M的文件
范例三:
根据文件所有者查找
find /home -user www
查找/home文件下所有者为www的文件
范例四:
根据所属组查找文件
find /home -group www
查找/home文件下所属组为www的文件
范例五:
根据时间属性查找;在/etc下查找5分钟内被修改过的文件和目录;大于5用+号
find /home -cmin 5
-amin 访问时间
-cmin 文件属性 change
-mmin 文件内容 modify
范例六:
find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100Mb的文件或目录
-a 两个条件同时满足
-0 两个条件满足任意一个即可
-type 根据文件类型查找
f文件 d目录 l软连接文件
-inum 根据i节点查找;一般用户非法字符的文件名
范例七:
在/etc下查找inittab文件并显示其详细信息
find /etc -name inittab -exec ls -l {} \;
-exec/ok 命令{} ;对搜索结果执行操作
exec 与ok的区别:ok查找到的每个文件都会询问确认;一般用于删除
find . -inum 33575004 -ok rm {} \;
范例八:
查找/etc目录下以init开头的文件和目录,且类型为文件的结果,并查看详细信息
find /etc -name init* -a -type f -exec ls -l {} \;
which
文件名称:witch
命令所在路径:/usr/bin/which
执行权限:所有用户
语法: witch 命令
功能描述:搜索命令所在目录及别名信息
范例:which ls
[root@192 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@192 ~]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@192 ~]#
rm命令在删除文件是之所以要询问你是否要删除,应为在rm使用了-i选项
/bin /usr/bin 所有用户可用命令
/sbin /usr/sbin root用户才可以使用的命令
whereis
文件名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法: whereis [命令名称]
功能描述:搜索命令所在目录以及帮助文档路径
范例:whereis ls
[root@192 ~]# whereis rm
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz
rm:命令
/usr/bin/rm 命令所在路径
/usr/share/man/man1/rm.1.gz 帮助文档地址 man1 一般是命令的帮助文档 man5一般是配置文件的帮助文档
grep
文件名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法: grep -iv [指定字符串] [文件]
功能描述:在文件中搜索字符串匹配的行并输出
-i 不区分大小写
-v 排除指定字符串
范例:grep mysql /root/install.log
grep -v ^# /etc/inittab
过滤文件/etc/inittab文件里每行以#号开头的字符,如果不加^符号,注释中的有#的符号都会被过滤掉
权限分类
普通权限:读写执行,所有者,所属组,其他人
默认权限:umask权限
ACL权限
文件特殊权限:SUID、SGID、SBIT权限
文件系统属性权限
系统命令sudo权限
linux中umask用法小结
前言:
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、 [ H O M E ] / . p r o f i l e 或 [HOME]/.profile或 [HOME]/.profile或[HOME]/.bashrc中设置umask值。具体取决于Linux发行版,比如Fedora19下要更改自己的umask值,在 [ H O M E ] / . p r o f i l e 或 [HOME]/.profile或 [HOME]/.profile或[HOME]/.bash_profile下的增加umask的值覆盖不了/etc/profile中的配置值的,必须在$[HOME]/.bashrc下增加umask值才可以永久定义自己的umask值。
语法:
umask: usage: umask [-p] [-S] [mode]
-p:打印当前umask值
-S:显示当前掩码
mode:设置为umask值
说明:
系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。
在已经登录之后,可以按照个人的偏好使用umask命 令来改变文件创建的缺省权限。相应的改变****直到退出****该shell或使用另外的umask命令之前一直有效。
一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile或.bashrc文件中。
umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。
例如在当前目录中创建一个file:
-rw-rw-r-- 1 shift shift 0 12月 28 16:58 test_file
进入test 目录,运行umask:
~/test$ umask
0002
得到一个4位字符串0002
其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,也就是去掉写(w)权限,则其他人的权限为rw - w = r。
运行umask -p:
~/test$ umask -p
umask 0002
同样的0002,不过在前面多了命令名。
运行umask -S:
~/test$ umask -S
u=rwx,g=rwx,o=rx
显然O 用户缺省w 权限,即默认创建文件或文件夹时,缺省O中的w 权限。只不过创建文件时,默认都不会给x的权限,而创建文件夹时是默认给x权限。
如果这个时候修改umask 值:
~/test$ umask 022
然后在创建文件和文件夹的时候:
drwxr-xr-x 2 shift shift 4096 12月 28 17:08 test2
-rw-r--r-- 1 shift shift 0 12月 28 17:07 test_file2
g 中缺省2,也就是缺省w权限。
与chmod 一样都是设定权限,只不过,chmod是直接设置权限是r、w或x,而umask是缺省权限,即不让设r、w 或x
acl权限简介与开启方式
什么是acl权限?
比如有如下场景:
某大牛在QQ群内直播讲解Linux系统的权限管理,讲解完之后,他在一个公有的Linux系统中创建了一个 /project 目录,里面存放的是课后参考资料。那么 /project 目录对于大牛而言是所有者,拥有读写可执行(rwx)权限,对于QQ群内的所有用户他们都分配的一个所属组里面,也都拥有读写可执行(rwx)权限,而对于 QQ 群外的其他人,那么我们不给他访问/project 目录的任何权限,那么 /project 目录的所有者和所属组权限都是(rwx),其他人权限无。
问题来了,这时候直播有旁听的人参与(不属于QQ群内),听完之后,我们允许他访问/project目录查看参考资料,但是不能进行修改,也就是拥有(r-x)的权限,这时候我们该怎么办呢?我们知道一个文件只能有一个所属组,我们将他分配到QQ群所在的所属组内,那么他拥有了写的权限,这是不被允许的;如果将这个旁听的人视为目录/project 的其他人,并且将/project目录的其他人权限改为(r-x),那么不是旁听的人也能访问我们/project目录了,这显然也是不被允许的。怎么解决呢?
我们想想windows系统里面给某个文件分配权限的办法:
如上图,我们想要让某个用户不具备某个权限,直接不给他分配这个目录的相应权限就行了。那么对应到Linux系统也是这样,我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。
查看分区 ACL 权限是否开启:dump2fs
我们看某个文件(Linux系统中目录也是文件,一切皆是文件)是否支持 ACL 权限,首先要看文件所在的分区是否支持 ACL 权限。
dumpe2fs -h /dev/sad3
#dump2fs命令是查询指定分区详细文件系统信息的命令
选项:
-h 仅显示超级块中的信息,而不显示磁盘快组的详细信息
临时开启分区ACL权限
mount -o remount,acl /
重新挂载根分区,并挂载加入acl权限
永久开启分区ACL权限
vim /etc/fstab
UUID=1866e68c-14cc-4c34-9f8b-3f5650da8dc8 / ext4 defaults,acl 1 1
mount -o remount /
重新挂载文件系统或重启系统,使修改生效
设定ACL权限
setfacl 选项 文件名
选项:
-m 设定acl权限 (u:用户 g:用户组 m:最大有效权限)
-x 删除指定的alc权限
-b 删除所有的acl权限
-d 设定默认acl权限
-k 删除默认的acl权限
-R 递归设定acl权限
查看ACL命令
getfacle 文件名 #查看acl权限
最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了acl权限,是需要和mask权限“相与”,才能得到用户的真正权限;也就是取权限的交集
A | B | AND |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
范例:
# 设置目录/project的最大权限为读写
[root@MiWiFi-R4CM-srv /]# setfacl -m m:rx /project/
[root@MiWiFi-R4CM-srv /]# getfacl /project/
getfacl: Removing leading '/' from absolute path names
# file: project/
# owner: root
# group: tgroup
user::rwx #所有者不受影响
user:yk:r-x
group::rwx #effective:r-x 这里提示真正的权限只有读和执行
group:tgroup2:rwx #effective:r-x
mask::r-x
other::---
删除acl权限
删除用户的acl权限
setfacl -x u:用户名 文件名
删除组的acl权限
setfacl -x g:组名 文件名
删除文件所有的alc权限
setfacl -b 文件名
默认ACL权限和递归ACL权限
递归acl权限
递归是父目录设置acl权限时,所有子文件和子目录都会拥有相同的alc权限
setfacl -m u:用户名:权限 -R 文件名
默认权限
默认ACL权限的作用是,如果给父目录设定了默认的ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
setfacl -m d:u:用户名:权限 文件名
备注:只对新建的文件有效;老的文件不会生效
演示:
[root@MiWiFi-R4CM-srv /]# mkdir /project
[root@MiWiFi-R4CM-srv /]# useradd user1
[root@MiWiFi-R4CM-srv /]# useradd user2
[root@MiWiFi-R4CM-srv /]# groupadd tgroup
[root@MiWiFi-R4CM-srv /]# gpasswd -a user1 tgroup
正在将用户“user1”加入到“tgroup”组中
[root@MiWiFi-R4CM-srv /]# gpasswd -a user2 tgroup
正在将用户“user2”加入到“tgroup”组中
[root@MiWiFi-R4CM-srv /]# grep tgroup /etc/group
tgroup:x:1003:user1,user2
# 修改组权限
[root@MiWiFi-R4CM-srv /]# chgrp tgroup /project/
[root@MiWiFi-R4CM-srv /]# ll -d /project/
drwxr-xr-x. 2 root tgroup 6 10月 1 11:15 /project/
#修改文件权限
[root@MiWiFi-R4CM-srv /]# ll -d /project/
drwxrwx---. 2 root tgroup 6 10月 1 11:15 /project/
# 现在来了个游客
[root@MiWiFi-R4CM-srv /]# useradd yk
[root@MiWiFi-R4CM-srv /]# passwd yk
# 添加的游客账户访问不了 /project 目录,因为目录的所属组是tgroup,而yk的所属组是yk;接下来添加acl权限
[yk@MiWiFi-R4CM-srv ~]$ cd /project/
-bash: cd: /project/: 权限不够
#
#-m 表示设置acl权限 -u表示用户,如果要设置组的话用-g 格式: u/g:用户名/组名:权限 目录
#用户设置acl权限
#
[root@MiWiFi-R4CM-srv /]# setfacl -m u:yk:rx /project/
# 现在用yk账户去访问/project目录就可以了
[yk@MiWiFi-R4CM-srv ~]$ cd /project/
# 再看project目录,权限位置多了个+号,说明这个目录拥有了acl权限
[root@MiWiFi-R4CM-srv /]# ll -d /project/
drwxrwx---+ 2 root tgroup 6 10月 1 11:15 /project/
# 查看acl权限
[root@MiWiFi-R4CM-srv /]# getfacl /project/
getfacl: Removing leading '/' from absolute path names # 这个报错是说目录的左侧的/它不认识,让你删除,它不支持绝对路径的方式来表示
# file: project/ 文件
# owner: root 所有者
# group: tgroup 所属组
user::rwx #所有者的权限是读写执行
user:yk:r-x # 游客权限只有读和执行
group::rwx#所属组的权限是读写执行
mask::rwx #最大有效权限
other::---#其他人的权限是0
#
#测试给组添加acl权限
#
[root@MiWiFi-R4CM-srv /]# groupadd tgroup2
[root@MiWiFi-R4CM-srv /]# setfacl -m g:tgroup2:rwx /project/
[root@MiWiFi-R4CM-srv /]# getfacl /project/
getfacl: Removing leading '/' from absolute path names
# file: project/
# owner: root
# group: tgroup
user::rwx
user:yk:r-x
group::rwx
group:tgroup2:rwx # 多了个组的权限
mask::rwx
other::---
文件的特殊权限
setuid的功能
只有可执行的二进制程序才能设定SUID权限
命令执行者需要对该程序有x(执行)权限
命令执行者在执行该程序时获得该程序文件属组的身份(在执行程序的过程中灵魂附体为文件的属组)
SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
[root@MiWiFi-R4CM-srv /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
#文件的所有者的权限为s,所以passwd有SetUID权限
cat 命令没有 SetUID权限,所以普通用户不能查看/etc/shadow文件内容
[root@MiWiFi-R4CM-srv /]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat
SetUID的方法
4代表SUID
chmod 4755 文件名
4 代表SUID权限;2代表组id 1代表Sticky BIT 权限
7 代表所有者权限
5 代表所属组权限
5 代表其他人权限
chmod u+s 文件名
演示:
[root@MiWiFi-R4CM-srv ~]# touch acb
[root@MiWiFi-R4CM-srv ~]# ll acb
-rw-r--r--. 1 root root 0 10月 1 17:25 acb
[root@MiWiFi-R4CM-srv ~]# ll acb
-rwSr--r--. 1 root root 0 10月 1 17:25 acb #注意这里的S是大写的;是报错警告,原因是要有执行权限
[root@MiWiFi-R4CM-srv ~]# chmod 4755 acb
[root@MiWiFi-R4CM-srv ~]# ll acb
-rwsr-xr-x. 1 root root 0 10月 1 17:25 acb
备注:必须满足:1.必须是二进制可执行程序 2.命令执行者具有程序的执行权限
危险的SetUID
关键目录应该严格控制写权限,比如 / , /usr等
用户的密码设置要严格遵循密码三原则
对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限
SetGID针对文件的作用
只有可执行的二进制程序才能设置SGID权限
命令执行者要对该程序具有x(执行)权限
命令执行在执行程序的时候,组身份升级为该程序文件的属组
SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
SetGID针对目录的作用
剖同用户必须对此目录拥有r和x权限,才能进入此目录
普通用户在此目录中的有效组会变成此目录的属组
若普通用户对此目录拥有w权限时,新建的文件的属组默认是这个目录的属组
4代表SUID
chmod 2755 文件名
2 代表SGID权限;2代表组id 1代表Sticky BIT 权限
7 代表所有者权限
5 代表所属组权限
5 代表其他人权限
chmod g+s 文件名
sticky BIT
SBIT粘着位作用
粘着为目前只对目录有效
普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
演示:
# 这里其他人权限的x权限被替换成了t权限,代表这个目录拥有粘着位权限BIT
[root@MiWiFi-R4CM-srv /]# ll -d /tmp/
drwxrwxrwt. 11 root root 261 10月 2 10:17 /tmp/
[root@MiWiFi-R4CM-srv /]# su tg
[tg@MiWiFi-R4CM-srv /]$ cd /tmp/
[tg@MiWiFi-R4CM-srv tmp]$ touch tg-test
[tg@MiWiFi-R4CM-srv tmp]$ exit
exit
[root@MiWiFi-R4CM-srv /]# su user1
[user1@MiWiFi-R4CM-srv /]$ cd tmp/
[user1@MiWiFi-R4CM-srv tmp]$ rm -rf tg-test
rm: 无法删除"tg-test": 不允许的操作
设置粘着位和取消粘着位的方法
chmod 1755 目录名
1 代表SGID权限;4代表用户权限 2代表组id 1代表Sticky BIT 权限
7 代表所有者权限
5 代表所属组权限
5 代表其他人权限
chmod o+t
文件特殊权限总结
文件特殊权的三种类型
- SUID:只能针对二进制文件,一旦给这个二进制文件赋予了SUID权限,用户在执行这个二进制文件时就会身份就会变成文件的所有者(身份替换成所有者),一般就是root用户;非常不安全!!!
- SGID:即可以针对二进制文件也可以针对目录,如果是针对二进制文件,普通用户在执行这个二进制文件时它的组身份会暂时变为这个文件的所属组,一般来说组身份就会变成root组;如果是针对的目录,如果普通用户进入这个目录,在这个目录新建文件的时候,它的默认有效组,不是这个当前这个用户所属的初始组,而是这个目录自己的所属组
- SBIT:只能针对目录,一旦给这个目录赋予了SBIT权限,普通用户在这个文件新建的文件只能由这个普通用户删除,而其它的普通用户只能查看、修改不能删除这个文件
文件系统属性权限
设置文件系统属性
chattr [±=] [选项] 文件或者目录名
+:增加权限
-:删除权限
=:等于某权限
选项:
i: 如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件
a:如果对文件设置a属性,那么只能在文件中添加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
备注:对root用户也生效;次命令一般用于防止误操作,对重要的目录文件使用
查看文件系统属性
lsattr 选项 文件名
选项
-a 显示所有文件和目录
-d 若目标是目录,仅列表目录本身属性,而不是子文件的
演示:
#
#针对文件
#
[root@MiWiFi-R4CM-srv tmp]# touch abc
[root@MiWiFi-R4CM-srv tmp]# ll abc
-rw-r--r--. 1 root root 0 10月 2 12:07 abc
[root@MiWiFi-R4CM-srv tmp]# chattr +i abc
[root@MiWiFi-R4CM-srv tmp]# lsattr abc
----i----------- abc
# 此时发现root账户都提示权限不足
[root@MiWiFi-R4CM-srv tmp]# echo 1111>>abc
-bash: abc: 权限不够
#
#针对目录
#
[root@MiWiFi-R4CM-srv tmp]# mkdir /test
[root@MiWiFi-R4CM-srv tmp]# touch /test/bcd
[root@MiWiFi-R4CM-srv tmp]# chattr +i /test/
[root@MiWiFi-R4CM-srv tmp]# lsattr -a /test/
----i----------- /test/.
---------------- /test/..
---------------- /test/bcd
[root@MiWiFi-R4CM-srv tmp]# echo 123123 >> /test/bcd
[root@MiWiFi-R4CM-srv tmp]# cat /test/bcd
123123
[root@MiWiFi-R4CM-srv tmp]# rm -rf /test/bcd
rm: 无法删除"/test/bcd": 权限不够
[root@MiWiFi-R4CM-srv tmp]# touch /test/dd
touch: 无法创建"/test/dd": 权限不够
演示二:
#
#针对文件
#
[root@MiWiFi-R4CM-srv tmp]# mkdir /test
[root@MiWiFi-R4CM-srv tmp]# touch /test/cde
[root@MiWiFi-R4CM-srv tmp]# chattr +a /test/cde
[root@MiWiFi-R4CM-srv tmp]# lsattr /test/cde
-----a---------- /test/cde
[root@MiWiFi-R4CM-srv tmp]# echo 1111 >> /test/cde
[root@MiWiFi-R4CM-srv tmp]# cat /test/cde
1111
#只能新增不能删除
[root@MiWiFi-R4CM-srv tmp]# echo > /test/cde
-bash: /test/cde: 不允许的操作
#
#针对目录
#
[root@MiWiFi-R4CM-srv tmp]# mkdir /test2
[root@MiWiFi-R4CM-srv tmp]# chattr +a /test2
[root@MiWiFi-R4CM-srv tmp]# touch /test2/a
[root@MiWiFi-R4CM-srv tmp]# touch /test2/b
[root@MiWiFi-R4CM-srv tmp]# lsattr -d /test2
-----a---------- /test2
[root@MiWiFi-R4CM-srv tmp]# rm -rf /test2/a
rm: 无法删除"/test2/a": 不允许的操作
系统命令sudo权限
sudo 权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo 操作的对象是系统命令
sudo 使用
visudo #实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
#%wheel ALL =(ALL) ALL
#%组名 被管理的主机地址=(可使用的主机身份) 授权命令 (绝对路径)
普通用户执行sudo赋予命令的权限
[root@MiWiFi-R4CM-srv tmp]# su - yk
上一次登录:五 10月 2 13:06:40 CST 2020从 192.168.31.54pts/1 上
[yk@MiWiFi-R4CM-srv ~]$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] yk 的密码:
匹配 %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
用户 yk 可以在 MiWiFi-R4CM-srv 上运行以下命令:
(root) /usr/sbin/shutdown -r now
[yk@MiWiFi-R4CM-srv ~]$ sudo /usr/sbin/shutdown -r now
范例:
visudo
tg ALL =/sbin/shutdown -r now
说明:
使tg用户在任何一个ip(这里主要指本机)执行shutdown -r now命令;注意:命令写的越简单权限越大,如:/sbin/shutdown代表命令所有的参数都可以执行;但是如果写的是一个非常具体的一个命令,那么权限就限制的非常小,只能执行 -r now命令