1. 文件权限目录
小结:
Linux中普通文件的读,写,执行权限
环境:在root环境下创建文件,修改权限,在oldboy 环境下查看修改 文件内容
*如果没有r权限,可以用vi编辑器,输入:wq!可以强制覆盖,原文件内容被清除,因此可用echo追加内容到文件。
*可执行权限x 表示具有执行文件的权限
① 文件本身要有执行权限才能执行
./songGeedu.txt :Permission denied 权限不足 权限拒绝
#./ 是路径 不要有空格
下面三种方法都是通过其他命令实现的
#. / 这里.是个命令 跟source
source songGeedu.txt
sh songGeedu.txt
② 普通用户必须还要有r权限才能够执行,无r就不能执行
③ root 即时没有r权限,只要有x权限就能执行
④ root 用户 有没有没关系,其他人有的权限它就能执行
*用户所属于组,一个用户可以所属多个组。用户组的权限可以理解为除root用户外所属该组的其他用户权限。用户组有权限,但是用户没有,用户组可以执行用户组给与的权利,同样的文件,看你是什么用户查看
[root@songGeedu ~]# ll -d /root/
dr-xr-x---. 5 root root 4096 May 23 18:49 /root/
[root@songGeedu ~]# ll -d /root/
dr-xr-x---. 5 root root 4096 May 23 18:49 /root/
[root@songGeedu ~]# cd /
[root@songGeedu /]# echo "songGeedu">>songGeedu.txt
[root@songGeedu /]# ll -h songGeedu.txt
-rw-r--r-- 1 root root 10 May 25 10:01 songGeedu.txt
[root@songGeedu /]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
#属于其他用户
[root@songGeedu /]# echo "echo hello boy" >songGeedu.txt
[root@songGeedu /]# cat songGeedu.txt
echo hello boy
[root@songGeedu /]# ll -h songGeedu.txt
-rw-r---w- 1 root root 15 May 25 10:38 songGeedu.txt
[root@songGeedu /]# chmod u+x songGeedu.txt
[root@songGeedu /]# ll -h songGeedu.txt
-rwxr---w- 1 root root 15 May 25 10:38 songGeedu.txt
[root@songGeedu /]# . /songGeedu.txt
hello boy
Linux 中目录的读写执行权限
文件属性要看文件本身的权限
文件名的修改要看上级目录的权限
错误范例:
A: 老师的下面没报./songGeedu.txt: line 2: I: command not found
B:songGeedu.txt里多写了其他内容,比如有个大写字母I
#因为我们要看文本的执行权限,所以给文本中自带命令
r 具有浏览目录下文件以及子目录的权限 即 ls data
① 通过ls data能看见文件名,但是无权限访问目录下文件
② 通过ll ,所有的文件属性都是??,只能看到文件名
③ 只有r权限我们是无法进入目录的
w 表示增加修改文件名的权限,必须配合x权限配合
① 增加不是内容,而是一个新的文件 文件名
② 修改 不是文件内容(这个看文件本身权限),只能修改文件名,重命名文件(文件名在目录的block,看目录的权限w就可以)
补充:我们删除文件实际删除这个文件名字,这样就无法指向这个文件的inode节点,当没有文件名指向这个inode节点的时候,系统会同时释放inode节点和存放这个文件的数据块,并更新inode MAP 和block MAP 让这些位置 可以用于 放置 其他新的文件数据。
1.为什么目录设置755 rwx r-x r-x,文件644 rw- r-- r—
系统安全,不管操作系统还是网站站点目录,上面的755 644 是安全与便捷的临界点,大了不安全,小了操作繁琐。
① 目录755 文件611 是相对安全的权限
② 用户和用户组都是root
以上 是为 兼顾 安全和使用,在生产中我们的文件(644)和目录(755)
应该保持默认权限和用户组(root root)即可,不可随意随意更改。
Linux系统默认权限方针: 知识允许浏览 查看 但是禁止 随意创建 修改 删除文件 和修改文件内容
2. 为什么我们创建的目录权限是755,文件是644,这是怎么来的?
文件的默认权限是由umask 控制的。umask 通过八进制数值来定义用户创建的文件或目录权限,umask数值表示禁止具体的权限。
网站存放目录 /var/www/html
网址为 swordsman –sed.html 拜访网站时,我们设置权限为drwxr-xr-x root root www
#www 是属于里一个普通用户(web 服务)
用id 查看 用户属于哪个组
[root@songGeedu ~]# useradd oldgirl -g root
[root@songGeedu ~]# id oldgirl
uid=501(oldgirl) gid=0(root) groups=0(root)
[root@songGeedu ~]# sed -n '61,64p' /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
[oldboy@songGeedu ~]$ umask
0002
[oldboy@songGeedu ~]$ id oldgirl
uid=501(oldgirl) gid=0(root) groups=0(root)
[oldboy@songGeedu ~]$ id -gn
oldboy
[oldboy@songGeedu ~]$ id -un
oldboy
文件的最大权限值666
目录的最大权限 777
设定umask 值 ,然后创建文件和目录,在通过ll或者ls –d 查看,
文件 666-007 659 660
目录 777-007 770
文件 666-122 544 644
目录 777-122 655
总结:临时:
umask 创建普通文件 对应的权限值 为666-umask 【奇数位加1】
目录文件 直接相减【777-umask】
工作中不需要修改umask 值,因为默认权限就是最好的
永久生效: 修改配置文件/etc/profile
[root@songGeedu ~]# ll -h /etc/passwd /etc/shadow /etc/group /etc/gshadow
-rw-r--r-- 1 root root 587 Apr 26 19:07 /etc/group
---------- 1 root root 480 Apr 26 19:07 /etc/gshadow
-rw-r--r-- 1 root root 1.2K May 26 00:15 /etc/passwd
---------- 1 root root 854 May 26 00:15 /etc/shadow
[root@songGeedu ~]# ll -h `which passwd`
-rwsr-xr-x. 1 root root 31K Feb 22 2012 /usr/bin/passwd
[root@songGeedu ~]# chmod u-s `which passwd`
[root@songGeedu ~]# ll -h `which passwd`
-rwxr-xr-x. 1 root root 31K Feb 22 2012 /usr/bin/passwd
setuid
【关于suid】
1.用户或属主对应头三位权限的x位如果有s 就表示setuid 权限,
当X位置上没有x,suid 就会显示S
2.suid 作用是让普通用户可以以root (或其他用户)的用户角色运行只有root (或者其他用户)才能运行的程序或命令,或者是程序命令本身没有权限操作的文件
3 仅对二进制命令生效,不能用 shell 等脚本上
4 二进制程序需要x权限配合
5 suid 权限仅仅是执行的那一段时间生效的
【案例】希望oldboy 用户能够删除一个原来删除不了的文件?
a 设置上一级目录的写权限
b 给rm 命令设置suid 粗粒度,其他用户都有此权限,针对命令授权
c sudo 授权 针对用户授权 oldboy 有rm 权限,其他用户没有,细粒度
【setuid】
设置 setuid (简写suid)
chmod u+s file
chmod 4755 file
chmod 4644 file
【setgid】
作用: 对文件和目录设置
例如:chmod 2644 install.log 或者chmod g+s install.log
特别说明:
1. 与suid不同的是,sgid既可针对文件也可针对目录设置
2. sgid 是针对用户组权限为修改的
【对文件来说,sgid功能】
1. sgid 仅对二进制命令程序有效
2. 二进制命令程序需要有可执行权限x配合
3. 执行程序的任意系统用户都可以获得该命令程序在执行期间所有组的权限。
4. locate命令都具备slocate 组的权限