有时候为了精简操作和多人员同时使用服务器或者系统,需要进行对系统设置不同的用户,并且进行权限控制,如何操作呢?
创建用户并设置密码步骤
0:前提,创建的用户名是系统用户不存在的,可以用如下命令来查看目前系统中存在的用户信息。
getent passwd
1:创建用户
useradd usertest
2:配置密码
passwd usertest
3:针对某个文件或者文件夹 更换用户,比如从root改为usertest
# -R 代表文件夹
# usertest:usertest 用户:用户组
chown -R usertest:usertest /tt/aa
已下来自与
https://blog.51cto.com/dengyong/1355112
/etc/sudoers 的配置
/etc/sudoers 是 sudo 的配置文件,它的属性必须为 440。
sudo 命令核心思想是权限的赋予,即某个命令的所属用户不是你自己,而你却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在执行的时候却仍是以这个命令本身所属用户来完成。
注意:
在 linux 中每个进程都是有与之相关的 UID,GID,分别为有效 UID, 真实 UID,有效 GID, 真实 GID。有效 UID,GID 是用来判断权限,而真实 UID,GID 是用来记账 (哪个进程属于哪个用户,或记录日志等等)。当配置了 sudo entry 后,有效 UID 里面就包含了这个被配置的用户 UID,因而权限验证的时候就可以通过。
sudo 特性主要有这样几点:
Sudo 能够限制用户只在某台主机上运行某些命令。
Sudo 提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
Sudo 使用时间戳文件来执行类似的 “检票” 系统。当用户调用 sudo 并且输入它的密码时,用户获得了一张存活期为 5 分钟的票(这个值可以在编译的时候改变)。
Sudo 的配置文件是 sudoers 文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在 /etc/sudoers
su 与 sudo 的对比
su 即永久的切换到了 su 过去的用户,然后以这个 su 到的新用户干它能干的一切事情,
而 sudo 则是指在执行某个命令的时候临时切换到这个命令的所属用户执行,而且 sudo 可以做到以单个命令为单位将权限赋予给其他用户,相比 su 显得更加灵活。
编辑配置文件命令:
sudo visudo
sudo visudo -f /etc/sudoers
sudo vim /etc/sudoers
root ALL=(ALL) ALL
是允许 root 用户使用 sudo 命令变成系统中任何其它类型的用户
%admin ALL=(ALL) ALL
管理组中的所有成员都能以 root 的身份执行所有命令
用一个实例来详细解释 /etc/sudoers 文件的配置语法
Jorge ALL = (root) /usr/bin/find, /bin/rm
第一栏规定它的适用对象:用户或组,就本例来说,它是用户 jorge。此外,因为系统中的组和用户可以重名,要想指定该规则的适用对象是组而非用户的话,组对象的名称一定要用百分号 % 开头。
第二栏指定该规则的适用主机。当我们在多个系统之间部署 sudo 环境时,这一栏格外有用,这里的 ALL 代表所有主机。但是,对于桌面系统或不想将 sudo 部署到多个系统的情况,这一栏就换成相应的主机名。
第三栏的值放在括号内,指出第一栏规定的用户能够以何种身份来执行命令。本例中该值设为 root,这意味着用户 jorge 能够以 root 用户的身份来运行后面列出的命令。该值也可以设成通配符 ALL,jorge 便能作为系统中的任何用户来执行列出的命令了。
最后一栏(即 /usr/bin/find,/bin/rm)是使用逗号分开的命令表,这些命令能被第一栏规定的用户以第三栏指出的身份来运行它们。本例中,该配置允许 jorge 作为超级用户运行 /usr/bin/find 和 /bin/rm 这两个命令。需要指出的是,这里列出的命令一定要使用绝对路径。
我们可以利用这些规则为系统创建具体的角色。例如,要让一个组负责帐户管理,你一方面不想让这些用户具备完全的 root 访问权限,另一方面还得让他们具有增加和删除用户的权利,那么我们可以在系统上创建一个名为 accounts 的组,然后把那些用户添加到这个组里。之后,再使用 visudo 为 /etc/sudoers 添加下列内容:%accounts ALL=(root) /usr/sbin/useradd,/usr/sbin/userdel, /usr/sbin/usermod ,这样,accounts 组中的任何成员都能运行 useradd、userdel 和 usermod 命令了。如果过一段时间后,您发现该角色还需要其他工具,只要在该表的尾部将其添上就行了。这样真是方便极了。
默认情况我们会看到有 "%admin ALL=(ALL) ALL" 一句话
1 如果想把 admin 组的用户都 sudo 不用密码那么可以将这一行换为:"%admin ALL=(ALL) NOPASSWD: ALL" 即可。
2 如果仅仅想让 jay 用户 sudo 不需密码,则可添加 "jay ALL = NOPASSWD: ALL" 这样一行.
3 如果让 jay 用户 sudo 不用密码即可执行某几个命令,可这样写 "jay ALL = NOPASSWD: /usr/bin/abc.sh, /usr/sbin/adduser"
我添加 "jay ALL = NOPASSWD: ALL" 这样一行;但是,jay 执行 sudo 时还是需要输入密码,这是为什么?
原来是,我这一行在 "%admin ALL=(ALL)ALL" 组策略之前,后面的组配置覆盖了前面的配置,而 jay 属于 admin 组,所以需要密码。这时,只需要将 %admin 行用#注释掉即可。OK!然后立马就生效了
在 /etc/sudoers 文件里面主要包括这两部分:
- 别名设置
别名主要包括这几种:User_Alias,Host_Alias,Runas_Alias,Cmnd_Alias,分别是用户别名,主机别名,运行用户别名,命令别名。设置这几个别名的命令主要是为了配置方便,这个很类似 linux 用户群组或是数据库中角色的作用,有了别名便可以批量的赋予权限。
- 真正的 sudo entry
这个就是真正配置哪些用户可以使用哪些命令了(你甚至可以不使用别名设置那部分)
格式为:用户名 (用户别名) 主机名 (主机别名)=[(运行用户或是 Runas_Alias) 可选] [tag 可选] 可以执行的命令 (或 Cmmd_Alias) 这样描述语法很生硬,不易理解,举例子、
user1 host1 = /bin/kill # user1 可以在 host1 上使用命令 /bin/kill
user1 host1 = NOPASSWD:/bin/kill
user1 可以在 host1 上使用命令 /bin/kill 同时可以不必输入密码 (这里就是使用了 NOPASSWD。
user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls
user1 可以在 host1 上使用命令 /bin/kill 无需输入密码,但是使用 /bin/ls 则需要输入密码
user1 host1 = (opterator)/bin/kill
评论 (0)