云计算 Linux Rocky day07【chmod、chown、ACL、Sticky Bit、Set GID、Set UID、文件目录的默认权限、手动建立用户家目录、递归设置权限错误】

云计算 Linux Rocky day07【chmod、chown、ACL、Sticky Bit、Set GID、Set UID、文件目录的默认权限、手动建立用户家目录、递归设置权限错误】

在这里插入图片描述

1.基本权限与归属

读取:允许查看内容-read r
写入:允许修改内容-write w
可执行:允许运行和切换-excute x

对于文本文件:
r读取权限:cat、less、grep、head、tail
w写入权限:vim、> 、 >>
x可执行权限:Shell与Python

对于目录:
r读取权限:ls命令查看目录内容
w写入权限:能够创建、删除、修改等目录的内容
x 执行权限:能够cd切换到此目录下(进入此目录)

归属关系
所有者(属主):拥有此文件/目录的用户-user u
所属组(属组):拥有此文件/目录的组-group g
其他人:除所有者、所属组以外的用户-other o

zhangsan zhangsan 1.txt

所有者、所属组默认情况只有一个

2.查看数据权限

执行 ls -l或者ls -ld 命令查看

以-开头:文本文件
以d开头:目录
以l开头:快捷方式

在这里插入图片描述

[root@localhost ~]# ls  -ld    /etc/
[root@localhost ~]# ls  -l      /etc/passwd
[root@localhost ~]# ls  -ld    /root
[root@localhost ~]# ls  -ld    /tmp       #有附加权限
[root@localhost ~]# ls  -l      /etc/shadow
[root@localhost ~]# useradd   zhangsan
[root@localhost ~]# ls   -ld    /home/zhangsan

Linux中判断用户具备的权限:

  1. 查看用户,对于该数据所处的身份
  2. 查看相应身份的权限位

3.修改数据的权限chmod

•chmod命令
格式:chmod [ugoa] [±=][rwx] 文件…
•常用命令选项
-R:递归修改权限

[root@localhost ~]# mkdir   /nsd10
[root@localhost ~]# ls   -ld   /nsd10
[root@localhost ~]# chmod   u-w    /nsd10    #所有者去掉w权限
[root@localhost ~]# ls -ld    /nsd10    
[root@localhost ~]# chmod   u+w  /nsd10     #所有者加上w权限
[root@localhost ~]# ls  -ld   /nsd10
[root@localhost ~]# chmod   g+w   /nsd10     #所属组加上w权限
[root@localhost ~]# ls   -ld    /nsd10
[root@localhost ~]# chmod    g=r    /nsd10    #所属组重新定义权限
[root@localhost ~]# ls    -ld    /nsd10
[root@localhost ~]# chmod    a=rwx    /nsd10   #a表示所有人
[root@localhost ~]# ls   -ld     /nsd10
[root@localhost ~]# chmod  u=---,g=rx,o=rwx     /nsd10
[root@localhost ~]# ls   -ld   /nsd10

-R:递归修改权限

[root@localhost ~]# mkdir   -p   /opt/aa/bb/cc
[root@localhost ~]# chmod  -R   a=rwx   /opt/aa
[root@localhost ~]# ls   -ld     /opt/aa
[root@localhost ~]# ls   -ld     /opt/aa/bb
[root@localhost ~]# ls   -ld     /opt/aa/bb/cc

案例:设置基本权限

1)以root身份新建/dir目录,在此目录下新建readme.txt文件
[root@localhost ~]# mkdir  /dir      
[root@localhost ~]# echo  123456   >  /dir/readme.txt
[root@localhost ~]# cat    /dir/readme.txt   
2)使用户zhangsan能够修改readme.txt文件内容
[root@localhost ~]# chmod  o+w   /dir/readme.txt
3)使用户zhangsan不可以修改readme.txt文件内容
[root@localhost ~]# chmod  o-w   /dir/readme.txt
4)使用户zhangsan能够在此目录下创建/删除子目录
[root@localhost ~]# chmod  o+w   /dir/
5)调整此目录的权限,使任何用户都不能进入,然后测试用户zhangsan是否还能查看readme.txt内容(测试结果是不能,对父目录没有权限)
[root@localhost ~]# chmod  a-x   /dir/
6)为此目录及其下所有文档设置权限 rwxr-x---
[root@localhost ~]# chmod -R  u=rwx,g=rx,o=---   /dir

权限利用数字方式表示
• 权限位的8进制数表示
– r、w、x分别对应4、2、1,后3组分别求和
分组: User权限 Group权限 Other权限
字符: r w x r - x r - x
数字: 4 2 1 4 0 1 4 0 1
求和: 7 5 5

r 4
w 2
x 1

u rwx 4+2+1 7
g r-x 4+1 5
o r-x 4+1 5
755

u rwx 421 7
g rx 401 5
o rx 401 5

[root@localhost ~]# mkdir   /nsd14
[root@localhost ~]# ls  -ld   /nsd14
[root@localhost ~]# chmod   700    /nsd14
[root@localhost ~]# ls   -ld   /nsd14
[root@localhost ~]# chmod   007   /nsd14
[root@localhost ~]# ls   -ld   /nsd14
[root@localhost ~]# chmod    750    /nsd14
[root@localhost ~]# ls   -ld   /nsd14
[root@localhost ~]# chmod    755    /nsd14
[root@localhost ~]# ls   -ld   /nsd14

4.chown修改归属关系

•chown命令

–chown 属主 文件…
–chown 属主:属组 文件…
–chown :属组 文件…

[root@localhost ~]# mkdir  /nsd15
[root@localhost ~]# ls -ld   /nsd15
[root@localhost ~]# groupadd   tmooc   #创建组tmooc
[root@localhost ~]# useradd  lisi       #创建用户lisi
[root@localhost ~]# chown   lisi:tmooc  /nsd15   #修改所有者与所属组
[root@localhost ~]# ls  -ld  /nsd15
[root@localhost ~]# chown   zhangsan   /nsd15   #仅修改所有者
[root@localhost ~]# ls   -ld   /nsd15
[root@localhost ~]# chown   :root  /nsd15     #仅修改所属组
[root@localhost ~]# ls   -ld    /nsd15

常用命令选项

-R:递归修改归属关系

    [root@localhost ~]# mkdir   -p   /opt/aa/bb/cc
    [root@localhost ~]# chown     -R   zhangsan   /opt/aa   #递归修改归属关系
    [root@localhost ~]# ls   -ld  /opt/aa
    [root@localhost ~]# ls   -ld  /opt/aa/bb
    [root@localhost ~]# ls   -ld  /opt/aa/bb/cc
    [root@localhost ~]# chown     -R   lisi:tmooc   /opt/aa 
    [root@localhost ~]# ls   -ld  /opt/aa
    [root@localhost ~]# ls   -ld  /opt/aa/bb
    [root@localhost ~]# ls   -ld  /opt/aa/bb/cc

Linux中判断用户具备的权限:
1.查看用户,对于该数据所处的身份,
顺序所有者>所属组>其他人,原则是匹配即停止

2.查看相应身份的权限位

例如:
1.所有人不能进入
2.牛老师可以进入

案例2:归属关系练习
1)利用root的身份新建/tarena目录,并进一步完成下列操作

[root@localhost ~]# mkdir  /tarena         

2)将/tarena属主设为gelin01,属组设为tmooc组

[root@localhost ~]# useradd    gelin01              
[root@localhost ~]# groupadd   tmooc
[root@localhost ~]# chown   gelin01:tmooc    /tarena

3)使用户gelin01对此目录具有rwx权限,除去所有者与所属组之外的用户对此目录无任何权限

[root@localhost ~]# chmod  o=---  /tarena

4)使用户gelin02能进入、查看此目录内容

[root@localhost ~]# useradd  gelin02
[root@localhost ~]# gpasswd  -a  gelin02  tmooc 

5)将gelin01加入tmooc组,将/tarena目录的权限设为r–r-x—,测试gelin01用户能否进入此目录(匹配立即停止原则,不能进入)

[root@localhost ~]# gpasswd  -a  gelin01   tmooc 
[root@localhost ~]# chmod   u=r,g=rx   /tarena

5.ACL策略管理

•文档归属的局限性:
–任何人只属于三种角色:属主、属组、其他人
–针对特殊的人实现更精细的控制
•acl访问策略作用:
–能够对个别用户、个别组设置独立的权限

•setfacl命令
–格式:

setfacl [选项] u:用户名:权限 文件...
setfacl [选项] g:组名:权限 文件...

•常用命令选项
-m:修改ACL策略
-x:清除指定的ACL策略
-b:清除所有已设置的ACL策略
-R:递归设置ACL策略

[root@localhost ~]# mkdir    /nsd19
[root@localhost ~]# chmod    770   /nsd19        
[root@localhost ~]# ls   -ld   /nsd19
[root@localhost ~]# useradd  dc
[root@localhost ~]# su  -   dc
[dc@localhost ~]$ cd     /nsd19
-bash: cd: /nsd19: 权限不够
[dc@localhost ~]$ exit
[root@localhost ~]# setfacl   -m   u:dc:rx   /nsd19   #单独赋予dc用户权限
[root@localhost ~]# getfacl   /nsd19         #查看ACL策略
[root@localhost ~]# su  -   dc 
[dc@localhost ~]$ cd    /nsd19
[dc@localhost ~]$ pwd
[dc@localhost ~]$ exit

Linux中判断用户具备的权限:

1.首先查看该用户或者组是否有ACL策略
2.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止
3.查看相应身份的权限位

ACL命令的练习:

[root@localhost ~]# mkdir     /nsd22                    
[root@localhost ~]# setfacl  -m  u:dc:rx    /nsd22
[root@localhost ~]# setfacl  -m  u:zhangsan:rwx    /nsd22
[root@localhost ~]# setfacl  -m  u:lisi:rx     /nsd22
[root@localhost ~]# setfacl  -m  u:gelin01:rwx    /nsd22
[root@localhost ~]# getfacl    /nsd22    
[root@localhost ~]# setfacl   -x  u:zhangsan  /nsd22  #删除指定用户ACL
[root@localhost ~]# getfacl   /nsd22
[root@localhost ~]# setfacl   -x  u:dc   /nsd22     #删除指定用户ACL
[root@localhost ~]# getfacl   /nsd22
[root@localhost ~]# setfacl   -b   /nsd22    #清除目录所有ACL策略
[root@localhost ~]# getfacl    /nsd22

ACL策略-黑名单的使用(单独拒绝某些用户)

[root@localhost ~]# mkdir  /home/public                
[root@localhost ~]# chmod  777  /home/public
[root@localhost ~]# setfacl  -m   u:lisi:---    /home/public
[root@localhost ~]# getfacl   /home/public
su - lisi 
cd/home/public 权限不够
ls /home/public 无法打开目录,权限不够

-R:递归设置ACL策略

[root@localhost ~]# setfacl  -Rm    u:dc:rwx    /opt/aa
[root@localhost ~]# getfacl   /opt/aa
[root@localhost ~]# getfacl   /opt/aa/bb

ACL常见问题

在这里插入图片描述

给组设置ACL

在这里插入图片描述

6.附加权限(特殊权限)(3种)

6.1 第1种:•粘滞位,Sticky Bit 权限

–占用其他人(Other)的 x 位
–显示为 t 或 T,取决于其他人是否有 x 权限。t:有执行权限,T:没有执行权限。
适用于目录,用来限制用户滥用写入权
–在设置了t权限的目录下,即使用户有写入权限,也不能删除或改名其他用户文档

[root@localhost ~]# mkdir    /nsd26   
[root@localhost ~]# chmod  777    /nsd26
[root@localhost ~]# ls   -ld    /nsd26
[root@localhost ~]# chmod   o+t    /nsd26
[root@localhost ~]# ls   -ld    /nsd26
su - zhangsan
cd /nsd26
touch zhangsan.txt

su - lisi
cd /nsd26
touch lisi.txt

su - dc 
cd /nsd26
touch dc.txt
rm -rf zhangsan.txt #无法删除,不允许的操作
mv dc.txt a.txt# 无法移动:不允许的操作

6.2 第2种:•Set GID权限(SGID权限)

–占用属组(Group)的 x 位
–显示为 s 或 S,取决于属组是否有 x 权限
–对目录有效
–在一个具有SGID权限的目录下,新建的文档会自动继承父目录的属组身份

[root@localhost ~]# mkdir   /nsd18                    
[root@localhost ~]# chown   :tmooc   /nsd18   #修改所属组
[root@localhost ~]# ls  -ld   /nsd18
[root@localhost ~]# chmod  g+s  /nsd18     #赋予SGID特殊权限
[root@localhost ~]# ls -ld    /nsd18
[root@localhost ~]# mkdir    /nsd18/abc01
[root@localhost ~]# ls   -ld   /nsd18/abc01
[root@localhost ~]# mkdir   /nsd18/abc02
[root@localhost ~]# ls   -ld  /nsd18/abc02
[root@localhost ~]# touch    /nsd18/1.txt
[root@localhost ~]# ls  -ld  /nsd18/1.txt

6.3 第3种:附加权限Set UID(SUID)权限(了解)

占用属主(User)的 x 位
显示为 s 或 S,取决于属主是否有 x 权限
仅对可执行的程序有意义
当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限

[root@localhost ~]# which mkdir
[root@localhost ~]# /usr/bin/mkdir   /opt/abc01
[root@localhost ~]# ls     /opt/
[root@localhost ~]# cp /usr/bin/mkdir  /opt/hahadir
[root@localhost ~]# ls   -l    /opt/hahadir
[root@localhost ~]# /opt/hahadir    /opt/abc02
[root@localhost ~]# ls    /opt/
[root@localhost ~]# chmod   u+s   /opt/hahadir 
[root@localhost ~]# ls  -l   /opt/hahadir
[root@localhost ~]# su  -  zhangsan
[zhangsan@localhost ~]$ mkdir    zs01
[zhangsan@localhost ~]$ ls    -l
[zhangsan@localhost ~]$ /opt/hahadir      zs02
[zhangsan@localhost ~]$ ls    -l

在这里插入图片描述
在这里插入图片描述

创建目录时,指定目录的权限

[root@localhost ~]# mkdir  -m  700   /opt/cbd03
[root@localhost ~]# ls   -ld   /opt/cbd03
[root@localhost ~]# mkdir  -m  777   /opt/cbd04
[root@localhost ~]# ls    -ld    /opt/cbd04

6.4 权限利用数字的方式表示

基本权限:
利用数字4表示读取权限®
利用数字2表示写入权限(w)
利用数字1表示执行权限(x)

附加权限:了解
利用数字4表示suid
利用数字2表示sgid
利用数字1表示t

在这里插入图片描述

7.文件/目录的默认权限

• 新建文件/目录的默认权限
– 一般文件默认均不给 x 执行权限
– 其他取决于 umask(权限掩码) 设置
– 新建目录默认权限为755
– 新建文件默认权限为644

在这里插入图片描述

[root@localhost ~]# umask            
0022
[root@localhost ~]#  umask -S   #显示新建目录的默认权限
u=rwx,g=rx,o=rx
[root@nb ~]# mkdir -m  777  /nsd26   #-m无视umask值创建数据指定数据的权限
[root@nb ~]# ls   -ld   /nsd26

实现natasha用户新建数据,目录权限为700文件为600

[root@nb ~]# useradd  natasha
[root@nb ~]# vim   /home/natasha/.bashrc  #修改家目录配置文件
...
umask   077         #新增配置,指定权限掩码值
...

[root@nb ~]# su  -  natasha
[natasha@nb ~]$ umask 
0077
[natasha@nb ~]$ mkdir    abc
[natasha@nb ~]$ ls   -ld   abc
drwx------. 2 natasha natasha 6 223 17:27 abc
[natasha@nb ~]$ exit

8.手动建立用户家目录

/etc/skel是新建用户时,会以此目录作为模板建立用户家目录

]# useradd    harry
]# rm  -rf   /home/harry

]# cp  -r    /etc/skel     /home/harry
]# chown   -R   harry:harry   /home/harry
]# ls   -lA    /home/harry
]# su  -  harry
[harry@localhost ~]$ pwd
[harry@localhost ~]$ exit

请问实现lisi用户可以读取/etc/shadow文件内容,您有几种办法?(至少写出三种以上)

  1. 利用其他人身份
chmod  o+r  /etc/shadow
  1. 利用所属组身份
chown  :lisi  /etc/shadow
chmod  g+r  /etc/shadow
  1. 利用所有者身份
chown  lisi  /etc/shadow
chmod  u+r  /etc/shadow
  1. 利用ACL策略
setfacl  -m  u:lisi:r  /etc/shadow

9.常见故障:递归设置权限错误

[root@nb ~]#  mkdir  /nsd26
[root@nb ~]#  mkdir  /nsd26/haha
[root@nb ~]#  mkdir /nsd26/xixi
[root@nb ~]#  touch  /nsd26/1.txt
[root@nb ~]#  touch   /nsd26/2.txt
[root@nb ~]#  chmod   -R  000    /nsd26
[root@nb ~]#  ls  -ld   /nsd26
[root@nb ~]#  ls   -l   /nsd26
[root@nb ~]#  find   /nsd26   -type   d  -exec  chmod  755  {}   \;
[root@nb ~]#  ls   -l   /nsd26
[root@nb ~]#  find   /nsd26   -type  f  -exec  chmod  644   {}    \;
[root@nb ~]#  ls   -l   /nsd26

10.课后练习

练习3:权限设置(参考答案)

1、 创建文件夹/data/test,设置目录的访问权限,使所有者和所属组具备读写执行的权限;其他人无任何权限。

[root@A ~]# mkdir  -p   /data/test 
[root@A ~]# chmod 770  /data/test

2、 递归修改文件夹/data/test的归属使所有者为zhangsan,所属组为tarena。

[root@A ~]# chown -R  zhangsan:tarena  /data/test
[root@A ~]# ls -ld  /data/test

3、 请实现在test目录下,新建的所有子文件或子目录的所属组都会是tarena。

[root@A ~]# chmod  g+s   /data/test
[root@A ~]# mkdir /data/test/abc
[root@A ~]# ls -ld  /data/test/abc

4、为lisi创建ACL访问权限,使得lisi可以查看/etc/shadow文件

  [root@A ~]# setfacl  -m   u:lisi:r  /etc/shadow
  [root@A ~]# getfacl  /etc/shadow
Linux Rocky Linux系统上,如果你想要设置Samba服务允许用户对自己的新创建文件拥有完全权限,而对他人的文件只有读取权限,你可以按照以下步骤操作: 1. **安装Samba**: 首先确保已经安装了Samba,如果没有,可以使用命令 `sudo dnf install samba` 或者 `sudo yum install samba`。 2. **配置smb.conf**: Samba的权限控制主要通过`smb.conf`配置文件。找到该文件通常位于 `/etc/samba/smb.conf`,然后使用文本编辑器打开它。 3. **创建用户组和用户**: 创建一个新用户组,例如 "users",并为需要这种权限用户添加到这个组,比如 "user1"。添加行如: ``` [group] users = user1 ``` 4. **设置共享目录**: 对于希望提供特定权限的共享目录,例如 `/path/to/share`,在`smb.conf`里创建一个共享区段,并指定用户权限: ``` [share] path = /path/to/share writable = yes guest ok = no create mask = 0755 directory mask = 0755 force user = users ``` - `writable = yes` 表示其他用户只能读取,用户组内的成员有写入权限。 - `create mask` 和 `directory mask` 设置新文件和目录默认权限。 - `force user = users` 确保所有操作都以用户用户的身份执行。 5. **重启Samba服务**: 完成配置后,使用 `sudo systemctl restart smb` 或 `sudo systemctl restart nmb` 重启Samba服务,让更改生效。 请注意,这将授予所有属于 "users" 组的成员对共享目录的新文件写权限,而对已存在的文件仅保留读权限。如果需要更精细的控制,可以进一步研究smb.conf的更多选项,例如 `read only`、`permissions` 等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FBI HackerHarry浩

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值