Linux下的访问控制列表(ACL)主要拿来控制用户的权限,可以做到不同用户对同一文件有不同的权限,这么具体要怎么操作呢?下边小编就教你怎样在Linux下设置访问控制列表(ACL)来控制用户的权限。
使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面笔记本或则不会有好多用户的虚拟Linux实例,或则当用户不乐意分享她们之间的文件时,这样的工作是很棒的。但是,假如你是在一个小型组织,你运行了NFS或则Samba服务给不同的用户,之后你将会须要灵活的选购并设置好多复杂的配置和权限去满足你的组织不同的需求。
Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方式,它是一种权限分配之外的普遍范式。诸如,默认情况下你须要确认3个权限组:owner、group和other。而使用ACL,你可以降低权限给其他用户或组别,而不单只是简单的“other”或者是拥有者不存在的组别。可以容许指定的用户A、B、C拥有写权限而不再是让她们整个组拥有写权限。
ACL支持多种Linux文件系统,包括ext2,ext3,ext4,XFS,Btfrs,等。假如你不确定你的文件系统是否支持ACL,请参考文档。
在文件系统使ACL生效
首先,我们须要安装工具来管理ACL。
Ubuntu/Debian中:
$sudoapt-getinstallacl
CentOS/Fedora/RHEL中:
#yum-yinstallacl
Archlinux中:
#pacman-Sacl
出于演示目的,我将使用ubuntuserver版本,其他版本类似。
安装ACL完成后,须要激活我们c盘分区的ACL功能,这样我们能够使用它。
首先,我们检测ACL功能是否早已开启。
$mount
你可以注意到,我的root分区中ACL属性早已开启。万一你没有开启,你须要编辑/etc/fstab文件,在你须要开启ACL的分区的选项前降低acl标记。
如今我们须要重新挂载分区(我喜欢完全重启,由于我不想遗失数据),假如你对其它分区开启ACL,你必须也重新挂载它。
$sudomount/-oremount
干的不错!如今我们早已在我们的系统中开启ACL,让我们开始和它一起工作。
ACL范例
基础ACL通过两条命令管理:setfacl用于降低或则更改ACLpuppy linux,getfacl用于显示分配完的ACL。让我们来做一些测试。
我创建一个目录/shared给一个假定的用户,名叫freeuser
$ls-lh/
我想要分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。
首先,为用户test设置ACL:
$sudosetfacl-mu:test:rwx/shared
如今用户test可以随便创建文件夹,文件和访问在/shared目录下的任何地方。
如今我们降低只读权限给用户test2:
$sudosetfacl-mu:test2:rx/shared
注意test2读取目录须要执行(x)权限
让我来解释下setfacl命令格式:
-m表示更改ACL。你可以降低新的,或更改存在的ACLu:表示用户。你可以使用g来设置组权限test用户名:rwx须要设置的权限。
如今让我向你展示怎样读取ACL:
$ls-lh/shared
你可以注意到,正常权限后多一个+标记。这表示ACL早已设置成功。要具体看一下ACL,我们须要运行:
$sudogetfacl/shared
最后,假如你须要移除ACL:
$sudosetfacl-xu:test/shared
假如你想要立刻擦除所有ACL条目:
$sudosetfacl-b/shared
最后,在设置了ACL文件或目录工作时,cp和mv命令会改变这种设置。在cp的情况下,须要添加“p”参数来复制ACL设置。倘若这不可行,它将会展示一个警告。mv默认联通ACL设置,假若这也不可行,它也会向您展示一个警告。
总结
使用ACL让在你想要分享的文件上拥有更多的能力和控制,非常是在NFS/Samba服务。据悉,假如你的主管共享主机,这个工具是必备的。
里面就是Linux下设置访问控制列表来控制用户权限的方式介绍了,由于ACL的配置和使用较为复杂,初学者在使用的时侯容易出现错误,希望本文介绍的方式才能帮助到你。
【如何在Linux下设置访问控制列表(ACL)来控制用户的权限】相关文章:
★解除使用Linux分区工具时给你们带来的困惑
★在Linux操作系统下防范黑客几个实用方法
★linux下更改用户的工具介绍第1/2页
★如何在Linux中设置透明代理
★linux下保存电脑屏幕色温设置r(背光色温)的方式
★如何在Linux中使用flock控制程序的异步执行
★如何在Linux下配置socks5代理
★关于Linux常见紧急情况的处理方式
★CentOS6.3KVM怎么设置网卡为桥接模式
★linux下的用户权限
我们平常创建的文件、图片都包含着好多信息,很容易被人借助,所以要消除文件中的元数据,以保护个人隐私。下边小编就给你们介绍下怎样消除文件中的隐私数据,一上去学习下吧。
典型的数据文件一般关联着“元数据”,其包含这个文件的描述信息,表现为一系列属性-值的集合。元数据通常包括创建者名称、生成文件的工具、文件创建/更改时期、创建位置和编辑历史等等。几种流行的元数据标准有EXIF(图片)、RDF(web资源)和DOI(数字文档)等。
尽管元数据在数据管理领域有它的优点,但事实上它会害处你的隐私。单反图片中的EXIF格式数据会泄漏出可辨识的个人信息,例如单反机型、拍摄相关的GPS座标和用户青睐的相片编辑软件等。在文档和电子表格中的元数据包含作者/所属单位信息和相关的编辑历史。不一定如此绝对,但例如metagoofil一类的元数据搜集工具在信息搜集的过程中常最作为入侵测试的一部份被借助。
对这些想要从共享数据中擦除一切个人元数据的用户来说,有一些方式从数据文件中移除元数据。你可以使用已有的文档或图片编辑软件,一般有自带的元数据编辑功能。在这个教程里,我会介绍一种不错的、单独的元数据清除工具,其目标只有一个:匿名一切私有元数据。
MAT(元数据匿名工具箱)是一款专业的元数据清除器,使用Python编撰。它属于Tor旗下的项目,并且是Live版的隐私提高操作系统Trails的标配应用。
与例如exiftool等只能对有限种类的文件类型进行写入的工具相比,MAT支持从各类各样的文件中去除元数据:图片(png、jpg)、文档(odt、docx、pptx、xlsx和pdf)、归档文件(tar、tar.bz2)和音频(mp3、ogg、flac)等。
在Linux上安装MAT
在基于Debian的系统(Ubuntu或LinuxMint)上,早已打包好MAT,所以安装很直接:
$sudoapt-getinstallmat
在Fedora上,并没有预先生成的MAT软件包,所以你须要从源码生成。这是我在Fedora上生成MAT的步骤(不成功的话,请查看教程顶部):
$sudoyuminstallpython-develintltoolpython-pdfrwperl-Image-ExifToolpython-mutagen$sudopipinstallhachoir-corehachoir-parser$wget$tarxfmat-0.5.tar.xz$cdmat-0.5$pythonsetup.pyinstall
使用MAT-GUI匿名元数据
一旦安装好,通过GUI和命令行都可以使用MAT。输入这个命令启动MAT的GUI:
$mat-gui
尝试清除一个包含如下外置元数据的实例文档文件(如private.odt)。
点击“添加”按钮来添加须要清除的文件到MAT中。一旦载入文件,点击“确认”按钮对所有隐藏的元数据信息进行扫描。
只要元数据被MAT测量到,“State”状态才会被标记成“Dirty”。双击文件可以查看检查到的元数据。
点击“清理”按钮来消除文件中的元数据。MAT会手动清空文件中的所有私有元数据数组。
去除后的状态中不包含任何私有可识别的痕迹:
从命令行匿名元数据
$mat-c。
正如上面提及的,另一种调用MAT的形式是从命令行,使用mat命令可达到。
为了检测任何敏感的元数据,先抵达文件所在的目录,之后运行:
$mat-c。
这样会扫描当前目录和其子目录下的所有文件,并报告它们的状态(已清除或未清除)。
你可以使用“-d”选项来查看检查到的真实元数据:
$mat-d《input_file》
倘若不为mat命令提供任何选项,默认操作会移除文件的元数据。假如要在清除的过程中保留原始文件的备份,使用“-b”选项。下边命令会消除所有文件的元数据linux 给用户分配权限,并将原始文件储存为“*.bak”文件。
$mat-b。
查看所支持的文件类型,请运行:
$mat-l
故障排除
当前我在Fedora上使用编译版本的MAT遇见了下述问题。当我尝试在Fedora消除归档/文档文件的元数据时(如.gz、.odt、*.docx),MAT由于下述错误失败。
File“/usr/lib64/python2.7/zipfile.py”,line305,in__init__raiseValueError(‘ZIPdoesnotsupporttimestampsbefore1980’)ValueError:ZIPdoesnotsupporttimestampsbefore1980
总结
MAT是一款简单但十分好用的工具,拿来防治从元数据中无意外泄私人数据。请注意假如有必要,文件内容也须要保护。MAT能做的是清除与文件相关的元数据,但并不会对文件本身进行任何操作。简而言之,MAT是一名救生员,由于它可以处理大多数常见的元数据移除,但不应当只指望它来保证你的隐私。
里面就是消除文件中的隐私数据的介绍了,不仅须要定期清理外,还要有良好的保护隐私的系统,只有养成保护隐私的习惯,才不会外泄私人数据。
【Linux下消除文件中的隐私数据以保护个人隐私】相关文章:
★Linux下的Grep命令使用方式详尽介绍
★linux下设定环境变量的方式介绍
★Linux下批量更改文件编码
★linux下输入长文件名小方法
★Linux中文件查找方式大全
★Linux系统中强悍的文本操作命令tr的使用讲解
★Linux:文件命令精通手册
★Linux下借助Lsof恢复删掉文件的方式
★Linux系统中的mount挂载c盘命令使用教程
★Linux下消除系统日志的方式
经EdwinChen的推荐,认识了scikit-learn这个特别强悍的python机器学习工具包。这个贴子作为笔记。(虽然都没有笔记的意义,由于他家文档做的太好了,不过还是为自己记记吧,为之后节约若干分钟)。假如有幸此文被想用scikit-learn的你听见,也还是十分希望你去它们的主页看文档。主页中最值得关注的几个部份:UserGuide几乎是machinelearning的索引,各类方式怎样使用都有,Reference是各个类的用法索引。
S1.导出数据
大多数数据的格式都是M个N维向量,分为训练集和测试集。所以,晓得怎样导出向量(矩阵)数据是最为关键的一点。这儿要用到numpy来协助。假定数据格式是:
Stockpricesindicator1indicator2
2.01231252
1.0....
....
.
导出代码参考:
importnumpyasnp
f=open("filename.txt")
f.readline()#skiptheheader
data=np.loadtxt(f)
X=data[:,1:]#selectcolumns1throughend
y=data[:,0]#selectcolumn0,thestockprice
libsvm格式的数据导出:
>>>fromsklearn.datasetsimportload_svmlight_file
>>>X_train,y_train=load_svmlight_file("/path/to/train_dataset.txt")
...
>>>X_train.todense()#将稀疏矩阵转化为完整特点矩阵
更多格式数据导出与生成参考:
S2.SupervisedClassification几种常用方式:
LogisticRegression
>>>fromsklearn.linear_modelimportLogisticRegression
>>>clf2=LogisticRegression().fit(X,y)
>>>clf2
LogisticRegression(C=1.0,intercept_scaling=1,dual=False,fit_intercept=True,
penalty='l2',tol=0.0001)
>>>clf2.predict_proba(X_new)
array([[9.07512928e-01,9.24770379e-02,1.00343962e-05]])
LinearSVM(Linearkernel)
>>>fromsklearn.svmimportLinearSVC
>>>clf=LinearSVC()
>>>clf.fit(X,Y)
>>>X_new=[[5.0,3.6,1.3,0.25]]
>>>clf.predict(X_new)#reuslt[0]ifclasslabel
array([0],dtype=int32)
SVM(RBForotherkernel)
>>>fromsklearnimportsvm
>>>clf=svm.SVC()
>>>clf.fit(X,Y)
SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,degree=3,
gamma=0.0,kernel='rbf',probability=False,shrinking=True,tol=0.001,
verbose=False)
>>>clf.predict([[2.,2.]])
array([1.])
NaiveBayes(Gaussianlikelihood)
fromsklearn.naive_bayesimportGaussianNB
>>>fromsklearnimportdatasets
>>>gnb=GaussianNB()
>>>gnb=gnb.fit(x,y)
>>>gnb.predict(xx)#result[0]isthemostlikelyclasslabel
DecisionTree(classificationnotregression)
>>>fromsklearnimporttree
>>>clf=tree.DecisionTreeClassifier()
>>>clf=clf.fit(X,Y)
>>>clf.predict([[2.,2.]])
array([1.])
Ensemble(RandomForests,classificationnotregression)
>>>fromsklearn.ensembleimportRandomForestClassifier
>>>clf=RandomForestClassifier(n_estimators=10)
>>>clf=clf.fit(X,Y)
>>>clf.predict(X_test)
S3.ModelSelection(Cross-validation)
手工分trainingdata和testingdata其实可以了,而且更便捷的方式是手动进行linux下socket编程,scikit-learn也有相关的功能,这儿记录下cross-validation的代码:
>>>fromsklearnimportcross_validation
>>>fromsklearnimportsvm
>>>clf=svm.SVC(kernel='linear',C=1)
>>>scores=cross_validation.cross_val_score(clf,iris.data,iris.target,cv=5)#5-foldcv
#changemetrics
>>>fromsklearnimportmetrics
>>>cross_validation.cross_val_score(clf,iris.data,iris.target,cv=5,score_func=metrics.f1_score)
#f1score:
moreaboutcross-validation:
Note:ifusingLR,clf=LogisticRegression().
S4.SignPredictionExperiment
数据集,EPINIONS,有user与user之间的trust与distrust关系linux 给用户分配权限,以及interaction(对用户评论的有用程度打分)。
Features:网路拓扑feature参考"Predictpositiveandnegativelinksinonlinesocialnetwork",用户交互信息feature。
一共设了3类instances,每类3次训练+测试,训练数据是测试数据的10倍,~80,000个29/5/34维向量,得出下边一些推论。时间上,GNB最快(所有instance都是2~3秒跑完),DT特别快(有一类instance只用了一秒,其他都要4秒),LR很快(三类instance的时间分别是2秒,5秒,~30秒),RF也不慢(一个instance9秒,其他26秒),linearkernel的SVM要比LR慢好几倍(所有instance要跑30多秒),RBFkernel的SVM比linearSVM要慢20+倍到上百倍(第一个instance要11分钟,第二个instance跑了近两个小时)。确切度上RF>LR>DT>GNB>SVM(RBFkernel)>SVM(Linearkernel)。GNB和SVM(linearkernel)、SVM(rbfkernel)在第二类instance上差的比较远(10~20个百分点),LR、DT都差不多,RF确实彰显了ENSEMBLE方式的强悍,比LR有较为明显的提高(近2~4个百分点)。(注:因为到该文递交为止,RBF版的SVM才跑完一次测试中的两个instance,里面结果仅基于此。另外,我还尝试了SGD等方式,总体上都不是非常理想,就不记了)。在feature的有效性里面,用户交互feature比网路拓扑feature愈发有效百分五到百分十。
S5.通用测试源代码
这儿是我写的用包括上述算法在内的多种算法的手动分类并10foldcross-validation的python代码,只要输入文件保持本文开头所述的格式(且不包含注释信息),即可用多种不同算法测试分类疗效。Download.
【scikit-learn使用笔记与signprediction简单小结】相关文章:
★服务器不支持mysql数据库
★linux学习笔记之linux文件管理
★完美解决Linux操作系统下aes揭秘失败的问题
★linux下vi编辑器命令大全
★使用sendmail配置企业简易电邮系统
★vsftpd怎样配置虚拟用户:PAM+PgSQL+FreeBSD-4
★Linux操作系统主机名(hostname)简介
★linux下使用ssh管理VPS的注意事项小结
★opensuse下怎样解决jfreechart英文乱码的问题
★linuxc盘配额简单介绍