1.ls -l 查看文件权限
drwxr-xr-x. 19 root root 4096 Jan 23 18:16 1
drwxr-xr-x. 2 root root 4096 Jan 23 18:03 2
drwxr-xr-x. 2 root root 4096 Jan 23 18:03 3
drwxr-xr-x. 2 root root 4096 Jan 23 18:03 4
2.匹配顺序(先匹配user=>group=>other)
*文件本身有权限,同时要关注目录权限和上一级目录权限
*文件修改和文件权限有关,删除文件是和目录有关于文件无关
1)符号方式修改权限 (推荐)
格式 chmod u g o a (+ - =) r w x - 文件或目录
例子 chmod u+rx,g-x,o=w /tmp/file
chmod a+rwx /tmp/dir -R (递归,同时修改子目录及所有文件)
2)数字方式修改权限
r 4
w 2
x 1
chmod 421 /tmp/file
3.特殊权限
权限 符号 执行对象 作用
-------------------------------------------------------------------------------
SUID 4 s 可执行文件 任何人执行该文件临时拥有文件所有者的权限
SGID 2 s 1可执行文件 1 任何人执行该文件临时拥有文件所有组的权限
2目录 2 目录下新建的子目录、可执行文件都继承所有组的名字
Sticky 1 t 目录 (SBIT) 目录下新建的子目录,文件只有创建者或者root可以删除
*查看执行结果是,符号显示有大小写之分,说明之前没有x权限,原来x位置“-”显示大写,原来x位置“x"显示小写
chmod 7777 1
chmod 7422 2
chmod 3422 3
4.默认权限 umask (遮罩权限)
文件最大权限666
目录最大权限777
umask系统默认 普通用户 002 (文件664 目录 775) 系统用户022 (文件644 目录 755)
umask写在 ~/.bash_profile配置文件里,全局生效。
5.ACL-访问控制列表
普通权限、特殊权限、umask都实现不了时,使用ACL。
1)修改用户权限
setfacl -m u:user:rwx dir/file
2)查看权限
getfacl dir/file
*ls -l查看时,权限末尾有“+”表示有ACL策略
drwxrwxr-x+ 2 zzg zzg 4096 Jan 24 18:36 zzg
3)修改组权限
setfacl -m g:group:rwx dir/file
4)删除组权限
setfacl -x g:group dir/file
5)删除用户权限
setfacl -x u:user dir/file
6)删除所有权限
setfacl -b dir/file
7)修改继承用户权限(子目录及所有文件)
setfacl -m d:u:user:rwx /dir
8)设置mask最大权限
setfacl -m m:rx dir/file
*最大权限为rx,如果之前acl为rwx,设置mask后只有rx权限。
6. 文件特殊属性
lsattr 查看特殊属性
chattr 修改特殊属性
chattr +a file 只能追加新内容,删除修改都不行,包括root
chattr -a file 去除追加属性
chattr A file 不更新atime访问时间(比如经常被访问的文件,提高性能)
chattr i file 文件完全不可被改变
实现以下权限设置
1.新建test123用户,密码password,新建一个共享目录/common,起所有人为root,所属组为admin,任何人对目录有完整的权限。当test123用户登录时,其在/common目录下所创建的文件,权限是644,目录权限755,新建文件目录所属组为admin,且只有test123才能删除该目录下test123用户的文件及子目录,其他用户无权删除。
# useradd test123
# echo "password"|passwd --stdin test123
# groupadd admin
# mkdir /common
# chown root:admin /common
# chmod 3777 /common
# setfacl u:test123:rwx /common
$ vi /homt/test123/.bash_profile
umask 022
2.设置目录/tmp/testperm的权限,要求:
1)目录的所有人为root,所属组为admin
2)admin组对文件有全部的权限,除了root以外的其他人对目录没有任何的权限
3)现有用户boss和manager,需要掌握这个目录中的全部文件信息。请你去实现这个目录的权限设置。
# chown root:admin /tmp/testperm
# chmod 770 /tmp/testperm
3)
# setfacl u:boss:rwx /tmp/testperm
# setfacl u:manager:rwx /tmp/testperm
# setfacl d:u:boss:rwx /tmp/testperm
# setfacl d:u:manager:rwx /tmp/testperm
* 先要有ACL,然后才能继承ACL。
* 新建的文件及子目录继承ACL,旧的不继承。
chown -R harry:root /tmp/file=chown -R harry,root /tmp/file
-R 递归 (同时修改目录及子目录)
阅读(1551) | 评论(0) | 转发(0) |