linux是一个多用户分布式系统
同一台主机可供多人使用
尤其是在服务器这块应用广泛
有可能同时会有几千人在登录同一台主机
但这时权限的设置就显得尤为重要
简单点说就是够用就好
linux添加新用户
# root用户下
$ adduser ch
# 下面的某些信息可以按enter跳过
创建完后,同时为ch分配了一个家目录
登录新用户
我们采用ssh的方式
$ ssh ch@xxx.xxx.xxx.xxx
这时候的ip是你所连的局域网的ip
查看权限
假设新添加的用户ch是你的室友
你允许他访问你的电脑的时候
但是你有个人小秘密
不想让他看到
怎么办
那我们就来试探一下
创造一个secret目录
并创建文件mimi
$ mkdir secret
# 创建secret目录
$ touch mimi
# 创建空文件mimi
$ echo "mimi" > secret/mimi
# 为mimi文件添加内容
怎么查看权限呢?
查看目录信息以及内容
$ ls -ld secret
# d表示dicretionary
下面的drwxr-xr-x表示什么呢?
d 表示这是一个目录
后面有9位
每三位一组
r->read 拥有读的权利 用数字4表示
w->write 拥有写即改的权利 用数字2表示
x->execute 即我们熟悉的.exe可执行 用数字1表示
所以当我们看到 777 时表明拥有所有权限
第一组rwx : 表示文件所有者的权限 为可读可写可执行
第二组r-x : 表示所属群组的权限 为可读可执行
第三组r-x : 表示其他人的权限 可读可执行
后面的2 root root
2便是该目录的链接数(不用在意)
第一个root是文件所有者
第二个root为所属群组
默认的话新创建的用户没有加入组
就自创一个,他一个人在那一个组
再看一看目录下文件的权限
$ ls -l /secret/mimi
-表示这是一个文件
rw- 文件所有者可读可写
r-- 群组可读
r-- 其他人可读
对于文件来说默认是不给可执行的权限的
因为很多病毒就是通过文件的可执行才能运行
这里是为了安全考虑
验证权限
注意对于目录的权限和文件的权限的区别
目录的可写
表示对目录下的文件可以删除和创造新文件
目录的可读表示可以列出目录下的文件
验证一下我这位亲爱的室友能不能看到我创建的文件
不然我的小秘密被看到了怎么办
上面查询到的ch用户是有权限看的
那我们先验证可以看
切换到ch用户
$ cat mimi
# 查看内容
那他能不能修改呢
$ echo "看看我能不能写" > mimi
对不起,您是不能修改我文件的内容的
NEXT!
He cannot read!
切换到root用户
修改权限
$ chmod o-r setret/mimi
# 对于root群组来说 由于ch用户并不在群组里面
# 他这时候的身份就是其他人
# chmod 表示修改权限
# o-r 表示 把可看的权限去掉
切换到ch用户
验证这时候他能不能看到
hahaha
舒舒服服
对不起 我莫得感情
要是他气的想要删除怎么办?
对不起不可能
因为前面说了对目录的权限是可读可执行
并没有写的权限
那就验证一下咯
切换到ch用户
$ rm mimi
哈哈哈
对不起
我莫得感情
他要是起的把我文件夹都删了怎么办
那就更不可能了
你对我的目录仅有读的权利
$ rm -rf secret
# rm -rf 强制并且递归删除目录secret
仍然是没有权限的
大可放心
如果某一天我向和他共同拥有这个小秘密呢
那我就给他读写的权利呗
这时候发现显示权限不足
于是发现既然是让他能修改
那肯定是能先读啊
这是如果我们让让有可写但没有可读的权限
看看是怎样的
首先我们确认
在root用户下看一看该文件
内容为:
mimi
切换到ch用户
因为他是没有读的权利
但是他可以改
但是改完之后
以前的内容被覆盖了
改完之后他仍旧是不能看
切换到root用户
看,的确内容被覆盖了
所以如果你想让他和你一起拥有秘密
请你也给他读的权限吧
$ chmod o+r secret/mimi
这时候他就能读能写了
并且没有覆盖掉原来的内容
我们就可以一起快快乐乐的分享秘密了
倘若我给他目录写的能力,他就也可以创建新的秘密与我分享了
这样更好喔
$ chmod o+w secret
这是他就可以对在目录下添加文件和删除文件了
$ touch xiaoxiao
没有报错说明创建成功
再看看他能不能删除这个mimi这个文件
即便文件的所有者是root用户
他仍然是可以删除的
因为给了他对这个目录写的权限
修改文件所有者并添加群组
前面我们了解到root用户拥有至高无上的权利
不管是谁创建的文件
他都拥有最高的权限
现在我们更换一个情景
对于一个团队来讲
是要共同完成一个任务的
对于我们寝室xinfeng来讲
寝室现在要完成一项任务
就是要把做的作业放进一个文件中
这是后该怎么办呢
假设寝室有三个人
前面我们新建了一个用户ch
现在我们再来新建两个用户
一个叫dww
一个叫pyj
$ adduser dww
$ adduser pyj
groupadd xinfeng
#添加群组xinfeng
$ usermod -G xinfeng ch
$ usermod -G xinfeng dww
$ usermod -G xinfeng pyj
$ mkdir zuoye
$ cd zuoye
$ touch gaoshu
查看权限
现在我想选出一个寝室长
并将文件的所有者给ch用户
并将这个文件交给群组xinfeng
$ chown ch zuoye
# change owner
$ chgrp xinfeng zuoye
# change group
现在这个文件的所有者就是寝室长ch
目录的所属组就是xinfeng
可以看到
对目录的权限
目录所有者ch 可读可写可执行
目录所属组的成员( ch dww pyj) 可读可执行
其他人员 可读可执行
现在对文件也修改一下
同样的操作
$ chown ch zuoye/gaoshu
# change owner
$ chgrp xinfeng zuoye/gaoshu
# change group
现在目录以及文件都属于ch
所属组都是xinfeng
但是现在成员dww以及pyj都只能看到文件
为不能向gaoshu里面写文件
或者也不能删除文件
因为他们对目录的操作是不可写的
在/etc/group中可以看到分组情况
验证
ssh登录dww和pyj
可以查看文件
但是他们是不能修改文件的
现在我们要为他们添加权限
因为要一起完成任务
$ chmod g+w zuoye/gaoshu
群组用户dww修改
群组用户ch文件所有者ch同样可以修改
他的区别在于他可以删除gaoshu这个文件,而组内的其他成员不可以
实验:
# dww用户下:
$ rm gaoshu
再来看看ch用户
$ rm gaoshu
删除成功!
再来看看其他人
现在随便建一个用户
$ adduser who
用who用户登录主机
我们让他连看目录的资格都没有
这也比较符合具体的场景
$ chmod o-r zuoye
那这样就完美了啊
哈哈哈
我是个合格的管理员了!
1 条评论