小技巧
除root用户外其他用户将不能登录
touch /etc/nologin 或touch /run/nologin
echo “system is maintaining”>> /etc/nologin
文件属性
文件的权限主要针对三类对象进行定义:
owner: 属主, u
修改文件的属主:
chown [OPTION]… [OWNER][:[GROUP]] FILE…
命令中的冒号可用.替换;
-R: 递归
chown [OPTION]… –reference=RFILE FILE…
group: 属组, g
修改文件的属组:
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
-R 递归
other: 其他, o
每个文件针对每类访问者:
r: Readable 可使用文件查看类工具获取其内容
w: Writable 可修改其内容
x: eXcutable 可以把此文件提请内核启动为一个进程
每个目录针对每类访问者:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此
目录 X:只给目录x权限
文件权限的两种表示法,字符表示法和数字表示法:
修改文件权限
chmod [OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限
chmod [OPTION]… MODE[,MODE]… FILE…
MODE: 修改一类用户的所有权限: u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限 u+ u- g+ g- o+ o- a+ a- +
chmod [OPTION]… –reference=RFILE FILE…
参考RFILE文件的权限,将FILE的修改为同RFILE;
新建文件和目录的默认权限
umask值 可以用来保留在创建文件权限
新建FILE权限: 666-umask 如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777-umask
非特权用户umask是 002
root的umask 是 022
umask: 查看
umask #: 设定
umask 002
umask –S 模式方式显示
umask –p 输出可被调用
全局设置: /etc/bashrc
用户设置:~/.bashrc
Linux文件系统上的特殊权限
SUID
SUID只对二进制可执行程序有效,SUID设置在目录上无意义
如果执行该程序的用户拥有该程序的执行权限,那么该程序的进程将以程序文件的属主身份运行
SGID
对文件:如果执行该程序的用户拥有该程序的执行权限,那么该程序的进程将以程序文件的属组身份运行
对目录:一旦某目录被设定了SGID,则对此目录有写权限的用户在此 目录中创建的文件所属的组为此目录的属组,包括子目录,通常用于创建一个协作目录
默认情况下,用户创建文件时,其属组为此用户所属的主组
Sticky
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或目录的属主或root可以删除该文件
只对目录有效,设置在文件上无意义
权限位映射
SUID: user,占据属主的执行权限位 s: 属主拥有x权限 S:属主没有x权限
SGID: group,占据属组的执行权限位 s: group拥有x权限 S:group没有x权限
Sticky: other,占据other的执行权限位 t: other拥有x权限 T:other没有x权限
设定文件特定属性
chattr +i 不能删除,改名,更改
chattr +a 只能增加
lsattr 显示特定属性
注意:权限是针对特定文件系统的,并不是所有的文件系统都支持
访问控制列表
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设 置权限
CentOS7.0默认创建的xfs和ext4文件系统有ACL功能
CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。
需手动增加: tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1/mnt
修改setfacl -m u或g:用户或组名:权限 文件或目录
删除setfacl -x u或g:用户或组名 文件或目录
清空setfacl -b 文件或目录
把写好的acl作用在文件上,修改setfacl -M file.acl file|directory
把写好的acl作用在文件上,删除 setfacl -X file.acl directory
递归修改目录下的sales权限,目录有执行权限,但文件没有执行权限setfacl -Rm g:sales:rwX directory
ACL文件上的group权限是mask 值(自定义用户,自定义组 ,拥有组的最大权限),而非传统的组权限
getfacl 可看到特殊权限:flags
mask是一条高压线,限制除了所有者和other其他人的权限统统不能超过mask
设置acl权限后,更改组相当于该mask
setfacl -m mask::rx file
对目录下新建的文件具有acl权限 setfacl -m d:u:wang:rx directory
删除默认acl权限 setfacl -k d:u:wang:rx directory
getfacl file1 | setfacl –set-file=- file2 复制file1 的acl权限给file2
复制文件保留acl权限cp -a或cp -p
tar打包acl不会被保留
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1
原创文章,作者:M20-16刘国新,如若转载,请注明出处:http://www.178linux.com/31493