正式学习linux-6

二次信任 提交于 2020-02-29 16:30:08

1.文件的特殊权限

我们知道一个文件或者目录可以分别设置所有者(u)、所有组(g)、其他用户(o)的读(r)、写(w)、执行(x)权限。为弥补一般权限不能实现的工程,就有了特殊权限。

SUID:可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。当设置过SUID权限后,所有者权限(rwx)则会变更成(rws).如果权限为(rw-),则赋予该特殊权限后,则会变成(rwS)。

SGID:让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。当设置过SGID权限后,所有组权限(rwx)则会变更成(rws).如果权限为(rw-),则赋予该特殊权限后,则会变成(rwS)。

SBIT:对设置该权限的目录,只允许该目录中文件的所有者删除。当目录被设置SBIT 特殊权限位后,原本有x 执行权限则会写成t,原本没有x 执行权限则会被写成T。

chmod命令用于更改文件或者目录的权限

[root@linuxprobe ~]# ls -al test
-rw-rw-r--. 1 linuxprobe root 15 Feb 11 11:50 test
[root@linuxprobe ~]# chmod 760 test
[root@linuxprobe ~]# ls -l test
-rwxrw----. 1 linuxprobe root 15 Feb 11 11:50 test

test文件权限数字法表示为664,由chmod命令权限变更为760。

chown命令设置文件或目录的所有者和所属组。

[root@linuxprobe ~]# ls -l test
-rwxrw----. 1 linuxprobe root 15 Feb 11 11:50 test
[root@linuxprobe ~]# chown root:bin test
[root@linuxprobe ~]# ls -l test
-rwxrw----. 1 root bin 15 Feb 11 11:50 test

原文件属主是linuxprobe,所属组是root。经chown更改属主是root,所属组为bin。如果只更改属主或所属组只需要不写所属位置信息(如:只更改属主xxx:,只更改所属组:xxx。)

2.隐藏权限

chatter命令用于设置文件的隐藏权限。添加隐藏功能用“+参数”,取消隐藏功能用“-参数”。

文件的隐藏权限必须要用lsatter命令查看。

3.文件访问控制列表

一般权限、特殊权限、隐藏权限是针对某一类用户设置的,ACL则是针对某一个用户或者某一用户组进行设置的。

setfacl 命令用于管理文件的ACL 规则,注意setfacl命令的使用。

[root@linuxprobe ~]# setfacl -Rm u:linuxprobe:rwx /root
[root@linuxprobe ~]# su - linuxprobe
Last login: Sat Mar 21 15:45:03 CST 2017 on pts/1
[linuxprobe@linuxprobe ~]$ cd /root
[linuxprobe@linuxprobe root]$ ls
anaconda-ks.cfg Downloads Pictures Public
[linuxprobe@linuxprobe root]$ cat anaconda-ks.cfg
[linuxprobe@linuxprobe root]$ exit

设置后ACL的文件,用ls -ld查看,权限后面的小点(.),会变成加号(+)。

getfacl 命令用于显示文件上设置的ACL 信息,格式为“getfacl 文件名称”。

4.su命令与sudo服务

su命令用于切换用户身份。

su "用户名" :常规切换;

su - "用户名" :完全身份变更。

sudo服务可以授权特定的用户去使用特定的命令。编辑配置文件(/etc/sudoers),或者root用户执行visudo命令。

在sudo 命令的配置文件中,按照下面的格式将第99 行(大约)填写上指定的信息:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

[root@linuxprobe ~]# visudo
96 ##
97 ## Allow root to run any commands anywhere
98 root ALL=(ALL) ALL
99 linuxprobe ALL=(ALL) ALL

如果root用户给普通用户授权特定的命令,以普通账户的身份是无法执行的,只有在执行的命令前面加上sudo,才可以执行。

[linuxprobe@linuxprobe ~]$ ls /root
ls: cannot open directory /root: Permission denied
[linuxprobe@linuxprobe ~]$ sudo ls /root
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!