在了解到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 testls -l test
-rws--x--x 1 root root 0 Jun 16 02:53 test
承上,加上 SGID 与 SBIT 在上述的文件权限中!
[root@centos7 tmp]# chmod g+s,o+t testls -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
概述Synology NAS 支持的 ACL 服务,可让专业 IT 人员利用熟悉的 Windows 使用经验,方便地微调公司数据的安全性层级。所有使用者及群组的权限,可在富有d性的权限规则下,于根层级 (共享文件夹) 及文件层级 (子文件夹及文件) 中设置,并且将设置套用至 Synology NAS 提供的其他文件分享服务:File Station、FTP、NFS、AFP。
本文章将引导您管理 Synology NAS 的 ACL 权限,并将 ACL 适当地从 Windows 服务器移转至 Synology NAS。
什么是 ACL?
访问控制列表 (Access Control List, ACL) 是 Windows 环境下依附于对象 (如文件、文件夹、或程序) 的访问控制项目 (Access Control Entry, ACE)。ACL 中的每个项目决定了用户或群组对象的访问权限。举例来说,如果 ACL 项目依附在「业务及会计报表」文件上的内容如下:「授权:业务 - 只读;授权:会计 - 修改;拒绝:工程师 - 禁止存取)」,那么属于「会计」群组的使用者拥有修改文件的权限,而业务经理只拥有读取的权限,工程师则连存取的权限都没有。
Synology NAS 支持的 ACL 功能,可能会提示您将文件从 Windows PC 移转至 Synology NAS。运行移转之前,请记住一件事:数据迁移过程中如有差错,很可能会导致 ACL 信息遗失。为避免此事发生,本文的最后一个章节将说明如何适当地移转 ACL 权限。
内容
开始进行之前的准备
管理 DiskStation 的 ACL
将 ACL 设置从 PC 服务器上移转
1. 开始进行之前的准备
本文章假设您已经为 DiskStation 完成以下的准备工作:
Synology DiskStation 的硬件安装
Synology DiskStation Manager 的软件安装 (DSM,网页接口的 DiskStation *** 作系统)
建立存储空间及共享文件夹 (请参阅此处)
建立 DSM 本机使用者 (请参阅此处)
将 Synology DiskStation 加入 Windows ADS 网域 (请参阅此处)
请参阅快速安装指南来了解更多硬盘及软件安装方式的相关信息。您也可以参阅 Synology DiskStation 使用手册 (可于 Synology下载中心取得) 来对本文介绍的各主题有概略的认识。
注意:
ACL 信息只能存储于以 DSM 3.0 及以上版本建立的存储空间,DSM 2.3 及之前的版本则不支持 ACL。
以下为无法启动 ACL 的共享文件夹:photo、surveillance、web、homes、NetBackup、usbshare、sdshare、esatashare。
2. 管理 DiskStation 的 ACL
如果 DiskStation 上的存储空间是以 DSM 3.0 及以上版本建立而成,身为管理员的您 (DSM admin 或是属于 administrators 群组的使用者,亦或是网域管理员) 不仅可以为存储空间上的共享文件夹启动 ACL、通过 Windows 计算机存取文件夹上的文件,还可以为下列使用者或群组指定文件夹 (及其数据) 的 ACL 访问权限:
如果 DiskStation 有加入 ADS 网域,您可以为网域使用者或群组指定 ACL 访问权限。
如果 DiskStation 没有加入 ADS 网域,您可以为 DSM 本地使用者或群组指定 ACL 访问权限。
本章节说明如何为 DiskStation 共享文件夹启动 ACL,以及如何为共享文件夹中的文件编辑 ACL 访问权限。
重要:如果您想为网域使用者或群组编辑 ACL 权限,请确认您的 Windows 计算机及 DiskStation 是否已加入同一个 ADS 网域。
若要为 DiskStation 共享文件夹启动 ACL:
请以管理员 (DSM admin 或是属于 administrators 群组的使用者) 或是网域管理员的身分登入 DSM。
注意:如果您想以网域管理员的身分登入,请在使用者名称字段输入网域_名称\使用者名称。
前往主选单 >控制面板 >共享文件夹,然后新增或选择存储空间上的目的地共享文件夹,该存储空间必须是以 DSM 3.0 及以上版本建立而成。
单击编辑,单击 Windows 访问控制列表页签,选择允许编辑 Windows 访问控制列表,然后单击确定。
选择文件夹列表上的共享文件夹,单击权限设置,然后运行下列 *** 作,以确认管理员确实拥有存取共享文件夹的完整权限:
如果 DiskStation 有加入 ADS 网域,请从下拉式选单选择网域使用者,确认网域管理员拥有该共享文件夹的读写权限,然后单击确定。
如果 DiskStation 没有加入 ADS 网域,请从下拉式选单选择本地使用者,确认 DSM 管理员 (admin 或是属于administrators 群组的使用者) 拥有该共享文件夹的读写权限,然后单击确定。
若要为使用者或群组指定文件或文件夹的 ACL 权限:
请参阅此处的方法 2 来学习如何通过 CIFS 存取 DiskStation 上存放的文件。当画面上出现认证信息提示时,请使用若要为 DiskStation 共享文件夹启动 ACL 章节中提到的使用者凭证信息:
如果 DiskStation 有加入 ADS 网域,请使用网域管理员的使用者凭证信息来进行认证。
如果 DiskStation 没有加入 ADS 网域,请使用 DSM 管理员的使用者凭证信息来进行认证。
以鼠标右键点按共享文件夹里的文件或文件夹,选择内容,然后单击安全性页签。您可以在这里看到用户或群组清单,及其文件或文件夹的 ACL 权限。依照预设,Everyone 群组 (包括所有 DSM 本地群组及网域群组) 拥有读、写、修改共享文件夹中文件或文件夹的权限。
单击编辑 >新增 (在 Windows XP 环境下请直接按新增)。在显示的窗口中,您会在从这个位置字段中看到以下任一信息:
如果 DiskStation 有加入 ADS 网域,您可以看到 ADS 网域的名称。
如果 DiskStation 没有加入 ADS 网域,您可以看到 DiskStation 的 IP 或 DiskStation 的名称。
请在输入对象名称来选取字段输入以下任一信息:
如果 DiskStation 有加入 ADS 网域,请输入网域使用者 / 群组的名称,单击检查名称来验证该使用者 / 组名,然后单击确定。
如果 DiskStation 没有加入 ADS 网域,请输入 DSM 本地使用者 / 群组的名称,单击检查名称来验证该使用者 / 组名,然后单击确定。
现在您已经可以在清单上看到新增的使用者或群组。选择使用者或群组,然后勾选 [使用者或群组] 的权限区块中的允许或拒绝复选框,以设置他们存取文件夹或文件的权限 (请见第 2 步骤)。
单击套用。
关于权限继承及冲突:
ACL 权限采继承制,由父对象延伸至子对象。举例来说,如果「业务」文件夹的 ACL 项目赋予用户「小美」只读的权限,那么 ACL 项目就可以套用到「业务」文件夹里的所有文件 (例如:「年度报表.xls」),也就是说,使用者可以开启文件夹中所有文件。继承权限会以灰色复选标记显示,父对象权限则以黑色表示。
若是遇到权限冲突的情况,优先层级会落在拒绝权限上。在上述例子中,基于权限继承的特性,小美拥有「业务」文件夹以及该文件夹内「年度报表.xls」的只读权限。如果现在情况改变,小美在「业务」文件夹的只读权限被拒绝,但仍赋予其「年度报表.xls」的只读权限,她还是无法开启「年度报表.xls」,因为从「业务」文件夹继承而来的拒绝权限优先于其他存取规则。
3. 将 ACL 设置从 PC 服务器上移转
在办公环境下,所有计算机都会一并加入同一个 ADS 网域,但如果 PC 服务器的存储空间出现不足的情况,IT 专业人员可能就需要以 Synology DiskStation 取代 PC 服务器,做为公司的数据中心。不过,在数据迁移的过程中,一定会遇到一件令人头痛的事:原先设置好的 ACL 权限无法原封不动地搬移至目的地文件夹 (请参阅此处来取得详细信息)。
文件/目录权限设置命令:chmod这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限。该命令有两种用法:
用包含字母和 *** 作符表达式的文字设定法
其语法格式为:chmod
[who]
[opt]
[mode]
文件/目录名
其中who表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt则是代表 *** 作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
而mode则代表权限:
r:可读
w:可写
x:可执行
例如:为同组用户增加对文件a.txt的读写权限:
chmod
g+rw
a.txt
用数字设定法
而数字设定法则更为简单:chmod
[mode]
文件名
关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx
r-x
r-
-则可以表示成为:
111
101
100
再将其每三位转换成为一个十进制数,就是754。
例如,我们想让a.txt这个文件的权限为:
自己
同组用户
其他用户
可读
是
是
是
可写
是
是
可执行
那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110
110
100,再每三位转换成为一个十进制数,就得到664,因此我
们执行命令:
chmod
664
a.txt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)