扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
文件的特殊权限有三种:1、suid;2、sgid;3、sticky,其中,suid和sgid用于累加提升权限,简单来说就是如果原来的用户可以访问,反而切换到的用户或者组不能访问,这时候照样是可以访问的,下面介绍下这三种权限。
十年的泾川网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整泾川建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“泾川网站设计”,“泾川网站推广”以来,每个客户项目都认真落实执行。
SUID:
1、需要注意的是,只对二进制可执行程序有效,不能为普通文件;
2、发起者对程序文件必须拥有执行权限;
3、启动为进程之后,其进程的宿主为原程序文件的宿主;
4、SUID设置在目录上毫无意义。
SGID:
可以应用在二进制文件和作用在文件夹下,当作用在二进制文件下时,作用和SUID相似,只不过SUID是把发起者临时变为文件的所有者,而SGID是把进程的发起者变成源程序文件的属组,默认情况下,用户创建文件时,其属组为此用户所属的主组,当SGID作用在目录下时,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录。
Sticky:
默认情况下用户可以删除具有写权限的目录中的任何文件,无论该文件的权限或拥有权,如果在目录设置Sticky位,只有文件的所有者或root**可以删除该文件,Sticky位是作用在文件夹的,设置在文件上毫无意义。
命令名称:chmod
命令英文原意:change the permissions mode of a file
有两种角色可以执行该命令,一种是 root 用户,另一种就是文件的所有者。
语法:
大括号里的内容表示只能选一个,其中 u 表示该文件的所有者,g 表示所属组,o 表示其他人,a 表示所有角色。
比如,给 abc.txt 文件的所属组加一个写的权限:
也可以同时做多个授权,比如给文件所有者加上执行权限,给其他人去掉写权限:
还可以用数字表示权限。权限的数字表示:
如果一个文件的权限是 rw-r--r--,那么翻译成数字就是 644,反过来,如果要更改文件的权限,可以这样写:
这样文件的权限就改成 rw-r----- 了。
还有一个选项 -R 是递归修改权限,该选项的功能是更改某个目录的权限的同时更改该目录下所有的子目录和文件的权限。
命令名称: chown
英文原意:change owner
语法:chown 用户名 文件
只有管理员账户可以更改文件的所属用户。
例如:
命令名称:chgrp
英文原意:change group
语法:chgrp 组名 文件
例如:
命令名称:umask
使用命令 umask -S 可以查看新建文件或目录的默认权限。
现在显示的是新建目录的默认权限,该目录的所有者的默认权限是 rwx,所属组的默认权限是 rx,其他人的默认权限是 rx。为什么说这是新建目录的默认权限而不是新建文件的默认权限,如果你查看新建文件的权限,会发现是 rw-r--r-- ,与新建目录的权限 rwxr-xr-x 相比,每种角色的权限都少了 x。所以说,只要知道了新建目录的默认权限,再去掉 x 权限,就是新建文件的默认权限。
如果直接执行 umask 命令,会显示一个数字。
这个数字叫做权限掩码,用 777 减去其后三位 022 就得到了每种角色的权限,即 755。翻译成字母就是 rwxr-xr-x 。
若想更改新建目录或文件的默认权限,只需执行 umask 权限掩码 即可。
例如,我想把新建目录的默认权限改成 rwxr-r-- ,翻译成数字就是 744,再用 777 减去 744 就得到了权限掩码 033。
虽然 Linux 系统的目录或文件的默认权限可以修改,但是 Linux 这样分配权限是有一定道理的,最好不要轻易修改。
在了解到Linux系统上的文件目录权限,有时候你会发现为什么刚创建的文件是 -rw-r--r-- 这个权限,目录是 drwxr-xr-x 权限,有些是 -rwsr-xr-x ,又有些是 drwsrws--T ?这些则与umask、特殊权限有关。
什么是umask?umask一般是用在你初始创建一个目录或者文件的时候赋予他们的权限。它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/profile、
或用户家目录下的.bash_profile或.profile中设置umask值。
默认的umask是0022,0022四个数字代表是赋值初始化准备丢弃的权限。(相对应文件来说,x权限就算没说明出来丢弃一样必须默认丢弃)
第一个0代表suid 丢弃的权限;
第二个0代表本文件/目录拥有者什么权限都没丢弃;
第三个2代表本文件/目录的用户组丢弃了w权限;
第四个2代表本文件/目录的文件/目录的用户组丢弃了w权限。
一般我们会这样表示:
umask +default permission(默认权限) =777(目录)/666(文件)
但存在特殊情况如果把umask设为135呢?
要了解特殊权限需对安全上下文有一个概念:
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
1.SUID 权限仅对二进制程序(binary program)有效;
2.执行者对于该程序需要具有x 的可执行权限;
3.本权限仅在执行该程序的过程中有效(run-time);
4.执行者将具有该程序拥有者(owner) 的权限。
5.SUID设置在目录上无意义
权限设定:
chmod u+s FILE...
chmod u-s FILE...
s 标志在文件拥有者的x 项目为SUID,那s 在群组的x 时则称为Set GID
[root@centos7 ~]# ls -l /usr/bin/locate
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
与SUID 不同的是,SGID 可以针对文件或目录来设定!如果是对文件来说, SGID 有如下的功能:
-1.SGID 对二进制程序有用;
-2.程序执行者对于该程序来说,需具备x 的权限;
-3.执行者在执行的过程中将会获得该程序群组的支持!
[root@centos7 ~]# ll /usr/bin/locate /var/lib/mlocate/mlocate.db
-rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
-rw-r-----. 1 root slocate 2349055 Jun 15 03:44 /var/lib/mlocate/mlocate.db
与SUID 非常的类似,使用xiaoming 这个账号去执行locate 时,那xiaoming将会取得slocate 群组的支持, 因此就能够去读取 mlocate.db 。
SGID 也能够用在目录上,这也是非常常见的一种用途
目录设定了SGID 的权限后,他将具有如下的功能:
-1. 用户若对于此目录具有r 与x 的权限时,该用户能够进入此目录;
-2.用户在此目录下的有效群组(effective group)将会变成该目录的群组;
-3.用途:若用户在此目录下具有w 的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此目录的群组相同。
这个 Sticky Bit, SBIT 目前只针对目录有效,sticky 设置在文件上无意义。SBIT 对于目录的作用是:
-1.当用户对于此目录具有w, x 权限,亦即具有写入的权限时;
-2.当用户在该目录下建立文件或目录时,仅有自己与root 才有权力删除该文件
SUID/SGID/SBIT 权限设定
-rwSrwSrwT 1 root root 0 Jun 16 02:53 test
设定权限成为 -rws--x--x 的模样:
[root@centos7 tmp]# chmod u=rwxs,go=x test; ls -l test
-rws--x--x 1 root root 0 Jun 16 02:53 test
承上,加上 SGID 与 SBIT 在上述的文件权限中!
[root@centos7 tmp]# chmod g+s,o+t test; ls -l test
-rws--s--t 1 root root 0 Jun 16 02:53 test
1】ACL 是Access Control List 的缩写,主要的目的是在提供传统的owner,group,others 的read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,单一文件或目录来进行
ACL 主要可以针以下来控制权限呢:
1.使用者 (user):可以针对使用者来设定权限;
2.群组 (group):针对群组为对象来设定其权限;
3.默认属性(mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;
及1.ACL:Access Control List,实现灵活的权限管理;2.CentOS7默认创建的xfs和ext4文件系统具有ACL功能;3.CentOS7之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt/test
4.ACL生效顺序:所有者,自定义用户,自定义组,其他人
为多用户或者组的文件和目录赋予访问权限rwx
2】ACL 的设定技巧: getfacl, setfacl
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除『所有的』 ACL 设定参数;
-k :移除『预设的』 ACL 参数,
-R :递归设定 acl ,亦即包括次目录都会被设定起来;
-d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值
例:[root@centos7 ~]# touch acl_test1
[root@centos7 ~]# ll acl_test1
-rw-r--r--. 1 root root 0 Jul 21 17:33 acl_test1
[root@centos7 ~]# setfacl -m u:xiaoming:rx acl_test1
[root@centos7 ~]# ll acl_test1
-rw-r-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
[root@centos7 ~]# setfacl -m u::rwx acl_test1
[root@centos7 ~]# ll acl_test1
-rwxr-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
设定值中的 u 后面无使用者列表,代表设定该文件拥有者
2.getfacl 指令用法余setfacl一样
例:[root@centos7 ~]# getfacl acl_test1
file: acl_test1 ==说明档名而已!
owner: root ==说明此文件的拥有者,亦即 ls -l 看到的第三使用者字段
group: root ==此文件的所属群组,亦即 ls -l 看到的第四群组字段
user::rwx ==使用者列表栏是空的,代表文件拥有者的权限
user:xiaoming:r-x ==针对xiaoming 的权限设定为 rx ,与拥有者并不同!
group::r-- ==针对文件群组的权限设定仅有 r
mask::r-x ==此文件预设的有效权限 (mask)
other::r--
3】特定的单一群组的权限设定:『g:群组名:权限』
4】主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
getfacl -R /tmp/dir1 acl.txt
setfacl -R -b /tmp/dir1
清除dir目录的ACL权限
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1
权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限
示例:在随意某个目录下ls -l
第一列的内容的信息解释如下:
这个字符串有10位,可以分为4段来解读。
第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;
第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限 - 属主权限(User);
第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限 - 属组权限(Group);
第四段(第8-10位,共3个字符串)表示其他用户对它的权限 - 其他权限(other);
注:
①我们用3位8进制来表示文件的权限,r(read)用4标识,w(write)用2标识,x(excute)用1标识
②r–可读,w–可写,x–可执行。
③每一段的三位顺序不可变,如果没有对应的权限,则使用-表示
上图中的-rwxrw-r–可以用八进制数字764表示。
案例:
-rwxrwxrwx
转算成八进制,777,代表这是一个对所有人开发权限的文件。
15.6.2 修改文件/目录的权限的命令:chmod
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,
其他用户只有读的权限
chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:
chmod 764 aaa.txt
15.7 free查看内存信息
15.7.1 free查看内存信息
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
df df -h 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
补充:
关机命令
reboot 重新启动操作系统
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 10:23
shutdown -h +10 系统再过十分钟后自动关机
总结
Linux命令
目录操作
cd usr/ 切换到该目录下usr目录
cd .. 切换到上一层目录
cd / 切换到系统根目录
mkdir 目录名称 创建目录
ls 目录名称 查询该目录下所有的目录和文件
ls [-a] 目录名称 查询该目录下所有的目录和文件,包含隐藏文件
ls [-l] 目录名称 查询该目录下所有的目录和文件的详细信息
find / -name 目录名称 查找/root下的目录(文件)
mv 目录名称 新目录名称 修改目录名称
mv 目录名称 目录的新位置 剪切
cp -r 目录名称 目录的目标位置 拷贝
rm -rf 目录 强制删除目录
文件操作
touch 文件名称 创建空文件
cat/more/less/tail 文件 查看文件内容
tail -f 文件 动态查看/实时查看文件(日志)
grep 要搜索的字符串 要搜索的文件 关键字搜索
vi/vim 文件 修改文件内容
rm -rf 文件 强制删除文件
文件的打包
tar -zcvf 文件名.tar 要打包的文件
文件的解压
tar -xvf 文件名.tar
扩充:将文件解压到固定位置
tar -xvf 文件名.tar -C 指定解压的位置
查询当前所在位置
pwd
查看进程
ps -ef | grep 进程名称(tomcat/mysql)
杀死进程
kill -9 进程pid
查看端口号
netstat -an | grep 端口号(3306)
查看服务器ip
ifconfig
查看网络是否能正常使用
ping 外网地址 查看是否能访问外网
ping 内网ip 查看是否能访问内网
权限命令
chmod 777 文件 赋权
查看cpu
top
查看磁盘信息
df -h
查看内存信息
free
关机命令
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 10:23
shutdown -h +10 系统再过十分钟后自动关机
重新启动
reboot 重新启动操作系统
```·
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流