我看了鸟哥Linux的私房钱,对Linux有了更深的了解。 特别是有权限控制的一面,所以汇总后记录。
本文适用于对Linux的权限一知半解的人。 不适合拥有完全不同的Linux权限的人。 只是稍微提到一下,并不是特别详细。 详情请看鸟哥Linux的私房菜。
一.文件和目录的普通权限
首先,介绍Linux下最常用和常用的权限,r:4 (读取)、w:2 )、x:1 )执行)。
对于文件和目录,这三种权限分别表示不同的操作。
读取: r:4 :对文件的读取权限; 指示对文件夹r的权限是否可以查看该目录下的文件,即ls。
写入: w:2 :有权写入文件,但不能删除文件。 但是,如果只有写入权限而没有读取文件的权限,则无法写入数据。 查看文件夹的w权限时,是否可以在该文件夹下新建文件和目录?删除文件和目录2无论该文件或目录的权限是什么,都可以重命名价格和目录,然后移动文件和目录。 r可以不协助权限,虽然不能ls,但是可以制作文件。
运行: x:1 :对文件的运行权限; 指示对文件夹x的权限是否允许cd进入这样的目录。
命令:
chgrp :更改文件所属的用户组
chown :更改文件的所有者
chmod :修改文件的权限
关于命令的具体使用,请参照相关资料
二是文件和目录的默认权限和隐藏权限
文件的默认权限: umask
umask是用户创建新文件或目录时权限的默认值,通常为0022(root用户)。
创建文件时,默认权限为666,用于“减去”umask值
创建目录时,缺省情况下显示777,umask值将被“减去”
umask有四位数的值,第一位数表示特殊权限。 如后所述,剩下的三位分别表示用户、用户组和其他用户。 所谓的“减法”不是数字,而是表示减法的权限。 例如,如果2表示写入权限,则减去写入权限。 上面的022从用户组中减去写入权限,从其他用户中减去写入权限。 可以在umask 002/0022中自己设定。 默认的第一位,即特殊权限可以不写默认的0。
文件隐藏属性chattr,lsattr
chattr命令的使用方法: chattr [-rvf ] [-v version ] [mode] files…最重要的是[mode]部分,[ mode ]部分称为-=和[ASacDdIijsTtu] :在现有参数设定的基础上,追加参数。根据原始参数设定,删除参数。=:更新为指定的参数设定。 )文件或目录的atime(accesstime )是不可更改的(modified ),可以有效地防止膝上型磁盘发生I/O错误等。 s:HDDI/o同步选项,功能类似于sync。 答:也就是说,append,设置此参数后,只能向文件中添加数据,不能删除。 它经常用于服务器日志文件的安全性。 只有root才能设置此属性。 c )即compresse,设置文件是否在压缩后保存。 读取需要自动解冻操作。 d :即no dump,设置文件不能作为dump程序的备份目标。 ) I )不能删除、改名配置文件或设置链接关系。 另外,也不能写入或添加内容。 I参数有助于文件系统的安全设置。 对于以journal (即journal )、mount参数: data=ordered或data=writeback挂载的文件系统,请将此参数设置为在写入文件时首先进行记录。 如果在文件系统中设置的参数为data=journal,则该参数将自动禁用。 s )机密性地删除文件和目录,即回收所有硬盘容量。 与u:s相反,如果设置为u,则数据内容实际上还存在于磁盘中,可以用于undeletion。 每个参数选项中常用的是a和I。 选项a只能强制添加不可删除的内容,常用于日志系统的安全设置。 I是更严格的安全设置,只有具有superuser(root )或CAP_LINUX_IMMUTABLE处理能力(root )标志)的进程才能应用此选项。
应用示例: 1、防止chattr命令修改系统中的某些重要文件: #chattr i /etc/resolv.conf
然后,使用mv /etc/resolv.conf等命令处理此文件也会生成操作不参数的结果。 vim在编辑此文件时会显示w 10: warning : changingareadonlyfile错误。 要修改此文件,必须删除I属性。 chattr -i /etc/resolv.conf
#lsattr /etc/resolv.conf显示以下属性----i-------- /etc/resolv.conf
2、只能在某个文件中添加数据,不能删除。 应用于各种日志文件。 #chattr a /var/log/messages
更改linux根密码: passwd : authenticationtokenmanipulationerror
三.档案特殊权限: SUID、SGID、SBIT
我之前提到了普通的r、w、x权限,那当然有更高级的特殊权限!
SUID:4
当s标志出现在文件所有者的x权限中时
上时,如'-rwsr-xr-x'时,测试就被称为SetUID。基本上SUID有下面限制和功能:1.SUID权限仅对二进制且有可执行权限的程序有效;
2.本权限仅在执行过程中有效;
3.执行该程序时执行者将具有该程序所有者(owner)的权限。如passwd命令
SGID:2
当s标志出现在用户组的x时称为SetGID,如'-rwxr-sr-x'。与SUID不同的是,SGID可以针对文件或者目录来设置。如果对于文件来说,SGID有如下的功能:
1.SGID权限对二进制且有可执行权限的程序有效。
2.执行该程序时执行者将获得该程序用户组的权限。
当一个目录设置了SGID权限后,它将具有如下功能:
1.用户若对此目录巨涌r和x权限时,该用户能够进入此目录。
2.用户在此目录下的有效用户组将会变成该目录的用户组。
3.若用户在此目录下具有w权限时,则用户所创建的新文件的用户组与此目录的用户组相同。
SBIT(Sticky Bit):1
SBIT权限目前只针对目录有效,对于文件已经没有效果了。SBIT对于目录的作用是:
1.当用户对于此目录具有w,x权限即具有写入权限时,当用户在该目录下创建文件或者目录时,仅有自己和root才有权限删除该文件。
换句话说:当甲用户对A目录具有w权限时,表示甲用户对该目录任何人新建的目录和文件均可进行删除,重命名,移动等操作。不过,如果将A目录加上了SBIT的权限时,则甲只能针对自己创建的文件和目录进行删除,重命名,移动等操作,而无法删除其他人的文件。例如/tmp本身的权限就是'drwxrwxrwt',这样每个用户都只能修改删除自己创建的文件和文件夹。
由于三个特殊权限分别作用于不同的地方,因此可通过一个数字来设置权限:
#chmod 4775 test #加入了SUID权限
#chmod 1774 test #加入了SBIT权限
#chmod 6777 test #加入了SUID和SGID权限
注意:若添加后显示权限为大写的字母,如:
#chmod 7666 test ===>-rwSrwSrsT
因为test文件连执行的x权限都没有,所有该文件无法执行,S,T就表示空。
四,主机的具体权限设置:ACL控制
ACL可以针对单一用户,单一文件或目录进行r,w,x的权限设置,对于需要特殊权限的使用状况非常有帮助。他主要可以针对几个项目:
用户(user):可以针对用户来设置权限;
用户组(group):可以针对用户组来设置权限;
默认属性(mask):可以在该目录下新建文件或者目录时设置新数据的默认权限。
ACL设置:getfacl,setfacl
getfacl:取得某个文件或目录的ACL设置项目。
setfacl:设置某个文件或目录的ACL规定。
setfacl 参数:
-m:设置后续acl参数 -x:删除后续acl参数 -b:删除全部的acl参数 -k:删除默认的acl参数 -R:递归设置acl,包括子目录 -d:设置默认acl
setfacl命令可以识别以下的规则格式:
[d(default)]:u[用户列表]: [rwx] 指定用户的权限,文件所有者的权限(如果uid没有指定)。
[d(default)]:g[用户组列表]:[rwx] 指定群组的权限,文件所有群组的权限(如果gid未指定)
[d(default)]:m: [rwx] 有效权限掩码
[d(default)]:o[其他用户列表] :[rwx] 其他的权限
例:
1.针对特定的用户,使用户code对test目录只有读取的权限:
# setfacl -m u:code:r /test #若无用户列表,代表设置该文件所有者
2.针对特定的用户组,是用户组mygroup对目录test只有rx权限
#setfacl -m g:mygroup:rx /test
3.针对有限权限mask的设置
#setfacl -m m:r test
4.ACL设置的权限可以被子目录所继承
#setfacl -m d:u:testuser:rx /test
五,sudo命令
sudo命令用于普通用户执行只有管理员才能执行的命令,只有在/etc/sudoers文件中的用户才可以使用sudo命令。
/etc/sudoers中为主要内容为:
root ALL=(ALL) ALL
若想普通用户执行sudo命令,模仿root增加一行即可,这四个参数分别有不同的意义:
用户账号 登陆者的来源主机名=(可切换的身份) 可执行的命令(需要写绝对路径)
若用户为%test则表示test用户组。
例如:myuser ALL=(root) !/usr/无限的电话/passwd, /usr/无限的电话/passwd [A-Za-z]*, !/usr/无限的电话/passwd root
表示myuser只能切换到root用户,不能切换到其他用户,且不能执行passwd或者passwd root命令,但是可以更改其他用户的密码。