linux - 练习题 - 08 - 权限
Linux权限:
useradd username
su username
ctrl + d 退出用户
[oldboy@alice-01 data]$ touch test.txt
touch: cannot touch `test.txt': Permission denied
1)权限之rwx
2)如何知道我对某个文件有什么权限
3 ) 查看是谁,(whoami)
4 ) 你与这个文件或目录有什么关系 (ls -l /etc/hosts)
[oldboy@alice-01 data]$ ls -l /etc/hosts
-rw-r--r--. 2 root root 158 Aug 29 09:37 /etc/hosts
5)判断是否是一家子 (id, groups)
[oldboy@alice-01 data]$ id
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
6 ) 用户与权限的联系
7)权限的计算
r --- 4
w --- 2
x --- 1
- 0
-rw------
420000000
600
...
8 ) 修改权限 (chmod chown)
chmod == change mode
8.1. 使用数字的方式修改权限
[root@alice-01 data]# chmod 755 oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rwxr-xr-x. 1 root root 0 Nov 6 18:58 oldboy.txt
8.2.使用符号
对于文件:主人user(u),家人group(g),陌生人other(o)
u+x u-x u=x 先清空,后添加
[root@alice-01 data]# chmod u+x oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rwxr--r--. 1 root root 0 Nov 6 18:58 oldboy.txt
[root@alice-01 data]# chmod u=x oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
---xr--r--. 1 root root 0 Nov 6 18:58 oldboy.txt
[root@alice-01 data]# chmod u=rwx oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rwxr--r--. 1 root root 0 Nov 6 18:58 oldboy.txt
给文件添加执行权限
[root@alice-01 data]# chmod ugo+x oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rwxr-xr-x. 1 root root 0 Nov 6 18:58 oldboy.txt
[root@alice-01 data]# chmod a+x oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rwxr-xr-x. 1 root root 0 Nov 6 18:58 oldboy.txt
[root@alice-01 data]# chmod +x oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rwxr-xr-x. 1 root root 0 Nov 6 18:58 oldboy.txt
只有加执行权限,才可以这样玩!!!
8.3 修改文件的所有者和所属的用户组
chown = change owner
[root@alice-01 data]# chown oldboy.oldboy oldboy.txt
[root@alice-01 data]# ls -l oldboy.txt
-rw-r--r--. 1 oldboy oldboy 0 Nov 6 18:58 oldboy.txt
9)对于文件来说,rwx的含义
环境准备:
mkdir -p /oldboy
echo -e 'hostname\npwd' >/oldboy/alex.sh
[root@alice-01 oldboy]# chown oldboy.oldboy /oldboy/alex.sh
[root@alice-01 oldboy]# ll alex.sh
-rw-r--r--. 1 oldboy oldboy 13 Nov 6 20:00 alex.sh
root 用户下面修改,oldboy 下面看
[root@alice-01 oldboy]# chmod u=r alex.sh
[root@alice-01 oldboy]# ls -l alex.sh
-r--r--r--. 1 root root 13 Nov 6 20:00 alex.sh
oldboy用户下来验证这个权限
[oldboy@alice-01 oldboy]$ echo "ls -ld /root" >>alex.sh
bash: alex.sh: Permission denied
[oldboy@alice-01 oldboy]$ alex.sh
bash: alex.sh: command not found
root用户下面修改 w 的权限,可以写入文件,但是不能查看文件
[root@alice-01 oldboy]# chmod u=w alex.sh
[root@alice-01 oldboy]# ll alex.sh
--w-r--r--. 1 oldboy oldboy 13 Nov 6 20:00 alex.sh
bash: alex.ah: Permission denied
[oldboy@alice-01 oldboy]$ echo 'w' >>alex.sh
[oldboy@alice-01 oldboy]$ cat alex.sh
cat: alex.sh: Permission denied
root 用户下修改x的权限,
[root@alice-01 oldboy]# chmod u=x alex.sh
[root@alice-01 oldboy]# ll alex.sh
---xr--r--. 1 oldboy oldboy 14 Nov 6 20:30 alex.sh
[root@alice-01 oldboy]# chmod u=rx alex.sh
[root@alice-01 oldboy]# ll alex.sh
-r-xr--r--. 1 oldboy oldboy 14 Nov 6 20:30 alex.sh
[oldboy@alice-01 oldboy]$ /oldboy/alex.sh
alice-01
[oldboy@alice-01 oldboy]$ ll /etc/shadow
----------. 1 root root 728 Nov 6 19:02 /etc/shadow
root 对文件有默认读的权限
小结:
-
r 读取文件内容
-
w修改文件的内容,但是需要r的配合,没有r配合强制修改退出,会清空文件的内容。
3. x权限执行,需要r权限的配合
10)目录的权限,读写执行
r 查看目录里面的内容 ls
w 可以在目录里面创建 删除 重命名文件
x 执行,可以进入到这个目录。切换 cd
环境:
mkdir -p /oldboy/alexdir
chown oldboy.oldboy /oldboy/alexdir
touch /oldboy/alexdir/luffy{01..5}.txt
[root@alice-01 oldboy]# ll -d alexdir/
drwxr-xr-x. 2 oldboy oldboy 4096 Nov 6 21:15 alexdir/
[root@alice-01 oldboy]# chmod u=r alexdir/
[root@alice-01 oldboy]# ll -d alexdir/
dr--r-xr-x. 2 oldboy oldboy 4096 Nov 6 21:15 alexdir/
[oldboy@alice-01 oldboy]$ ls -l alexdir/
ls: cannot access alexdir/luffy05.txt: Permission denied
ls: cannot access alexdir/luffy02.txt: Permission denied
ls: cannot access alexdir/luffy01.txt: Permission denied
ls: cannot access alexdir/luffy04.txt: Permission denied
ls: cannot access alexdir/luffy03.txt: Permission denied
total 0
-????????? ? ? ? ? ? luffy01.txt
-????????? ? ? ? ? ? luffy02.txt
-????????? ? ? ? ? ? luffy03.txt
-????????? ? ? ? ? ? luffy04.txt
-????????? ? ? ? ? ? luffy05.txt
# 只修改x 权限
[root@alice-01 oldboy]# chmod u=w alexdir/
[root@alice-01 oldboy]# ll -d alexdir/
d-w-r-xr-x. 2 oldboy oldboy 4096 Nov 6 21:15 alexdir/
小结:
-
对于目录来说 r 表示查看目录里面内容的权限,ls, 会报错,需要x权限的配合(chmod u=rx alexdir/)
-
没有x权限,那么显示的时候文件的属性无法显示
-
对于目录来说,w表示 可以在目录中创建 删除文件 重命名文件权限
-
w无法删除 创件文件,w需要x权限配合
总结:
文件 目录
r 读取文件的内容 查看目录的内容(需要x权限)
w 修改文件的内容(需要r) 在目录下创建,删除文件(需要x权限)
x 执行文件(需要r) 进入到目录的权限(cd)
11)网站整体权限规划
删除一个文件,与文件的权限没有关系
删除一个文件,要看你对这个文件所在的目录是否有wx权限
linux系统默认权限
对于文件来说,默认什么权限比较好? 644 rw-r--r--
对于目录来说,默认什么权限比较好? 755 rwxr-xr-x
文件或目录的所有者 root root
网站比较安全的权限
网址程序存放在 /app/blog目录下面
0.网站需要被运行起来,通过一个傀儡用户运行起来的www
1.blog目录下面
file 644 dir 755 root root
2.blog目录下面
/app/blog/ndd.jpg
/app/blog/snow.jpg
/app/blog/img/ndd.jpg
blog/img file644 dir755 www www
小结:
1.网站是通过傀儡用户运行的www
2.网站用户上传目录, file644 dir755 www www
3.除了上传目录之外, file644 dir755 root root
12)Linux系统默认权限之umask(/etc/profile)
根据umask计算出系统默认的权限
[root@alice-01 oldboy]# umask
0022
文件的最大的权限 666
目录的最大的权限 777
文件: 666 022 644
666 - 022 = 644 根据umask计算文件的默认权限
目录: 777 022 755
777 - 022 = 755 根据umask计算目录的默认权限
假设umask是032 666-032=634 777-032=745
[root@alice-01 oldboy]# umask 032
[root@alice-01 oldboy]# umask
0032
[root@alice-01 oldboy]# umask
0032
[root@alice-01 oldboy]# touch file032
[root@alice-01 oldboy]# mkdir dir032
[root@alice-01 oldboy]# ls
111.txt a abc123.txt alexdir alex.sh a.txt dir032 echo.txt file032 oldboy.txt
[root@alice-01 oldboy]# ls -ld *032
drwxr--r-x. 2 root root 4096 Nov 7 20:47 dir032 (745)
-rw-r--r--. 1 root root 0 Nov 7 20:47 file032 (644)
为什么会差呢?
根据umask计算出系统默认的权限规则
1.对于目录 777直接减去umask
2.对于文件 666 减去umask的值,如果umask某一位上面是奇数,减完umask之后奇数需要 + 1
13)文件隐藏属性
文件系统的属性(文件属性)
chattr == change attribute
lsattr(查看隐藏的权限/属性)(ls attribute)
文件隐藏属性
a === append 只能追加信息
i === immutable 无敌的,不可修改的
[root@alice-01 oldboy]# lsattr oldboy.txt
-------------e- oldboy.txt
[root@alice-01 oldboy]# chattr +a oldboy.txt -a +i
[root@alice-01 oldboy]# lsattr oldboy.txt
-----a-------e- oldboy.txt
[root@alice-01 oldboy]# rm -rf oldboy.txt
rm: cannot remove `oldboy.txt': Operation not permitted
[root@alice-01 oldboy]# \rm -rf oldboy.txt
rm: cannot remove `oldboy.txt': Operation not permitted
[root@alice-01 oldboy]# mv oldboy.txt /tmp/
mv: cannot move `oldboy.txt' to `/tmp/oldboy.txt': Operation not permitted
[root@alice-01 oldboy]# chattr +i oldboy.txt
[root@alice-01 oldboy]# lsattr oldboy.txt
----i--------e- oldboy.txt
总结:
1.如果一个文件被追加上了 a属性,那么不能被删除,不能被移动,只能追加。
2.如果一个文件被追加上了i属性,那么不能被删除,不能被移动,不能追加。
14 ) linux特殊权限
suid setuid password
[root@alice-01 oldboy]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Nov 24 2015 /usr/bin/passwd
[root@alice-01 oldboy]# ll /bin/cat
-rwxr-xr-x. 1 root root 48568 Mar 23 2017 /bin/cat
[root@alice-01 oldboy]# chmod u+s /bin/cat
[root@alice-01 oldboy]# ll /bin/cat
-rwsr-xr-x. 1 root root 48568 Mar 23 2017 /bin/cat
[oldboy@alice-01 root]$ ll /var/log/messages
-rw-------. 1 root root 206212 Nov 8 21:12 /var/log/messages
[root@alice-01 oldboy]# ll -d /tmp/
drwxrwxrwt. 3 root root 4096 Nov 8 20:34 /tmp/
[root@alice-01 oldboy]# stat /tmp/
File: `/tmp/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 803h/2051d Inode: 260098 Links: 3
Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-08 20:34:53.420356477 +0800
Modify: 2018-11-08 20:34:58.403356476 +0800
Change: 2018-11-08 20:34:58.403356476 +0800
[root@alice-01 oldboy]#
小结:
1.加了 + s后,其他用户就像root用户一样可以访问。
15 ) 权限总结
总结:
1.正则总结
2.特殊符号总结
3.练习 取出ip地址,权限
4.使用三剑客进行过滤grep sed awk
5.修改时间,linux快捷键 vi/vim 快捷键
6.文件还有目录权限 rwx含义
7.网站权限-通过控制权限让网站安全
8.linux系统默认权限控制命令umask
9.文件系统属性(文件属性)
10.limux无法上网的排查,
11.无法远程连接服务器
12.安装和使用lrzsz htop