面试 Apache golang爬虫 微服务 numpy android教程 npm安装 ISP ssh scrapy testng etl数据 spark算法 solr索引 mser算法 matlab插值函数 nfc卡片 mysql分区表优劣分析 python正则 python正则表达式例子 python正则表达 java中数据类型 java语言介绍 javastringbuilder java怎么学 java绝对值 javascript案例 音频录制软件 电脑必备软件排行榜 零基础学python js包含字符串 mac版matlab 截取字符串 ie拒绝访问 winsxs可以删除吗 allowtransparency pr抠图 内存条是什么 淘宝退货怎么上门取件 手机号正则表达式
当前位置: 首页 > 学习教程  > 编程语言

第七部分(权限)

2020/8/11 20:42:06 文章标签:

2020-04-09

显示用户身份号

[root@VM_0_7_centos ~]# id
uid=0(root) gid=0(root) groups=0(root)

当用户创建帐户之后,系统会给用户分配一个号码,叫做用户 ID或者 uid,然后,为了符合人类的习惯,这个 ID 映射到一个用户名。系统又会给这个用户分配一个原始的组 ID 或者是 gid,这个 gid 可能属于另外的组。

用户帐户定义在 /etc/passwd 文件里面,用户组定义在/etc/group 文件里面。当用户帐户和用户组创建以后,这些文件随着文件/etc/shadow 的变动而修改,文件/etc/shadow 包含了关于用户密码的信息。对于每个用户帐号,文件/etc/passwd 定义了用户(登录)名、uidgid、帐号的真实姓名、家目录和登录 shell。如果你查看一下文件/etc/passwd 和件/etc/group 的内容,你会注意到除了普通用户帐号之外,还有超级用户(uid 0)帐号,和各种各样的系统用户。

读取、写入和执行


常见文件类型

权限属性
权限属性示例

更改文件模式

更改文件或目录的模式(权限),可以利用 chmod 命令。注意只有文件的所有者或者超级用户才能更改文件或目录的模式。chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法或符号表示法。

chmod 命令支持一种符号表示法,来指定文件模式。符号表示法分为三部分:更改会影响谁,要执行哪个操作,要设置哪种权限。通过字符“u”、“g”、“o”和“a”的组合来指定要影响的对象,如下所示:
chmod命令符号表示法
如果没有指定字符,则假定使用 “all”。执行的操作可能是一个“”字符,表示加上一个权限,一个“”,表示删掉一个权限,或者是一个“”,表示只有指定的权限可用,其它所有的权限被删除。

设置默认权限

当创建一个文件时,umask 命令控制着文件的默认权限。umask 命令使用八进制表示法来表达从文件模式属性中删除一个位掩码。

[root@VM_0_7_centos ~]# umask
0022

运行不带参数的 umask 命令,看一下当前的掩码值。响应的数值是 0022,这个数值是掩码的八进制表示形式。

umask 0000

掩码设置为 0000(实质上是关掉它)之后,先忽略掉开头的三个零,注意掩码中若出现一个数字 11,则删除文件模式中和这个 11 在相同位置的属性,在这是指其他人的写权限。这就是掩码要完成的任务。掩码的二进制形式中,出现数字 11 的位置,相应地关掉一个文件模式属性。看一下掩码0022 的作用:

二进制中数字 1 出现的位置,相对应的属性被删除。

大多数情况下,你不必修改掩码值,系统提供的默认掩码值就很好了。然而,在一些高安全级别下,你要能控制掩码值。

更改身份

在不同的时候,我们会发现很有必要具有另一个用户的身份。经常地,我们想要得到超级用户特权,来执行一些管理任务,但是也有可能 “变为” 另一个普通用户,比如说测试一个帐号。有三种方式,可以拥有多重身份:

  1. 注销系统并以其他用户身份重新登录系统。
  2. 使用 su 命令。
  3. 使用 sudo命令。

su命令

在我们自己的 shell 会话中,su 命令允许你假定为另一个用户的身份,以这个用户的 ID 启动一个新的 shell 会话,或者是以这个用户的身份来发布一个命令。

su 命令用来以另一个用户的身份来启动 shell。

su [-[l]] [user]

如果包含 “-l” 选项,那么会为指定用户启动一个需要登录的 shell。这意味着会加载此用户的 shell 环境,并且工作目录会更改到这个用户的家目录。这通常是我们所需要的。如果不指定用户,那么就假定是超级用户。注意(不可思议地),选项 “-l” 可以缩写为”-”,这是经常用到的形式。
启动超级用户的 shell,我们可以这样做:

[me@linuxbox ~]$ su -
Password:
[root@linuxbox ~]#

用一下的方式使用 su 命令,也可以只执行单个命令,而不是启动一个新的可交互的 shell:

su -c 'command'

使用这种模式,命令传递到一个新 shell 中执行。把命令用单引号引起来很重要,因为我们不想命令在我们的 shell 中展开,但需要在新 shell 中展开。

[me@linuxbox ~]$ su -c 'ls -l /root/*'
Password:
-rw------- 1 root root 754 2007-08-11 03:19 /root/anaconda-ks.cfg
/root/Mail:
total 0
[me@linuxbox ~]$

sudo命令

sudo 命令允许一个管理员设置一个叫做 /etc/sudoers 的配置文件,并且定义了一些具体命令,在假定的身份下,特殊用户可以执行这些命令。

sudo 命令在很多方面都相似于 su 命令,但是 sudo 还有一些非常重要的功能。管理员能够配置 sudo 命令,从而允许一个普通用户以不同的身份(通常是超级用户),通过一种非常可控的方式来执行命令。尤其是,只有一个用户可以执行一个或多个特殊命令时,(更体现了 sudo 命令的方便性)。
另一个重要差异是 sudo 命令不要求超级用户的密码。使用 sudo 命令时,用户使用他/她自己的密码来认证

susudo 之间的一个重要区别是 sudo 不会重新启动一个 shell,也不会加载另一个用户的 shell 运行环境。这意味者命令不必用单引号引起来。注意通过指定各种各样的选项,这种行为可以被推翻。

想知道 sudo 命令可以授予哪些权限,使用 “-l” 选项,列出所有权限:

[me@linuxbox ~]$ sudo -l
User me may run the following commands on this host:
(ALL) ALL

更改文件所有者和用户组

chown 命令被用来更改文件或目录的所有者和用户组。使用这个命令需要超级用户权限。
chown 命令的语法看起来像这样:

chown [owner][:[group]] file...

chown 可以根据这个命令的第一个参数更改文件所有者和/或文件用户组。
chown参数实例

比方说,我们有两个用户,janet 拥有超级用户访问权限,而 tony 没有。用户 janet 想要从她的家目录复制一个文件到用户 tony 的家目录。因为用户 janet 想要 tony 能够编辑这个文件,janet 把这个文件的所有者更改为 tony:

[janet@linuxbox ~]$ sudo cp myfile.txt ~tony
Password:
[janet@linuxbox ~]$ sudo ls -l ~tony/myfile.txt
-rw-r--r-- 1 root root 8031 2008-03-20 14:30 /home/tony/myfile.txt
[janet@linuxbox ~]$ sudo chown tony: ~tony/myfile.txt
[janet@linuxbox ~]$ sudo ls -l ~tony/myfile.txt
-rw-r--r-- 1 tony tony 8031 2008-03-20 14:30 /home/tony/myfile.txt

这里,我们看到用户 janet 把文件从她的目录复制到 tony 的家目录。下一步,janet 把文件所有者从 root(使用 sudo 命令的原因)改到 tony。通过在第一个参数中使用末尾的 “:” 字符,janet 同时把文件用户组改为 tony 登录系统时,所属的用户组,碰巧是用户组 tony。
注意,第一次使用 sudo 命令之后,为什么(shell)没有提示 janet 输入她的密码?这是因为,在大多数的配置中,sudo 命令会相信你几分钟,直到计时结束。

更改用户组所有权

在旧版 Unix 系统中,chown 命令只能更改文件所有权,而不是用户组所有权。为了达到目的,使用一个独立的命令,chgrp 来完成。除了限制多一点之外,chgrp 命令与 chown 命令使用起来很相似。

更改用户密码

使用 passwd 命令,来设置或更改用户密码。命令语法如下所示:

passwd [user]

只要输入 passwd 命令,就能更改你的密码。shell 会提示你输入你的旧密码和你的新密码。passwd 命令将会试着强迫你使用“强”密码。这意味着它会拒绝接受太短的密码、与先前相似的密码、字典中的单词作为密码或者是太容易猜到的密码。

如果你具有超级用户权限,你可以指定一个用户名作为 passwd 命令的参数,这样可以设置另一个用户的密码。还有其它的 passwd命令选项对超级用户有效,允许帐号锁定,密码失效,等等。详细内容,参考 passwd命令的手册页。


本文链接: http://www.dtmao.cc/news_show_100403.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?