十二:群策群力但又各管东西,多用户和权限

电脑,通常只有本人一个用户,就算是在多用户的环境下,比如你的爸爸妈妈需要使用电脑,一般也是使用你的账户来使用,而且也是你来教他们使用(开玩笑:0)。个人电脑在多用户的情景下使用,并不多见,Windows中的Guest账户到底有什么用处真的是个谜,但是Linux通常作为服务器的操作系统,一般来说会有多个管理员合作管理,那么账户和账户关系,账户的权限就显得非常的重要了。
对于权限,在之前我们已经有过接触,查看目录的时候,我们使用长格式查看目录信息,会打印出文件的权限信息

一个用户可以拥有多个文件,一个用户可以属于多个用户组,用户和用户组的信息可以分别查看/etc/passwd和/etc/group文件。/etc/shadow文件保存着用户的密码信息,当然了,是加过密的。
图上的蓝色框里代表的是文件模式,也就是权限信息,只有文件的所有者和超级用户才能更改文件模式。

chmod:更改文件模式
chmod支持两种修改文件模式的方式

第一种:数字权限表示
文件模式分成了三组,每组都有读权限,写权限,执行权限,每一组的权限如果用二进制的数字表示,可以写为111,1代表有该权限,0代表没有,权限设置为111-110-110则意味着文件拥有者拥有读,写和执行三个权限,而用户组成员和其他人只拥有对文件读和写的权限。但是用二进制来设定很麻烦,所以,实际使用数字设置权限的时候,使用八进制,比如设置一个文件的权限为只有拥有者可以读写,那么二进制写作110 000 000,在使用chmod命令的时候写作chmod 600。
示例,修改一个文件的权限

*使用数字修改权限的时候注意不要缺少位数,如果缺少,那么执行“chmod 60 文件名”会发生什么?他会认为文件拥有者对该文件没有任何权限,所在用户组有读和写的权限,其他人没有权限,这太可笑了;要是执行“chmod 6 文件名”会发生什么?他会认为文件拥有者和所属用户组对该文件没有任何权限,其他人反而有读和写的权限,笑哭…

第二种:字符权限表示
相比数字权限表示,字符权限表示更直观一些,控制的更细腻一些。
示例:
chmod [u|g|o|a][+|-|=][r|w|x] 文件
u:所有者
g:所属用户组
o:其他人
a:以上全部
+/-/=:代表添加,撤销和重设
r/w/x:分别代表读权限,写权限和执行权限


umask:默认文件模式
umask命令用来设置文件的掩码,刚听起来可能比较生涩,说白一点就是设置或者查看默认的文件模式。

显示为0002,什么意思呢?好,我们先新建一个文件test

我们看到,新建文件test的文件模式为rw- rw- r–

我们修改一下umask的值,再新建一个文件试试

umask显示的值是文件模式的掩码,是一个八进制的数字。先撇开掩码的第一位,初始后三位是002,变成二进制数就是000 000 010,这个掩码对应的权限就是rw- rw- r–,之后我们修改掩码,变为000 000 000,这时候掩码对应的权限就是rw- rw- rw-,是不是已经能看出倪端了?对,当我们将二进制格式的掩码某一位设置为0,实际上是打开了该位置的权限(但是执行权限无法开启,这也是处于安全考虑,新建的文件没有执行权限)

那么第一个八进制的0是什么含义?
除了常用的读权限,写权限和执行权限,还有一些特别的权限。

1:setuid位,他在掩码的第一位,如果开启,那么文件权限的掩码应该是4000。setuid有什么作用呢?如果某个文件开启了setuid位,那么该文件执行的时候,该文件具有文件所有者的权限,比如你是一个一般用户,你执行了一个root用户的文件,并且该文件设置了setuid位,那么文件执行的时候是拥有root权限的,所以对于setuid位的设置要慎重。
如何开启setuid位呢
chmod u+s 文件,表示开启setuid

2:和setuid位类似,他在掩码的第二位,开启的话,掩码的设置是2000。setgid表示操作一个文件的时候,操作文件的用户组会由当前组变为文件所在组的权限。对于文件所属组不是文件创造者所在组的情况,可能会带来权限的变化。
开启setgid
chmod g+s 文件,开启setgid位

3:sticky位,掩码中的第三位,开启时,掩码设置是1000,这个权限位通常用来限制访问,如果它开启,那么它能阻止用户删除或重命名文件,除非用户是这个文件所有者,或是超级用户。
开启sticky位
chmod +t 文件

如何确定某个文件是否开启了setuid位,segid位呢?当某个文件开启了某个特殊权限位,那么在对应的权限分组中,该组的执行权限会显示s。
比如某个文件开启了setuid位,那么他的权限是rws r– r–;开启了setgid位,则是rw- rws r–;sticky位则在其他人组中体现,rw- rw- rwt

su/sudo 身份的切换
除非是root用户,否则一般用户在很多情况下都会有对系统进行操作的限制。如果一个一般用户进行某个操作,比如执行某个文件,但是他没有这个文件的执行权限,那么该怎么办呢?最简单粗暴的方式就是注销,使用root用户登录进行操作。虽然可行,但是不可取,毕竟太不方便了。

su:使用替代用户执行命令
这个命令不太好记,全称是run a command with substitute user and group ID,看起来是substitute user的缩写。作用就是使用替代用户来执行操作。
示例:切换一个用户,如果不指定用户,那么默认切换到root
su [用户]

直接使用su之后,系统提示我们输入密码,注意,这里输入的是root用户的密码,而不是当前用户的密码。之后,我们会发现shell提示符酉“$”变成了“#”

有一个常用选项是”-l”(他有一个别名是“-”),添加“-l”会出现一个需要登录的shell,加载替代用户的shell环境。我们看到,添加“-l”之后登录,初始目录定位到了root用户的家目录

其实有时候我们并不需要切换用户,只是需要使用个别用户的权限来做一些操作罢了,还有一个常用选项是“-c”,执行一个命令。比如一个一般用户希望查看一下root用户的家目录

只执行单个命令,而不是启动一个新的可交互的 shell,使用“-c”选项,命令将传递到一个新的shell中执行,所以命令参数需要单引号引起作为一个参数。

sudo:使用替代用户去执行操作,但是提供灵活的配置
sudo和su类似,都是以另一个身份去执行某些操作,但是sudo允许管理员进行灵活的配置,比如某些操作只允许特定用户来执行,在经过配置之后,特定用户不需要管理员的密码,只需要输入自己的密码就可以使用管理员权限来执行特定操作。通常情况下,sudo并不会启动一个新的shell,也不会加载其他用户的shell环境。
除了切换当前的用户,获取root权限等,我们还需要更改文件的所有者,所属组

chown:更改文件的所有者和所属组
这个命令可以同时修改两个所属关系,也可以单独修改。
命令格式:chown [OPTION]… [OWNER][:[GROUP]] FILE…,这是文档的原话,我们添点料
最简单的使用:chown alvindu327 a.txt,把a.txt文件的所有者从原所有者变为alvindu327


然后,说一下比较全面的用法
1,同时变更所属用户和所属组。chown alvindu327: a.txt,刚才的命令我们可以看到,a.txt的所属组依然属于root,在所属用户之后添加“:”,意为着将文件原所属组变更为新用户登陆时的所属组


2,单独变更所属用户和所属组。
chown alvindu327:demonuser a.txt,将a.txt的所属用户变为alvindu327,所属组变更为demonuser

3,只变更所属组
chown :onlygrp a.txt,将a.txt的所属组变更为onlygrp,所属者不变
接下来还剩下不少命令需要了解,比如新建用户,新建组,修改密码等等,但是一一列举出来没什么意思,为什么不用apropos去模糊查询一下呢,新建用户,或许会是adduser吧,要不createuser?猜测和搜索也是很好的学习方式。

喔,最后几乎忘了一个重要的内容,虽然常用权限有读,写,和执行,看起来很简单,但是你真正明白他们的含义吗?

对于文件而言
  • 读权限:表示可以查看这个文件的内容(可以使用cat,less,more等命令进行查看)
  • 写权限:表示可以修改这个文件的内容(可以使用编辑器修改这个文件)
  • 执行权限:表示该文件(可能是命令,或者脚本)可以执行
对于目录而言(虽然目录也是文件,但是这里做一个区分)
  • 读权限:表示可以列出目录内的内容(使用ls可以查看文件的内容)
  • 写权限:表示可以在目录中创建,删除文件(touch文件,mkdir目录,或者rm文件)
  • 执行权限:表示可以进入到这个目录中
对于常用读写执行权限,我本来也和很多人一样,认为很简单,但是其中真的有几个误区需要扫盲:

*我对一个文件有写权限,我就可以删除这个文件吗?答案是否定的,写权限仅仅是修改文件的内容而已,如果你需要删除这个文件,你需要拥有对这个文件所在目录的写权限才行。

*我对一个目录有读权限,我就可以查看这个目录的内容吗(虽然听起来没什么不对)?答案是否定的,对一个目录有读权限,仅仅是让你能看到这个目录的存在,而查看目录的内容,你需要目录的执行权限,所以,目录的读权限和执行权限一般都是同时存在的,倘若一个目录只有读权限,那就是耍流氓,知道有,看不了;倘若只有执行权限,那就是特供情报,虽然“没有”,但是能查看…

posted on 2015-07-12 10:49 都较瘦 阅读(103) 评论(0)  编辑  收藏 所属分类: Linux


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

公告

博客定位:囿于目前的水平,博客定位在记录自己的学习心得和随手的练习

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜