锁定和解锁账户
对于已有用户账户,我们还可以:
通过锁定密码来禁用账户
使用 -L (大写 l)或者 –lock 选项来锁定用户密码。
# usermod --lock tecmint
解锁用户密码
使用 –u 或者 –unlock 选项来解锁我们之前锁定的账户。
# usermod --unlock tecmint
锁定用户账户
删除用户账户
你可以通过 userdel –remove 命令来删除用户账户。这样会删除用户拥有的家目录和家目录下的所有文件,以及邮件缓存目录。
# userdel --remove [username]
用户组管理
每次添加新用户,系统会为该用户创建同名的用户组,此时用户组里边只有新建的用户,其他用户可以随后添加进去。建立用户组的目的之一,就是为了通过对指定资源设置权限来完成对这些资源和文件进行访问控制。
比如,你有下列用户:
他们都需要对你系统里边某个位置的 common.txt 文件,或者 user1 用户刚刚创建的共享进行读写。你可能会运行下列命令:
# chmod 660 common.txt
或
# chmod u=rw,g=rw,o= common.txt [注意最后那个 = 号和文件名之间的空格]
然而,这样仅仅给文件所属的用户和用户组(本例为 user1)成员的提供了读写权限。你还需要将 user2 和 user3 添加到 user1 组,打这样做也将 user1 用户和用户组的其他文件的权限开放给了 user2 和 user3。
这时候,用户组就派上用场了,下面将演示怎么做。
显示用户所属的用户组
# groups tecmint
# id tecmint
为需要对指定文件进行读写的多个用户建立用户组
运行下列几条命令来完成:
# groupadd common_group # 添加新用户组
# chown :common_group common.txt # 将 common.txt 的用户组修改为 common_group
# usermod -aG common_group user1 # 添加用户 user1 到 common_group 用户组
# usermod -aG common_group user2 # 添加用户 user2 到 common_group 用户组
# usermod -aG common_group user3 # 添加用户 user3 到 common_group 用户组
删除用户组
通过以下命令删除用户组:
# groupdel [group_name]
属于这个 group_name 用户组的文件是不会被删除的,而仅仅是删除了用户组。
Linux 文件权限
除了我们在 LFCS 系列第三讲:归档/压缩文件及目录、设置文件属性和搜索文件中说到的基本的读取、写入和执行权限外,文件还有一些不常用却很重要的的权限设置,有时候把它当做“特殊权限”。
就像之前我们讨论的基本权限,这里同样使用八进制数字或者一个字母(象征性符号)表示该权限类型。
理解 Setuid 位
当为可执行文件设置 setuid 位之后,用户运行程序时会继承该程序属主的有效特权。由于这样做会引起安全风险,因此设置 setuid 权限的文件及程序必须尽量少。你会发现,当系统中有用户需要访问属于 root 用户的文件是所运行的程序就带有了 setuid 权限。
也就是说,用户不仅仅可以运行这个可执行文件linux进入管理员模式命令,而且能以 root 权限来运行。比如,让我们来看看 /bin/passwd 的权限,这个可执行文件用于改变账户的密码,修改 /etc/shadow 文件。超级用户可以改变任意账户的密码,但是其他用户只能改变自己账户的密码。
passwd 命令例示
因此,所有用户都有权限运行 /bin/passwd,但只有 root 用户可以指定改变指定用户账户的密码。其他用户只能改变其自身的密码。
修改用户密码
# chmod o+u [filename]
以八进制形式来设置 setuid 位,在当前基本权限(或者想要设置的权限)前加上数字 4 就行了。
# chmod 4755 [filename]
理解 Setgid 位
设置 setgid 位之后,真实用户的有效 GID 变为属组的 GID。因此,任何用户都能以属组用户的权限来访问文件。另外,当目录置了 setgid 位之后,新建的文件将继承其所属目录的 GID,并且新建的子目录会继承父目录的 setgid 位。通过这个方法,你能够以一个指定的用户组身份来访问该目录里边的文件,而不必管文件属主的主属组。
# chmod g+s [filename]
以八进制形式来设置 setgid 位,在当前基本权限(或者想要设置的权限)前加上数字 2 就行了。
# chmod 2755 [filename]
给目录设置 Setgid 位
给命令设置 setgid 位
理解黏连(Sticky)位
文件设置了黏连位是没有意义,Linux 会忽略该位。如果设置到目录上,会防止其内的文件被删除或改名,除非你是该目录或文件的属主、或者是 root 用户。
# chmod o+t [directory]
以八进制形式来设置黏连位,在当前基本权限(或者想要设置的权限)前加上数字 1 就行了。
# chmod 1755 [directory]
若没有黏连位,任何有权限读写目录的用户都可删除和重命名其中的文件。因此,黏连位通常出现在像 /tmp 之类的目录,这些目录是所有人都具有写权限的。
给目录设置黏连位
Linux 特殊文件属性
文件还有其他一些属性,用来做进一步的操作限制。比如,阻止对文件的重命名、移动、删除甚至是修改。可以通过使用 chattr 命令来设置,并可以使用 lsattr 工具来查看这些属性。设置如下:
# chattr +i file1
# chattr +a file2
运行这些命令之后,file1 成为不可变状态(即不可移动、重命名、修改或删除),而 file2 进入“仅追加”模式(仅在追加内容模式中打开)。
通过 Chattr 命令来包含文件
访问 root 账户并启用 sudo
访问 root 账户的方法之一,就是通过输入:
$ su
然后输入 root 账户密码。
倘若授权成功,你将以 root 身份登录,工作目录则是登录前所在的位置。如果是想要一登录就自动进入 root 用户的家目录linux进入管理员模式命令,请运行:
$ su -
然后输入 root 账户密码。
用户通过 su 切换
执行上个步骤需要普通用户知道 root 账户的密码,这样会引起非常严重的安全问题。于是,系统管理员通常会配置 sudo 命令来让普通用户在严格控制的环境中以其他用户身份(通常是 root)来执行命令。所以,可以在严格控制用户的情况下,又允许他运行一条或多条特权命令。
普通用户通过他自己的用户密码来完成 sudo 授权。输入命令之后会出现输入密码(并不是超级用户密码)的提示,授权成功(只要赋予了用户运行该命令的权限)的话,指定的命令就会运行。
系统管理员必须编辑 /etc/sudoers 文件,才能为 sudo 赋予相应权限。通常建议使用 visudo 命令来编辑这个文件,而不是使用文本编辑器来打开它。
# visudo
这样会使用 vim(你可以按照 LFCS 系列第二讲:如何安装和使用纯文本编辑器 vi/vim里边说的来编辑文件)来打开 /etc/sudoers 文件。
以下是需要设置的相关的行:
Defaults secure_path="/usr/sbin:/usr/bin:/sbin"
root ALL=(ALL) ALL
tecmint ALL=/bin/yum update
gacanepa ALL=NOPASSWD:/bin/updatedb
%admin ALL=(ALL) ALL
来更加深入了解这些项:
Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"
这一行指定 sudo 将要使用的目录,这样可以阻止使用某些用户指定的目录,那样的话可能会危及系统。
下一行是用来指定权限的:
root ALL=(ALL) ALL
tecmint ALL=/bin/yum update
如果 = 号后边没有指定用户,sudo 则默认为 root 用户。本例中,tecmint 用户能以 root 身份运行 yum update 命令。
gacanepa ALL=NOPASSWD:/bin/updatedb
NOPASSWD 关键词表明 gacanepa 用户不需要密码,可以直接运行 /bin/updatedb 命令。
%admin ALL=(ALL) ALL
% 符号表示该行应用于 admin 用户组。其他部分的含义与对于用户的含义是一样的。本例表示 admin 用户组的成员可以通过任何主机连接来运行任何命令。
通过 sudo -l 命令可以查看,你的账户拥有什么样的权限。
Sudo 访问规则
总结
对于系统管理员来说,高效能的用户和文件管理技能是非常必要的。本文已经涵盖了这些内容,我们希望你将这些作为一个开始,然后慢慢进步。随时在下边发表评论或提问,我们会尽快回应的。
作者:Gabriel Cánepa译者:GHLandy校对:wxy
本文由 LCTT原创翻译,Linux中国荣誉推出
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410