知识点小结
权限:
UGO普通权限:
文件共享时要考虑的权限问题:
1、此文件的属主有何权限
2、属组有何权限
3、其他人有何权限
查权限:ls -ld 文件名
权限值:r可读4 w可写2 x可执行1
权限中用户的类别:用户自己(属主)user 自家人(属组)group 其他人other
改权限:chmod 权限 文件名
改属主属组:chown 属主:属组 文件名
例:chown -v adm.bin a.txt
chmod -v 740 a.txt 或 chmod -v u=rwx,g=r,o=--- a.txt
FACL权限
ACL:文件访问控制列表。
命令:查 getfacl 设置:setfacl 选项 权限 文件名
例:setfacl -m u:tom:r a.txt
setfacl -x u:tom a.txt
S权限:
suid:让普通用户以命令属主的身份来执行命令。chmod u+s 文件名
sgid:继承目录的属组。chmod g+s 目录名
sticky:目录中每个用户只能删除自己的文件。chmod o+t 目录名
attr属性:
作用:防止root用户误删除、误修改。
命令:查lsattr 设置:chattr +ia 文件名
umask权限掩码:
作用:用来控制新建文件和目录的权限。
root的umask值:022 普通用户的umask值:002
文件权限算法公式:
新建文件的权限=满权限 - umask权限=666-022=644
新建目录的权限=满权限 - umask权限=777-022=755
umask=031
文件权限=666-(031-011)=646
目录权限=777-031=746
知识点较详细解释
文件权限:
目标:
1、如何查看文件基本权限,如何看懂文件权限
2、权限该如何分配
3、ACL权限
4、三个s权限
5、attr隐藏权限
6、umask的作用
1、如何查看文件基本权限,如何看懂文件权限
查看:ls -l 文件名 或 ls -ld 目录名
例:ls -ld /etc /etc/hosts 权限信息如下
drwxr-xr-x. 138 root root 8192 10月 27 16:56 /etc
-rw-r--r--. 1 root root 158 6月 7 2013 /etc/hosts
权限说明:
rwxr-xr-x由9位代码表示权限,每3个字符为一组。
以上红底色为属主(user)的访问权限,绿底色为属组(group)的访问权限,青底色为其他人(other)的访问权限。
r是读read,数字代号为4
w是写write,数字代号为2
x是执行execute,数字代号为1
root root 其中红字的root是文件的属主,蓝字的root是属组。
注:
权限对于文件来说的意义:
读r:用户可以用cat、head等命令查看其文件内容。
写w:用户可以用vim、vi、gedit等软件来修改内容。
执行x:用户可以运行此程序文件。命令和shell脚本必须有x可执行权限才能正常运行。
权限对于目录来说的意义:
读r:用户可以用ls命令查看其文件内容。
写w:用户可以用mkdir、rm、rmdir、touch等命令在文件夹中执行创建或删除操作。
执行x:用户可以用cd命令切换到此目录中。
警告:目录同时必须具有rwx权限时,才能正常在目录中执行创建或删除操作。
cat文件的权限分析:
文件的属主是root,他的权限是rwx可读可写可执行
文件的属组是root,组中成员的权限是r-x可读可执行,没有写权限
其他人的访问权限是r-x可读可执行,没有写权限
-------------------------
2、权限该如何分配
属主和属组设置的命令:chown -Rv 属主:属组 文件名 (注:-R是递归修改,-v是显示过程)
权限设置的命令:chmod -Rv 权限 文件名
权限修改中的代号如下:
u是改属主权限 g是改属组权限 o是改其他人的权限 a改所有人的权限
+添加权限 -减掉权限 =重设权限值
r可读4 w可写2 x可执行1 无权限0或-
具体修改参考:
chmod -v 0 /priv 将权限设置为--- --- ---,即清除所有权限
chmod -v u+rw /priv 给属主添加rw权限
chmod -v g+r,o+r /priv 给属组添加r权限,给其他人添加r权限
chmod -v a+wx /priv 给所有人添加wx权限
chmod -v u=rwx,g=rx,o=rx /priv 给目录指定需要的权限,等同于下面一条命令
chmod -v 755 /priv 将目录权限设置为755(rwx r-x r-x)
解释:7=4+2+1=rwx 5=4+1=r-x
3、FACL权限
FACL:是文件访问控制列表(File Access Control List)的缩写。用来实现在文件上对指定用户一对一精准授权功能的。
特点:1、FACL权限的优先级高于普通的ugo权限。 2、文件默认的FACL权限跟文件的ugo权限是相同的。
命令:
查:getfacl [选项] 文件名
设置:setfacl [选项] 权限 文件名
setfacl的选项:
-m 修改或添加acl权限
-x 删除指定的acl权限
-b 删除所有的acl权限
-k 删除默认的acl权限
-d 设置默认的acl权限,通常用于目录,后期在目录中创建的新文件将采用这个acl权限值
-R 递归设置目录及其子目录中的文件的acl权限
查的示例:getfacl /etc/hosts
设置FACL的实例:
setfacl -m u:u1:--- /etc/hosts 在hosts文件上给u1用户设置acl权限为---
getfacl /etc/hosts 查hosts文件的acl权限
setfacl -m g:u1:rw /etc/hosts 在hosts文件上给u1组设置acl权限为rw
setfacl -x u:u1 /etc/hosts 在hosts文件上删除u1用户的acl权限
setfacl -b /etc/hosts 在hosts文件上删除所有的acl权限
setfacl -dm u:u1:rw /priv 给/priv目录设置默认的acl权限
setfacl -k /priv 给/priv目录删除默认(default)的acl权限
setfacl -Rm u:u1:r /priv 递归设置/priv目录的acl权限
getfacl -R /priv 递归查询/priv目录的acl权限
setfacl -Rb /priv 递归删除/priv目录的acl权限
4、三个s权限
s权限也称为super超级权限,是用来提升权限的。包括suid、sgid、sticky bit这3个s权限。
suid权限:
功能:suid权限仅用于命令,让普通用户以命令的属主身份执行命令,数字代号是4(u+s)。系统中passwd命令默认就有suid权限(ls -l /usr/bin/passwd)。
测试1:查看/bin/cat命令和/etc/shadow的权限,然后切换到u1用户,执行cat /etc/shadow看是否能读这个文件(不能读)。退出u1用户。
ls -l /bin/cat /etc/shadow
su - u1
cat /etc/shadow 提示“权限不够”
exit
测试2:给/bin/cat命令设置suid权限(chmod -v u+s /bin/cat),然后切换到u1用户,执行cat /etc/shadow看是否能读这个文件(能读)。退出u1用户。最后去掉suid权限(chmod -v u-s /bin/cat)。
chmod -v u+s /bin/cat
su - u1
cat /etc/shadow 能正常查看文件内容,但这样是不安全的
exit
chmod -v u-s /bin/cat
sgid权限:
功能:sgid权限通常用于目录,目录中新创建的文件的属组会继承目录的属组。主要应用于做文件共享时。
设置方法:chmod -v g+s 目录名
例:删除旧的/priv目录,创建/priv目录,将/priv目录的属组改为adm,并添加sgid权限,other权限改为rwx。然后切换到u1用户,在/priv目录中创建文件a、b,查看a、b文件权限中的属组是谁,最后exit退出u1用户。
rm -rfv /priv
mkdir -pv /priv
chown -v :adm /priv
chmod -v g+s,o+rwx /priv
su - u1
cd /priv
touch a b
ls -l
exit
sticky bit粘滞位(粘着位)权限:
功能:sticky权限通常用于目录,每个用户仅能删除自己的文件,而不能删除别人的文件。通常用于文件共享时。系统中/tmp目录默认就有sticky权限(ls -ld /tmp )。
设置方法:chmod -v o+t 目录名
实例:依次创建u2、u3用户,删除/priv目录,再创建/priv目录,给/priv目录的other权限设置为rwx,并添加sticky权限。切换到u2用户,在/priv目录中创建u2文件,退出u2用户。切换到u3用户,在/priv目录中创建u3文件,尝试删除u2文件(应该无权限删除)。退出u3用户。
useradd u2
useradd u3
rm -rfv /priv
mkdir -pv /priv
chmod -v o+rwx,o+t /priv
su - u2
touch /priv/u2
exit
su - u3
touch /priv/u3
rm -fv /priv/u2
exit
chmod -v o-t /priv 给/priv目录去掉sticky权限
su - u3
rm -fv /priv/u2 能正常删除u2用户的文件/priv/u2
exit
5、attr隐含权限(隐藏权限)
attrib:是文件的隐含属性。用来防止root用户误删除或误修改内容。
查:lsattr -R 文件名
设置:chattr [-R] +ia 文件名
说明:i属性(或i权限)是禁止删除、禁止修改文件。
a属性是禁止删除,且允许向文件中追加内容。
例:date > a.txt
chattr +i a.txt
lsattr a.txt
date >> a.txt 无权限追加
rm -fv a.txt 无权限删除
chattr -i a.txt 去掉i权限
chattr +a a.txt 添加a权限
date >> a.txt 可以正常追加
rm -fv a.txt 无权限删除
cat a.txt
6、umask的作用
umask是权限掩码,用来控制用户新创建文件的权限。用umask命令查或修改权限掩码。系统中默认情况下,root用户的umask是022,普通用户的是002。
权限分析:当umask为022时的权限分析如下。
文件的满权限:666 权限计算:新建文件的权限=满权限 - umask权限=666-022=644
目录的满权限:777 权限计算:新建目录的权限=满权限 - umask权限=777-022=755
问题:当umask为031时,新建文件、目录的权限分别是多少?
666-031=635 文件权限这样算是错的,正确算法:rw- rw- rw-(666) 减掉 --- -wx --x(031)得rw- r-- rw-(646)
777-031=746 目录权限这样算是对的
注:umask属于环境变量,保存在/etc/profile或/etc/bashrc文件中。
grep umask /etc/profile /etc/bashrc