权限管理
一、概述
Linux通过rwx3种权限控制系统与保护系统,组成9位权限
Linux权限体系还有3位特殊权限,组合起来就是12位权限体系
Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系
二、Linux权限计算
1.rwx
权限 | 含义 | |
---|---|---|
r | read 是否可读 | |
w | write 是否可写 | |
x | execute 是否可执行(一般是命令,脚本) |
2. 9位权限
文件、目录与用户的关系 | 含义 | |
---|---|---|
所有者 | 这个文件或目录属于某个用户(所有者) | |
用户组(家庭) | 这个文件或目录属于某个用户组(家庭) | |
其他人(陌生人) | 这个文件或目录不属于某个用户,也不属于这个用户组 |
3. 如何计算权限
人们为了更加的方便的使用权限,于是给每个权限字母设置了一个对应的数字,通过数字表示对应的权限
权限 | 含义 | 权限对应的数字 |
---|---|---|
r | read 是否可读 | 4 |
w | write 是否可写 | 2 |
x | execute 是否可执行 | 1 |
- | 没有权限 | 0 |
字母-->数字
-rwxr-xr-x 755
-r--r--r-- 444
-r--rw-rw- 466
数字-->字母(文件)
644 -rw- r-- r--
750 -rwx r-x ---
700 -rwx --- ---
600 -rw- --- ---
4. 修改权限
chmod命令: change mode 使用数字或字母形式修改权限
chown命令: change owner 修改文件所有者,用户组
[root@lnh ~]# touch oldboy.txt
[root@lnh ~]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 7 21:24 oldboy.txt
#修改oldboy.txt的权限为755.
[root@lnh ~]# chmod 755 oldboy.txt
[root@lnh ~]# ll
total 0
-rwxr-xr-x. 1 root root 0 Dec 7 21:24 oldboy.txt
#修改oldboy.txt所有者和用户组为oldboy(存在)。
[root@lnh ~]# chown oldboy.oldboy oldboy.txt
[root@lnh ~]# ll
total 0
-rwxr-xr-x. 1 oldboy oldboy 0 Dec 7 21:24 oldboy.txt
#修改oldboy.txt的权限为读写
[root@lnh ~]# chmod u=rw oldboy.txt
[root@lnh ~]# ll
total 0
-rw-r-xr-x. 1 oldboy oldboy 0 Dec 7 21:24 oldboy.txt
#给/etc/rc.d/rc.local(所有位置)增加执行权限
chmod u+x,g+x,o+x /etc/rc.d/rc.local
chmod ugo+x /etc/rc.d/rc.local
chmod a+x /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
三、权限与文件,目录
1.概述
权限 | 文件 | 目录 |
---|---|---|
r | 是否可以读取文件内容 (r) | 是否可以查看目录内容,需要x权限配合 (rx) |
w | 是否可以修改文件内容,一般还需要 r权限配合 (rw) | 是否可以在目录中创建删除,重命令文件权限, 需要x 权限配合 (rwx) |
x | 是否可以执行文件,一般还需要r权限配合(rwx,rx) | 是否可以进入目录,是否可以访问目录下文件属性(rx,rwx) |
2.测试文件权限
通过root修改权限,oldboy用户来测试权限
[root@lnh ~]# mkdir /oldboy/
[root@lnh ~]# echo 'hostname' > /oldboy/oldboy.sh
[root@lnh ~]# ll /oldboy/
total 4
-rw-r--r--. 1 root root 9 Dec 7 21:36 oldboy.sh
[root@lnh ~]# chown oldboy.oldboy /oldboy/oldboy.sh
[root@lnh ~]# chmod 777 /oldboy/oldboy.sh
[root@lnh ~]# ll /oldboy/
total 4
-rwxrwxrwx. 1 oldboy oldboy 9 Dec 7 21:36 oldboy.sh
2.1 root用户整体测试读,写,执行
[root@lnh ~]# cd /oldboy/
[root@lnh oldboy]# ll oldboy.sh
-rwxrwxrwx. 1 oldboy oldboy 9 Dec 7 21:36 oldboy.sh
#读取
[root@lnh oldboy]# cat oldboy.sh
hostname
#写入
[root@lnh oldboy]# echo 'pwd' >> oldboy.sh
[root@lnh oldboy]# cat oldboy.sh
hostname
pwd
#执行
[root@lnh oldboy]# ./oldboy.sh
lnh
/oldboy
2.2 oldboy用户测试文件的r权限
[root@lnh oldboy]# chmod 000 oldboy.sh
[root@lnh oldboy]# chmod u+r oldboy.sh
[root@lnh oldboy]# ll oldboy.sh
-r--------. 1 oldboy oldboy 13 Dec 7 21:38 oldboy.sh
[oldboy@lnh ~]$ cd /oldboy/
[oldboy@lnh oldboy]$ ll
total 4
-r--------. 1 oldboy oldboy 13 Dec 7 21:38 oldboy.sh
[oldboy@lnh oldboy]$ cat oldboy.sh
hostname
pwd
[oldboy@lnh oldboy]$ echo 'pwd' >> oldboy.sh
-bash: oldboy.sh: Permission denied
[oldboy@lnh oldboy]$ ./oldboy.sh
-bash: ./oldboy.sh: Permission denied
2.3 oldboy用户测试文件的w权限
[root@lnh oldboy]# chmod u=w oldboy.sh
[root@lnh oldboy]# ll
total 4
--w-------. 1 oldboy oldboy 13 Dec 7 21:38 oldboy.sh
[oldboy@lnh oldboy]$ cat oldboy.sh
cat: oldboy.sh: Permission denied
[oldboy@lnh oldboy]$ echo 'pwd' >> oldboy.sh
[oldboy@lnh oldboy]$ ./oldboy.sh
-bash: ./oldboy.sh: Permission denied
结论:
核心:对于文件来说只有w权限不够,需要有r权限配合
如果文件只有w只能通过追加方式写入,如果vi/vim 写入会清空文件内容只留最新的(:wq!)
2.4 oldboy用户测试文件的x权限
[root@lnh oldboy]# chmod u=x oldboy.sh
[root@lnh oldboy]# ll
total 4
---x------. 1 oldboy oldboy 17 Dec 7 21:43 oldboy.sh
[oldboy@lnh oldboy]$ cat oldboy.sh
cat: oldboy.sh: Permission denied
[oldboy@lnh oldboy]$ echo 'pwd' >> oldboy.sh
-bash: oldboy.sh: Permission denied
[oldboy@lnh oldboy]$ ./oldboy.sh
bash: ./oldboy.sh: Permission denied
结论:
x权限需要有r配合
3.测试目录权限
[root@lnh oldboy]# mkdir oldboydir
[root@lnh oldboy]# touch oldboydir/oldboy{01..03}.txt
[root@lnh oldboy]# chown oldboy.oldboy oldboydir/
[root@lnh oldboy]# ll
total 4
drwxr-xr-x. 2 oldboy oldboy 66 Dec 7 21:47 oldboydir
3.1 测试r权限
[root@lnh oldboy]# chmod u=r oldboydir/
[root@lnh oldboy]# ll
total 4
dr--r-xr-x. 2 oldboy oldboy 66 Dec 7 21:47 oldboydir
[oldboy@lnh oldboy]$ ls -l oldboydir/
ls: cannot access oldboydir/oldboy01.txt: Permission denied
ls: cannot access oldboydir/oldboy02.txt: Permission denied
ls: cannot access oldboydir/oldboy03.txt: Permission denied
total 0
-????????? ? ? ? ? ? oldboy01.txt
-????????? ? ? ? ? ? oldboy02.txt
-????????? ? ? ? ? ? oldboy03.txt
结论:
目录的r权限查看目录下的内容,如果只有r目录下的文件的属性信息无法查看提示“ ?”,目录的r权限需要x权限配合
对于目录x权限表示是否能够进入目录权限,是否能够查看与修改目录下文件的属性信息权限
3.2 测试w权限
[root@lnh oldboy]# chmod u=w oldboydir/
[root@lnh oldboy]# ll
total 4
d-w-r-xr-x. 2 oldboy oldboy 66 Dec 7 21:47 oldboydir
[oldboy@lnh oldboy]$ ls oldboydir/
ls: cannot open directory oldboydir/: Permission denied
[oldboy@lnh oldboy]$ \rm -rf oldboydir/*
rm: cannot remove ‘oldboydir/*’: Permission denied
[oldboy@lnh oldboy]$ touch oldboydir/oldboy.txt
touch: cannot touch ‘oldboydir/oldboy.txt’: Permission denied
结论:
目录的w权限表示在目录下面创建,删除,重命名文件,只有w还不够。
对于目录x权限表示是否能够进入目录权限,是否能够查看与修改目录下文件的属性信息权限
实际应用建议:如果要对某个目录拥有“写”权限,则授予目录rwx
4. 删除文件需要什么权限?必会
[root@lnh oldboy]# mkdir rm-dir
[root@lnh oldboy]# chown oldboy.oldboy rm-dir
[root@lnh oldboy]# ll
total 4
drwxr-xr-x. 2 oldboy oldboy 60 Dec 7 21:57 rm-dir
[root@lnh oldboy]# touch rm-dir/root{01..03}.txt
[root@lnh oldboy]# ll rm-dir/
total 0
-rw-r--r--. 1 root root 0 Dec 7 21:57 root01.txt
-rw-r--r--. 1 root root 0 Dec 7 21:57 root02.txt
-rw-r--r--. 1 root root 0 Dec 7 21:57 root03.txt
#问:oldboy能否删除rm-dir下面的文件
#答:删除文件看文件所在目录的权限 ,rm-dir目录权限为755,所有这是oldboy。所以可以删除
提示:
删除/创建文件,需要看我呢见所在目录的权限
用户对目录是否有rwx权限
5. Permission denied故障排查
cat /etc/shadow
ls -l /root/
echo '#oldboy' >/etc/passwd
touch /etc/oldboy-file.txt
/etc/shadow #/etc/shadow oldboy没有r权限
ls -l /root/ #oldboy没有rx权限
echo '#oldboy' >>/etc/passwd #oldboy没有w权限
touch /etc/oldboy-file.txt #oldboy没有w权限
小结:
日常操作 | 需要的权限 | |
---|---|---|
查看文件的内容 | 文件要有r权限 | |
编辑或修改文件内容 | 文件要有rw权限 | |
执行脚本/命令 | 文件需要有rx权限 | |
查看目录内容 | 目录要有rx权限 | |
创建,删除文件 | 文件所在目录要有rwx权限 | |
重命名 | 文件所在目录要有rwx权限 |
6、系统默认权限
Linux系统通过umask命令控制文件或目录的默认权限
如何控制:
一般文件最大权限位为666,目录最大为777
文件或目录最大权限减去umask的值,
文件umask如果是某一位是奇数,这一位需要减去umask的值后,这以为上要+1
[root@lnh ~]# umask
0022
文件默认权限
666
- 022
------------
644
目录默认权限:
777
- 022
----------
755
如果umask的值是012
文件默认权限:
666
- 012
---------
654
+1
-----------
664
目录默认权限:
777
- 012
-----------
765
四、Linux权限控制与系统安全
通过权限控制让系统安全
搭建网站来说:服务器权限的设置(这里说的网站的权限是修改未来存放代码的目录)
- 最小化原则:既要保证网站正常访问,也要保证网站安全
- 推荐配置:
- 文件 644 root root
- 目录 755 root root
- 网站在运行的时候需要用户:这个用户不推荐是用户,推荐虚拟用户www
五、3个特殊权限
[root@lnh ~]# ll -d /bin/passwd /tmp/ /bin/ssh-agent
-rwsr-xr-x. 1 root root 27856 Dec 8 10:36 /bin/passwd
---x--s--x. 1 root nobody 382216 Aug 9 2019 /bin/ssh-agent
drwxrwxrwt. 10 root root 160 Dec 8 15:17 /tmp/
Linux3位特殊权限 | 判断 | 含义 | 例子 |
---|---|---|---|
set uid === suid | 命令的u位置上有个s或者S,对应的权限数字是4 | 运行这个命令的时候相当于是这个命令的所有者权限 | passwd命令 |
sticky(粘贴) | 目录的o的位置上有个t,对应的权限数字是1 | 对于包含sticky权限的目录,每个用户都可以在目录下面创建内容,但是每个用户只能管理自己的文件 | /tmp 1777 |
set gid ===sgid | 命令的g位置上有个s或S,对应的权限数字是2 | 运行这个命令的时候相当于是这个命令的用户组的权限 |
六、Linux特殊属性
应用场景:预防重要文件或命令被修改
lsattr 查看这种特殊属性
chatrr 修改这种特殊属性
a属性: append 只能追加,文件只能新增内容,无法删除,无法修改,只能追加
i属性: immutable 不朽的,无法被毁灭的
[root@lnh ~]# lsattr
---------------- ./oldboy.txt
[root@lnh ~]# chattr +a oldboy.txt
[root@lnh ~]# cat oldboy.txt
oldboy
[root@lnh ~]# echo oldboy> oldboy.txt
-bash: oldboy.txt: Operation not permitted
[root@lnh ~]# \rm -rf oldboy.txt
rm: cannot remove ‘oldboy.txt’: Operation not permitted
[root@lnh ~]# chattr +i oldboy.txt
[root@lnh ~]# lsattr
----i----------- ./oldboy.txt
[root@lnh ~]# cat oldboy.txt
oldboy
[root@lnh ~]# \rm -rf oldboy.txt
rm: cannot remove ‘oldboy.txt’: Operation not permitted
[root@lnh ~]# echo oldboy> oldboy.txt
-bash: oldboy.txt: Permission denied
标签:oldboy,txt,管理,sh,lnh,Linux,权限,root
From: https://www.cnblogs.com/world-of-yuan/p/17013326.html