chown
#chown
修改文件属主,属组
chown 选项 属主 属组 文件名
#将file.txt 属主设置为user01 属主设置为it组
[root@localhost ~]# chown user01:it file.txt
属主,属组位置不改的话可以用空格替代。
chown 也可以修改目录的属主,属组,但是目录里面的内容不受影响,若要想修改目录下面的内容,需要加-R参数
选项
-R 处理指定目录及其子目录下的所有文件
-v 显示详细的处理信息
chmod
#修改权限
chmod 选项 权限 文件
u 表示属主 g 表示属组 o 表示其他 a 表示三者皆是
+ 表示增加权限 -表示取消权限 =表示唯一设定权限
r 可读 w 可写 x 可执行
chmod a+w
chmod g+w
chmod u+w
chmod o+w
chmod a=rw
chmod a-w
r w x权限对文件和目录的意义
对文件:r 可以读取文件的内容
w 可以更改文件的内容
x 可以作为命令执行文件
对目录 r 可以列出目录的内容,可以使用ls命令
w 可以创建或删除目录中的任一文件,可以使用touch ,rm命令
x 可以范围目录的内容,可以使用cd命令
文件重命名的本质是复制一份旧的文件,粘贴的时候换成新的名称,删除旧的文件。
#选项
-f 若该文件权限无法被更改也不显示错误的信息
-v 显示权限比昂的详细信息
-R 对目前目录下所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
不加-R参数表示只修改当前目录,加-R参数,修改当前目录下的目录及文件权限。
#验证可执行文件
[root@serve1 ~]# vim myhello
[root@serve1 ~]# chmod a+x myhello
[root@serve1 ~]# ll
总用量 12
-rw-------. 1 root root 1241 7月 1 2022 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 13 7月 4 20:42 myhello
-rw-r--r--. 1 root root 36 7月 4 08:34 test1
[root@serve1 ~]# ./myhello
hello
[root@serve1 ~]#
文件访问控制列表
来源:传统的权限组合无法满足复杂的我呢见系统权限控制需要
文件访问控制列表可以针对文件单独设置某个用户或者用户组文件的管理权限。
getfacl命令
#查看acl权限列表
[root@serve1 ~]# getfacl anaconda-ks.cfg
# file: anaconda-ks.cfg
# owner: root
# group: root
user::rw-
group::---
other::---
#设置setfacl
setfacl 选项
-m :更改文件的访问控制列表
-M :从文件读取访问控制列表条目更改
-x :根据文件中访问控制列表移除条目
-X :从文件读取访问控制列表并删除
-b 删除所有扩展的访问控制列表条目
-k 移除默认访问控制列表
-d 应用到默认访问控制列表的操作
-R 递归操作子目录
给指定用户添加getfacl实例
[root@serve1 ~]# useradd user100 #添加一个user100的用户
[root@serve1 ~]# groupadd worker #创建一个worker用户组
[root@serve1 ~]# mkdir /workdir #创建一个workdir的目录
[root@serve1 ~]# chown root:worker /workdir #加入root组
[root@serve1 /]# chmod 770 /workdir #去掉其他用户的权限
[root@serve1 /]# ll -d /workdir/
drwxrwx---. 2 root worker 6 7月 4 21:28 /workdir/
[root@serve1 /]# su - user100 #切换到其他用户
[user100@serve1 ~]$ cd /workdir/
-bash: cd: /workdir/: 权限不够 #权限不够
[root@serve1 ~]# setfacl -m u:user100:rx /workdir/#给user100用户添加getfacl
[root@serve1 ~]# getfacl -c /workdir/
getfacl: Removing leading '/' from absolute path names
user::rwx
user:user100:r-x #添加成功
group::rwx
mask::rwx
other::---
[root@serve1 ~]# su - user100
上一次登录:四 7月 4 21:31:00 CST 2024pts/0 上
[user100@serve1 ~]$ cd /workdir/ #可以访问
[user100@serve1 workdir]$ ll -d
drwxrwx---+ 2 root worker 6 7月 4 21:28 .#权限位多一个+,表示存在ACL权限
#移除访问权限控制列表
[root@localhost ~]# setfacl -x u:user100 /workdir/
[root@localhost ~]# getfacl -c /workdir/
user::rwx
group::rwx
mask::rwx
other::---
针对于组将u改为g
#注意
对目录设置的acl权限不会被目录下创建的子文件和目录继承,可以设置默认ACL权限,让目录下面的新建文件和目录都继承父目录的权限。
[root@localhost ~]# setfacl -m d:u:user1:rx /workdir
# 在前面加上一个d,就可以设置默认facl权限
[root@localhost ~]# getfacl -c /workdir
user::rwx
group::rwx
other::---
default:user::rwx # 前面多出来了default
default:user:user1:r-x
default:group::rwx
default:mask::rwx
default:other::---
[root@localhost ~]# touch /workdir/newfile
[root@localhost ~]# getfacl -c /workdir/newfile
user::rw-
user:user1:r-x #effective:r-- # 新建的文件会自动继承
group::rwx #effective:rw-
mask::rw-
other::---
#这里继承的都没有x是因为被mask给限制了
mask有效权限
mask权限,指的是用户或者群组能够拥有的最大ACL权限,也就是说,给用户或者群组设定的ACL权限不能超过mask规定的权限范围,超出部分做无效处理。
#修改mask权限
[root@localhost ~]# setfacl -m m::rwx /workdir/newfile
特殊权限
suid
#suid属性只能运用在可执行文件上,含义是开放文件所有者的权限给其他用户,也就是说用户执行这个可执行文件时,会拥有这个文件所有者的权限。
#suid案例之passwd
普通用户能够执行passwd命令修改自己的密码,修改密码其实就是修改/etc/shadow这个文件,查看这个文件的权限会发现,除了root没有其他人对这个文件有写权限,但是普通用户能够执行passwd,原因就在于passwd这个命令的权限是rwsrw----,其中s就是suid,作用是让执行命令的人具有和该命令拥有者相同的权限。
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
sgid
#sgid 属性可用于文件或者目录,运用在文件的含义是开放文件所属组的权限给其他用户,也就是说当用户执行该文件时,会拥有该文件所属组用户的权限,如果给一个非二进制文本附加sgid权限,则会显示大写S,属于无效。
#sgid作用在目录的含义是:如果一个目录具有sgid权限,那么这个目录下所有用户创建的文件或者目录的属组都和这个这个目录一样,有点继承的感觉,如果/home/user1目录具有sgid权限,且所属组是user1,则任何用户在/home/user1下创建的子目录或者文件的所属组都是user1
[root@localhost /]# chmod g+s /workdir/
sticky
sticky权限只能运用于目录上,含义是该目录下的所有文件和子目录只能有文件的所有者删除,即使他的权限是777,一个公共目录每个人都可以创建文件,删除自己的文件,但不能删除别人的文件(机房交作业)
[root@localhost ~]# chmod o+t /workdir/
chatter文件属性
chatter命令用于改变文件属性
八种模式:了解
a 让文件或者目录只能追加不能删除
b 不更新文件或者目录的最后存取实践
c 将文件或者目录压缩后存放
d 将文件或者目录排除在请到操作之外
i 不得任意更动文件或者目录
s 保密性删除文件或目录
S 即时更新文件或者目录
u 预防意外删除
#实例:防止系统中某个关键文件被修改
#i 表示不能任意更改文件或者目录
[root@localhost ~]# chattr +i /etc/resolv.conf
[root@localhost ~]# lsattr /etc/resolv.conf 查看文件是否有chatter属性
----i----------- /etc/resolv.conf
umask
umask命令指定在建立文件时预设的权限掩码,进程新建文件,目录的默认权限会受到umask的影响,umask表示要剪掉得到的权限
umask 产生文件预设时的权限
umask通过设定权限掩码,权限掩码是由三个八进制的数字组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限
#查看用户的权限掩码
[root@localhost ~]# umask
0022
默认的文件权限是666-umask;默认的目录是777-umask
在Linux中出于安全考虑,默认新建的文件都为666权限,没有执行权限。
查看最终有的权限
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
临时修改umask数值
[root@localhost ~]# umask 0000
[root@localhost ~]# mkdir dir
[root@localhost ~]# ll
总用量 4
drwxrwxrwx. 2 root root 6 4月 14 11:25 dir
-rw-rw-rw-. 1 root root 0 4月 14 11:25 file
永久修改umak数值
[root@localhost ~]# vim /etc/profile
--------------
59 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
60 umask 002
61 else
62 umask 022
63 fi
---------------
[root@localhost ~]# source /etc/profile # 立即在当前shell中生效
- THE END -
最后修改:2024年9月1日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:http://hengy.site/2024/09/01/linux%e6%96%87%e4%bb%b6%e6%9d%83%e9%99%90%e7%ae%a1%e7%90%86/
共有 0 条评论