Linux 文件权限
Linux 文件权限
1.权限位说明:
linux文件权限由9位控制
rwx r-x r-x
属主位 属组位 其他用户权限位
r read 可读权限 4 w write 可写权限 2 x execute 可执行权限 1 - 没有权限 0 groupadd incahome 创建组 userdel -r oldboy 删除用户,连家目录也一起删除 useradd -g incahome oldboy 创建用户指定用户组 id oldboy 查看用户 或者 usermod -g incahome oldboy 修改用户所属主 chown oldboy,incahome /oldboy/test.txt 修改文件属主,属组 chmod 775 /oldboy/test.txt chmod u+x u代表属主 chmod g-r g代表属组 chmod o+r o代表其他
2.总结:linux普通文件的读写,执行权限说明
1.可读r:表示文件具有可读,阅读文件内容的权限 2.可写w:表示具有新增,修改文件内容的权限 1.如果没有r配合,那么vi会提示无法编辑,echo可以重定向或追加 2.特别提示:删除文件(修改文件名)的权限是受父目录的权限控制,和文件本身无关 3.可执行x:表示具有执行文件的权限 1.文件本身要能够执行 2.普通用户同时还要具备r的权限才能 3.root只要有x权限就能执行
有关文件删除的说明:
linux中的文件名是存在于父目录的block里面,并执行这个文件的inode节点,这个文件的inode节点再标记指向存放这个文件的block的数据块,我们删除一个文件,实际上并不清除inode节点和block数据。只是在这个文件的父目录里面的block中,删除这个文件的名字和这个文件inode对应关系,使这个文件名消失,并且无法指向这个文件的inode节点,当没有文件名指向这个inode节点的时候,系统会同时释放indoe节点和存放这个文件的数据块,并更新inode MAP 和block MAP,让这些位置可以用于放置其他新的文件数据。
3.总结:linux目录的读,写,执行权限说明
1.可读r:表示具有浏览目录下文件及子目录的权限 1.如果没有x权限,不能进到目录里,即无法cd dir 2.如果没有x权限,ls列表使可以看到所有文件名,但是会提示无权访问目录下的文件 3.如果ls -l列表,所有的属性都会带有问号,也会提示无权访问目录下的文件,但是可以看到文件名 2.可写w:表示具有增加,删除或修改目录内文件名的权限(需要x权限的配合) 3.可执行x:表示具有进入目录的权限
4.改变文件或目录权限的命令. chmod
chmod只有文件属主或root才能使用
改变权限的方式:
1.通过权限字母和操作符表达式
u(user) g(group) o(other) a(all) + 添加某个权限 - 取消某个权限 = 取消其他所有权限,赋予给定权限 chmod u+x test.sh 文件属主加x执行权限 chmod g-w test.sh 文件属组移除w写入权限 chmod o+x test.sh 给其他用户添加执行权限 chmod u=rwx test.sh 移除之前的权限,新增读写执行权限(rwx) chmod u+s chmod g+s /test 给目录添加sgid权限位,子目录及文件会继承
2.通过数字修改权限
chmod 755 test.sh 文件权限修改为 rwxr-xr-x chmod 644 test.sh rw-r--r-- 7代表 rwx 6代表 rw- 5代表 r-x 4代表 r-- 3代表 -wx 2代表 -w- 1代表 --x 0代表 ---
如果想把目录下所有文件或子目录也同时改变,需要加-R参数
5.权限分配原则
默认权限是安全权限的临界点,实际生产中尽量给这个临界点,或者小于这个临界点
6.默认权限分配的命令(umask)
为什么默认权限目录是755,文件是644
不管是操作系统还是网站站点目录,安全权限临界点:
1.目录744,文件644时相对安全的权限
2.并且用户为root已经用户组也是root
在linux下文件的默认权限是有umask值来决定的。
1.umask是通过八进制数来定义用户创建文件或目录的默认权限的
2.umask对应数值是禁止的权限。
文件目录权限一般计算方法
文件最初始默认权限是666,目录的初始默认权限为777,根据umask进行减法得到最终权限,umask都为偶数,直接相减,如果有奇数,奇数位减完后的结果再加1 1.假设umask值为:022(所有的位为偶数) 6 6 6 ==》文件起始权限 0 2 2 ==》umask的值 ------- 6 4 4 2.假设umask值为:045(所有为奇数的位要加1) 6 6 6 ==》文件其实权限 0 4 5 ==》umask值 ------- 6 2 1+1 6 2 2 ==》实际权限位
umask一般不会更改
7.suid
-rwsr-xr-x. 1 root root 30768 2012-02-22 19:48 /usr/bin/passwd
suid知识小结:是针对命令和二进制程序的
1.用户或属主对应的前三位权限x权限上如果有s就表示suid权限当x位上没有小写x执行权限的时候,suid的权限就会显示为大写S
2.suid作用是让普通用户可以以root的用户角色运行只有root帐号才能运行的命令,或程序命令对应本来没有权限操作文件等
注意su和sudo的区别,suid为某一个命令设置特殊权限
3.suid修改的是执行命令的passwd,而不是处理的目标文件/etc/shadow
4.仅仅对二进制程序有效,不能用在shell等类似脚本中
5.二进制命令程序需要有可执行x权限配合
6。suid权限仅仅在程序命令执行过程中有效
7.执行suid命令的任意系统用户都可以获得命令程序在执行期间对应拥有者的所有权限。
8.suid双刃剑,是一个比较危险的功能,对系统安全有一定威胁,系统suid的无用功能取消suid权利
8.特殊权限对应的数字小结:
suid 4000 权限字符s(S),用户位的x位上设置
授权方法:chmod 4755 /bin/rm 或 chmod u+s test
sgid 2000 权限字符s(S),用户组位的x位上设置
授权方法:chmod 2755 oldboy.txt或chmod g+s test
粘滞位1000 权限字符t(T),其他用户位的x位上设置
授权方法:chmode 1777 /tmp 或 chmod o+t /tmp
如果对应位有x,则字符权限表现为小写,否则为大写
tmp经典的粘滞位目录案例,特点:虽都有写权限,因此安全成为问题。常常是木马的第一手跳板地点
9.改变文件所属关系命令chown
chown(change owner)
当我们改变了一个文件的属主,我们使用的用户必须是该文件的属主而且同时是目标属组的成员,或root,只有root才能改变文件的属主
chown 语法 chown [选项] [所有者][:[组]] 文件 方法: chown 用户 文件或目录 # 仅仅授权用户 chown :组 文件或目录 # 仅仅授权组 等同于 chgrp 组 文件或目录 chown 用户:组 文件或目录 # 表示授权用户和组
强调:
1.其中的冒号':',可以用点号'.'替代
2.要授权的用户和组名,必须是系统里实际存在的
10.chattr,lsattr
chattr +i /etc/passwd 锁定文件,文件变为只读
chattr -i /etc/passwd 解锁文件
浙公网安备 33010602011771号