账号与权限管理

账号与权限管理
一.用户管理①.用户账号和组账号概述用户的分类Linux 中的用户分为三种角色超级用户、普通用户和程序用户每个角色有不同的权限和用途。理解这些角色及其对应的权限设置是系统管理的基础。1超级用户定义Root 是 Linux 系统中的管理员账户拥有系统的全部权限类似于 Windows 的 Administrator。它可以执行任何操作包括安装软件、修改系统配置、管理用户账户等。UID/GIDRoot 用户的 UID 和 GID 均为0。使用建议出于安全考虑仅在执行系统管理任务时使用 Root 账户日常操作应使用普通用户账号以降低系统遭受恶意攻击的风险。切换方式通过su -或sudo命令可临时切换到 Root 身份获取管理员权限。2普通用户定义普通用户由 Root 或其他管理员创建权限受限通常只能完全控制自己的宿主目录家目录。UID 范围CentOS 6UID 从500开始。CentOS 7UID 从1000开始向上递增至系统允许的最大值。每个用户的 UID 是系统唯一标识如同身份证号码。3程序用户定义程序用户也称系统用户或伪用户是在安装操作系统或应用程序时自动创建的专门用于运行系统服务或特定程序。它们通常无法登录系统仅作为服务进程的运行时身份以最小化权限保障安全。常见示例bin、daemon、ftp、mail、nginx、mysql、kafka等。UID 范围CentOS 61499CentOS 71999这些 UID 被系统保留用于服务进程如ftp管理 FTP 服务apache运行 Web 服务。查看方式可通过/etc/passwd文件或id 用户名命令查看程序用户的详细信息。②.组账号的分类Linux 用户组管理Linux 系统通过将用户分配到不同的组来实现权限的精细化管理。每个用户至少属于一个组该组称为用户的基本组也称主组或私有组。此外用户还可以加入多个附加组以便与不同团队共享文件或服务资源。基本组主组定义基本组是用户默认所属的组通常与用户名同名。创建机制在创建用户时系统会自动生成一个与该用户同名的基本组并将该用户自动加入其中。作用基本组主要用于管理用户自身文件的默认权限新创建的文件通常会将基本组设置为文件所属组。案例创建用户并查看基本组useradd johnid john输出uid1001john gid1001john groupsjohn用户 john 的基本组就是 john。附加组定义附加组是用户除基本组之外可以额外加入的其他用户组。特点一个用户可以同时隶属于多个附加组从而获得这些组所授予的资源访问权限。作用附加组的权限设置对所有加入该组的用户均生效。通过合理配置附加组管理员可以灵活实现跨用户的资源共享与权限划分例如将多个开发人员加入同一个dev组以便共同访问项目目录。案例1.将用户加入附加组usermod -aG ftpusers john这将用户 john 加入到 ftpusers 附加组。举例示例说明用户与组的关系以用户zhangsan为例zhangsan是技术部员工其基本组为tech与部门内同事共享。后来因工作需要公司将其加入邮件管理员组mailadm此时mailadm便成为zhangsan的一个附加组。因此zhangsan同时属于tech和mailadm两个组其中tech是主组mailadm是附加组。对组账号设置的任何权限将自动适用于该组内的所有成员。用户与组的简明关系类比用户≈ 员工组≈ 岗位职位员工可以兼职多个岗位对应一个用户可加入多个附加组。每个员工有且仅有一个主要岗位对应基本组必须存在且唯一。附加组可有可无也可以有多个。系统默认行为在创建新用户时会自动生成一个与该用户同名的基本组并将用户自动加入其中。③.UID和GIDUID用户标识符定义UID 是每个用户的唯一身份标识类似于个人的身份证号码。范围划分以 CentOS 7 为例CentOS 6 略有不同超级用户UID 0Root。系统用户程序用户1999CentOS 71499CentOS 6。这些用户用于运行系统服务通常无法登录。普通用户1000及以上CentOS 7500及以上CentOS 6。GID组标识符定义GID 是每个用户组的唯一标识符。每个用户至少属于一个组该组的 GID 用于标识该组。作用用户组用于管理一组具有相同权限的用户。文件和目录的访问权限通常由文件所属组的 GID 来决定即组权限。范围划分GID 的范围与 UID 的范围完全对应系统组1999CentOS 71499CentOS 6。普通组1000及以上CentOS 7500及以上CentOS 6。说明系统组和系统用户一样通常用于运行后台服务普通组则用于普通用户之间的权限共享。④.总结er用户类型超级用户Root拥有系统最高权限仅用于管理操作。普通用户权限受限通常只能操作自己的目录和文件。程序用户用于运行系统服务不允许登录系统通常由系统自动创建。组管理组管理是 Linux 权限控制的核心机制。通过将用户加入不同的组管理员可以灵活管理访问权限确保系统资源的合理使用。UID 与 GIDUID用户标识号唯一标识用户系统通过 UID 管理文件和权限归属。GID组标识号唯一标识用户组系统通过 GID 控制对共享资源的访问。用户与组的关系每个用户至少属于一个基本组主组并可加入多个附加组。系统通过 UID 和 GID 协同完成对用户、组及资源的精细化访问控制。二.用户帐号文件1.passwd 文件账号记录详细说明/etc/passwd 文件在 Linux 系统中保存了所有用户的基本信息而用户的密码信息和一些安全设置则保存在 /etc/shadow 文件中。密码的加密存储在 /etc/shadow 文件中/etc/passwd 文件只存储占位符如 x 或 !!以确保密码的安全。2./etc/passwd 文件格式/etc/passwd 文件记录每个用户的基本信息每行一个用户字段之间用冒号:分隔格式如下用户名:密码占位符:UID:GID:用户描述:宿主目录:登录Shell字段详解用户名root用户的登录名Linux 通过用户名或 UID 来识别用户。密码占位符x这里显示为 x表示密码存储在 /etc/shadow 文件中而不直接存储在passwd 文件里。Linux系统把真正的加密密码串放置在/etc/shadow文件中此文件只有root用户可以浏览和操作最大限度地保证了密码的安全。补充注意虽然x并不表示真正的密码但也不能删除如果删除了 x那么系统会认为这个用户没有密码从而导致只输入用户名而不用输入密码就可以登陆只能在使用无密码登录远程是不可以。UID0用户的唯一标识符用来标识不同的用户通常 root 用户的 UID 为 0普通用户的UID 从 1000 开始取决于系统配置。GID0基本组的 ID通常是该用户的基本组 ID。用户描述(root)该字段一般用于描述该用户的详细信息通常为用户的全名或其他说明。宿主目录(/root)用户登录时的默认工作目录通常对于 root 用户是 /root对于普通用户是/home/用户名。登录 Shell/bin/bash用户登录后的默认 Shell 程序如 /bin/bash。示例root:x:0:0:root:/root:/bin/bash解释root用户名。x密码占位符表示密码信息保存在 /etc/shadow 中。0UIDroot 用户的 UID 是 0。0GIDroot 用户的基本组的 GID 也是 0。root用户描述通常是该用户的全名。/root宿主目录root 用户的默认工作目录。/bin/bash登录 Shellroot 用户登录后使用的默认 Shell。3.总结密码字段/etc/passwd 中的密码字段只包含占位符 x真实密码存储在 /etc/shadow 文件中。加密密码使用 SHA-512 等算法加密密码提升安全性。①.添加用户账号添加用户账号-u指定用户的 UID 号要求该 UID 号码未被其他用户使用。-d指定用户的宿主目录位置当与-M 一起使用时不生效。-e指定用户的账户失效时间可使用 YYYY-MM-DD 的日期格式。-g指定用户的基本组名或使用 GID 号。-G指定用户的附加组名或使用 GID 号。-M不建立宿主目录即使/etc/login.defs 系统配置中已设定要建立宿主目录。-s指定用户的登录Shell。案例useradd zhangsanid zhangsantail -1 /etc/passwdls /home创建一个辅助管理员账号 admin将其基本组指定为“wheel”附加组指定为“root”宿主目录指定为“/admin”useradd -d /admin -g wheel -G root admin创建用户命令 指定家目录 基本组 添加附加组 用户id admin案列2创建一个用户 并且指定 uid 100案例3创建用yjs01程序用户 不能登录shell 不能登系统②.更改用户口令 passwd#调用管道符给 zhangsan 用户设置密码 123,为了方便系统管理passwd 命令提供了 --stdin选项用于批量给用户设置初始密码。1、passwd 用户 设置密码 或者说修改密码2、如何面交互 设置密码 以及更改密码内容 把左边命令输出给右边2echo 123 | passwd --stdin zhsngsan 面交换命令 输入 用户-d清空指定用户的密码仅使用用户名即可登录系统。-l锁定用户账户。-S查看用户账户的状态是否被锁定。-u解锁用户账户。案例passwd -l zhangpasswd -S zhangpasswd -u zhangpasswd -d zhang③.删除用户账号userdel [-r] 用户名添加 -r 选项时表示连用户的宿主目录一并删除id zhangsanuserdel -r zhangsan#一定要加-r递归删除不然家目录下的用户不不会删掉下次创建同名的目录会报错ls -ld /home/zhangsan用户账号的初始配置文件④.用户账号的初始配置文件1.账号初始配置的作用1来源目录当使用 useradd 创建新用户时系统会从 /etc/skel/ 复制默认配置文件到新用户的家目录。2常见文件.bash_profile登录时执行的命令。.bashrc每次加载 bash 时执行包括登录。.bash_logout用户退出登录时执行3所有用户都可以使用如果希望为所有用户添加登录后自动运行的命令程 序、自动设置变量等可以直接修改/etc 目录下的类似文件如/etc/bashrc 文件、/etc/profile 文件。例如执行以下操作可以为所有用户自动设置 myls命令别名vi /etc/bashrcalias myls/bin/ls -lhrsource /etc/bashrc2.用户账号的初始配置文件详解.bash_profile示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH),并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath..bashrc 例子中定义了路径语言命令别名使用rm删除命令时总是加上-i参数需要用户确认使用ls命令列出文件列表时加上颜色显示。每次修改.bashrc后使用source ~/.bashrc或者 . ~/.bashrc就可以立刻加载修改后的设置使之生效。一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件这样~/.bashrc也就得到执行了你的个性化设置也就生效了。关于环境变量的读取顺序:登录的数据流向用户登录 - 加载~/.bash_profile -- bash_profile中配置了首先是使~/.bashrc生效.bash_logout用途: 用户登出时执行的命令~/ . bash_logout在当前用户登出时,打印出Logout 和当前的时间echo Logout, date例子如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样当用户每次注销时.bash_history文件都会被删除.总结用户家目录下 有哪些文件.bash_profile登录时执行的命令。.bashrc每次加载 bash 时执行包括登录。.bash_logout用户退出登录时执行并且怎么去使用三个文件的操作二.组管理1.组账号文件与组账号相关的配置文件也有两个分别是/etc/group 和/etc/gshadow。前者用于保存 组账号名称、GID 号、组成员等基本信息后者用于保存组账号的加密密码字串等信息但 是很少使用到。某一个组账号包含哪些用户成员将会在 group 文件内最后一个字段中体 现出来基本组对应的用户账号默认可能不会列出多个组成员之间使用“,”逗号分隔grep ^root /etc/group #//检索root 组包括哪些用户grep root /etc/group //检索哪些组包括root 用户2.添加组账号groupaddgroupadd [-g GID] 组账号名groupadd -g 1200 markettail -1 /etc/group3删除组账号groupdelgroupdel 组账号名groupdel marketgrep market /etc/group三.查询账号信息1.groups命令查询用户所属的组groups [用户名]groups adm2.id命令id [用户名]3.finger命令 扩展#查询用户账号的详细信息finger [用户名]4.w、who、users#查询已登录到主机的用户信息5.扩充通常使用tty来简称各种类型的终端设备Centos7系统 tty1表 示图形界面tty2文字-tty6表示 界面可以用CtrlAltF1~ F6切换。按Ctr1A1tF2登陆 执行w命令查看使用的终端就是tty2User登录用户名TTY登录后系统分配的终端号From远程主机名即从哪登录的login何时登录IDLE用户空闲时间。这是个计时器一旦用户执行任何操作改计时器就会被重置。JCPU和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间PCPU当前进程所占用时间WHAT当前正在运行进程的命令行pts说明是用远程工具连接的比如xshell后面的数字代表登录的时间顺序越小证明登录的越早6.总结1、对组创建 添加组以及删除组的操作 groupadd groups 组名 groupdel /etc/group2、对用户 或者组 进行信息查询 id w who users finger groups四.su命令切换用户1.用途及用法用途Substitute User切换用户格式 :su - 目标用户2.密码验证root----- 任意用户不验证密码普通用户----- 其他用户验证目标用户的密码[benetbenet79-2]# su - root口令注带 - 选项表示将使用目标用户的登录Shell环境 shell 窗口[rootbenet79-2 ~]# whoamiroot五.文件权限1.查看目录和文件的属性1访问权限读取 r允许查看文件内容、显示目录列表写入 w允许修改文件内容允许在目录中新建、移动、删除文件或子目录可执行 x允许运行程序、切换目录2归属所有权属主拥有该文件或目录的用户帐号属组拥有该文件或目录的组帐号3查看权限4设置文件和目录的权限chmod设置文件权限时有两种方式1、数字表 4212、 字符 u 用户 g 组 o 其他用户 a 所有用户 rwx目录详解root 用户、root 组如“drwxr-xr-x”和“-rw-r--r--”。权限字段由四部分组成各 自的含义如下所述。第 1 个字符表示该文件的类型可以是 d(目录)、b(块设备文件)、c(字符设备文 件)、“-”普通文件、字母“l”链接文件等。第 24 个字符表示该文件的属主用户User对该文件的访问权限。第 57 个字符表示该文件的属组内各成员用户Group)对该文件的访问权限。第 810 个字符表示其他任何用户Other对该文件的访问权限。第 11 个字符这里的“.”与 SELinux 有关目前不必关注上述格式中字符组合“[ugoa...][-][rwx]”或数字组合“nnn”的形式表示要设置的权限模 式。其中“nnn”为需要设置的具体权限值如“755”“644”等而 “[ugoa...][-][rwx]”的形 式中三个组成部分的含义及用法如下所述。“ugoa”表示该权限设置所针对的用户类别。“u”代表文件属主“g”代表文件属组内的用户“o”代表其他任何用户“a”代表所有用户u、g、o 的总和。“-”表示设置权限的操作动作。“”代表增加相应权限“-”代表减少相应权限“” 代表仅设置对应的权限。“rwx”是权限的字符组合形式也可以拆分使用如“r”“rx”等。案例[rootky17 /]# cp /bin/mkdir mymkdir[rootlocalhost ~]# ./mymkdir dir01[rootlocalhost ~]# lsanaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐dir01 mymkdir 模板 图片 下载 桌面[rootlocalhost ~]# ls -ld dir01drwxr-xr-x 2 root root 6 5月 15 00:11 dir01 755[rootlocalhost ~]# chmod ugo-x mymkdir[rootlocalhost ~]# ls -l mymkdir-rw-r--r-- 1 root root 79768 5月 15 00:09 mymkdir[rootlocalhost ~]# ./mymkdir dir02-bash: ./mymkdir: 权限不够[rootlocalhost ~]# chmod ux,o-r mymkdir[rootlocalhost ~]# ls -l mymkdir-rwxr----- 1 root root 79768 5月 15 00:09 mymkdir[humjky17 /]$ cat mymkdir[rootlocalhost ~]# chmod 755 mymkdir[rootlocalhost ~]# ls -l mymkdir-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir5设置文件和目录的归属chownchown命令chown 属主 文件或目录 root:rootchown :属组 文件或目录chown 属主:属组 文件或目录常用选项-R递归修改指定目录下所有文件、子目录的归属案例ls -ld /var/ftp/pub/drwxr-xr-x 2 root root 6 5月 15 00:20 /var/ftp/pub/[rootlocalhost ~]# chown -R ftp /var/ftp/pub/ #//修改前的属主为root[rootlocalhost ~]# ls -ld /var/ftp/pub/ //修改后的属主变为ftpdrw-r--r--. 2 ftp root 6 Nov 5 15:43 /var/ftp/pub/[rootlocalhost ~]# ls -ld /var/ftp/pub/drwxr-xr-x 2 ftp root 6 5月 15 00:20 /var/ftp/pub/如果同时设置目录和文件的属主、属组则需要用到分隔符“:”。例如执行以下操作可 将 mymkdir 文件的属主更改为 daemon、属组更改为 wheel。[rootlocalhost ~]# ls -ld mymkdir-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir[rootlocalhost ~]# chown daemon:wheel mymkdir[rootlocalhost ~]# ls -ld mymkdir-rwxr-xr-x. 1 daemon wheel 79768 Apr 18 09:38 mymkdi六.提权权限1.sudo机制介绍通过su命令可以非常方便地切换为另一个用户但前提条件是必须知道目标用户的登 录密码。例如若要从zhangsan 用户切换为 root 用户必须知道 root 用户的密码。对于生产环 境中的 Linux 服务器每多一个人知道特权密码其安全风险也就增加一分。 有没有一种折中的办法既可以让普通用户拥有一部分管理权限又不需要将 root 用户的密码告诉他呢答案是肯定的使用 sudo命令就可以提升执行权限。不过需要由管理员预先进行授权指定允许哪些用户以超级用户或其他普通用户的身份来执行哪些命令。/etc/sudoers文件的默认权限为440需使用专门的 visudo 工具进行编辑。虽然也可以用 vi 进行编辑但保存时必须执行“:w!”命令来强制操作否则 系统将提示为只读文件而拒绝保存。 配置文件/etc/sudoers 中授权记录的基本配置格式如下所示。user MACHINE COMMANDS用户 主机 命令zhangsan tb-web useradd reboot(重启)2.sudo [参数选项] 命令-l 列出用户在主机上可用的和被禁止的命令一般配置好/etc/sudoers后要用这个命令来查看和测试是不是配置正确的-v 验证用户的时间戳如果用户运行sudo 后输入用户的密码后在短时间内可以不用输入口令来直接进行sudo 操作用-v 可以跟踪最新的时间戳-u 指定以以某个用户执行特定操作-k 删除时间戳下一个sudo 命令要求用求提供密码ifconfig ens33:0 192.168.10.40/24授权配置主要包括用户、主机、命令三个部分即授权哪些人在哪些主机上执行哪些命 令。各部分的具体含义如下。注Runas_Alias在哪些主机以谁的身份运行 的别名 这个不怎么使用3.用户组设置sudo提权用户user直接授权指定的用户名或采用“%组名”的形式授权一个组的所有用户。主机MACHINE使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份sudoers 文件一般设为 localhost 或者实际的主机名即可。命令COMMANDS允许授权的用户通过 sudo方式执行的特权命令需填写命令程序的完整路径多个命令之间以逗号“,”进行分隔。4.案例1需求wangliu 用户可以使用useradd usermodwangliu root用户下的权限 useradd usermod配置1、做sudo 操作时查看是否输入密码 命令测试visudowangliu ALL(root) /usr/sbin/useradd,/usr/sbin/usermod2、测试 使用sudo 中的 useradd命令 是否需要输入密码用户 主机名如wangliu ALL(root) NOPASSWD/usr/sbin/useradd,PASSWD/usr/sbin/usermod #前面不需要输入密码 后面需要输入密码验证[wangliukgc root]$ sudo /usr/sbin/useradd tom[sudo] wangliu 的密码[wangliukgc root]$ tail -2 /etc/passwdwangliu:x:1005:1005::/home/wangliu:/bin/bashtom:x:1006:1006::/home/tom:/bin/bash2案列二 用户可以临时创建网卡visudoTom yjs(root) NOPASSWD:/usr/sbin/ifconfig验证su - Tom[Tomyjs root]$ sudo ifconfig ens33:0 192.168.10.11/24#初次使用sudo时需验证当前用户的密码默认超时时长为5分钟在此期间不再重复验证密码。sudo - l#查看当前用户获得哪些sudo授权3用户别名案例多用户 多命令 去操作当使用相同授权的用户较多或者授权的命令较多时可以采用集中定义的别名。用户、 主机、命令部分都可以定义为别名必须为大写分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。#查看组下面的用户grep wheel /etc/group用户别名的语法格式1User_Alias 用户别名包含用户、用户组%组名使用%引导、还可以包含其他其他已经用户的别名User_Alias OPERATORSzhangsan,tom,lisi,%wheel语法中别名 用户别名 用户 或 用户组 如果是多个用户以逗号进行分隔2Host_Alias主机别名主机名、IP、网络地址、其他主机别名 取反Host_Alias MAILSVRSsmtp,pop语法中主机别名 主机别名 主机名 IP 网络地址 其他主机名 3Cmnd_Alias命令路劲、目录此目录内的所有命令、其他事先定义过的命令别名Cmnd_Alias PKGTOOLS/bin/rpm,/usr/bin/yum命令语法别名 命令别名 命令 一定写绝对路径① 案例一 用户别名Host_Alias MYHOSTS kgc,localhostUser_Alias MYUSERS zhangsan,wangwu,lisiyjw%whellCmnd_Alias MYCMNDS /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm用户 主机 命令 6 0MYUSERS MYHOSTSNOPASSWD:MYCMNDSinit 6 重启init 0 关机② 案列二 用户别名例如以下操作通过别名方式来添加授权记录允许用户wangliu、 wangliu组、useradmin组 并且定义命令别名。在主机 smtp、pop 中执行 rpm、yum 命令User_Alias USERADMIN wangliu,%wangliu ,%useradminCmnd_Alias USERADMINCMND/usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd,!/usr/bin/passwd root #取反的优先级最高USERADMIN ALL(root) NOPASSWD: USERADMINCMND注bugsudo passwd root 测试解决方法Cmnd_Alias USERADMINCMND/usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,! /usr/bin/passwd root启用sudo操作日志visudoDefaults logfile /var/log/sudqsudo日志记录以备管理员查看应在/etc/sudoers 文件中增加“Defaults logfile”设置如果已经启用 sudo 日志则可以从/var/log/sudo 文件中看到用户的 sudo 操作记录。注启用日志Defaults logfile/var/log/sudo另外一个方法是/var/log/secure 日志可查看到sudo操作用户步骤sudo -1 #查看当前用户获得哪些sudo授权sudo输入命令第一次默认5分钟中文翻译Allow root to run any commands anywhere允许root在任何地方运行任何命令扩展案列sudosudo 配置记录的命令部分允许使用通配符“*”、取反符号“!”当需要授权某个目录下的 所有命令或取消其中个别命令时特别有用。例如若要授权用户 syrianer 可以执行/sbin/目录下除 ifconfig、route 以外的其他所有命令程序可以执行以下操作。visudosyrianer localhost/sbin/*,!/sbin/ifconfig,!/sbin/route默认情况下通过sudo方式执行的操作并不记录。若要启用 sudo验证结果通过 sudo 执行特权命令 对于已获得授权的用户通过 sudo 方式执行特权命令时只需要将正常的命令行作为 sudo命令的参数即可。由于特权命令程序通常位于/sbin、/usr/sbin 等目录下普通用户执 行时应使用绝对路径。以下操作验证了使用 sudo 方式执行命令的过程/sbin/ifconfig ens33:0 192.168.1.11/24在当前会话过程中第一次通过 sudo 执行命令时必须以用户自己的密码不是 root 用户或其他用户的密码进行验证。此后再次通过 sudo 执行命令时只要与前一次 sudo 操作的间隔时间不超过5min分则不再重复验证。 若要查看用户自己获得哪些 sudo 授权可以执行“sudo -l”命令。未授权的用户将会得 到“may not run sudo”的提示已授权的用户则可以看到自己的 sudo 配置。用户 syrianer 可以在该主机上运行以下命令 (root) /sbin/*, (root) !/sbin/ifconfig,(root) !/sbin/routesudo 就是一个灵活一种方式 来控制用户普通的系统权限通常用于一最小权限的一个原则来提升执行某些命令的权限 通过编辑/etc/sudoers配置文件或 visudo 编辑 管理员可以 精细去控制每个用户的权限场景 企业 服务器应用业务管理时 以及 堡垒机七.免密登录配置 扩展ssh 第一种方式要配置 SSH 免密登录您需要通过以下步骤来生成 SSH 密钥对并将公钥添加到目标服务器的~/.ssh/authorized_keys 文件中。1.生成 SSH 密钥对在本地机器上打开终端并运行以下命令来生成 SSH 密钥对如果还没有密钥对的话ssh-keygen -t rsa -b 4096系统会提示您选择文件存储位置和密码。可以按默认选择直接按回车。默认的密钥存储路径是~/.ssh/id_rsa。2.将公钥复制到目标服务器将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中。可以使用 ssh-copy-id 命令来自动完成这一步骤ssh-copy-id userhostnameuser 是目标服务器的用户名。hostname 是目标服务器的 IP 地址或域名。这条命令会将本地的公钥~/.ssh/id_rsa.pub复制到远程服务器的 ~/.ssh/authorized_keys 文件中。3.配置 SSH 服务确保目标服务器的 SSH 服务允许使用密钥进行身份验证并禁用密码登录可选。1. 编辑目标服务器上的 SSH 配置文件sudo nano /etc/ssh/sshd_config2. 确保以下配置项设置为PubkeyAuthentication yesPasswordAuthentication noPubkeyAuthentication yes 确保启用公钥身份验证。PasswordAuthentication no 禁用密码验证这一步是可选的但为了安全建议禁用密码登录。3.重启 SSH 服务以使配置生效sudo systemctl restart sshd4.测试免密登录现在您应该能够通过 SSH 免密登录到目标服务器。运行以下命令ssh userhostname如果配置正确您将直接登录到服务器而不需要输入密码。如果遇到问题可以检查 ~/.ssh/authorized_keys 文件的权限设置确保其权限为 600并且~/.ssh 目录的权限为 700。ssh第二种方法如果您不希望关闭 SSH 密码验证也不想修改 sshd_config 配置文件只需确保您已经正确配置了公钥认证这样就能实现免密登录。下面是无需修改 sshd_config 文件的配置步骤步骤 1: 生成 SSH 密钥对在本地机器上生成 SSH 密钥对。如果您还没有密钥对可以通过以下命令生成ssh-keygen -t rsa -b 4096按提示选择保存路径默认为 ~/.ssh/id_rsa然后选择是否设置密码如果不设置密码则直接按回车。步骤 2: 将公钥复制到目标服务器将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中。可以使用 ssh-copy-id 命令来实现ssh-copy-id userhostnameuser 是目标服务器的用户名。hostname 是目标服务器的 IP 地址或域名。该命令会自动将本地的 ~/.ssh/id_rsa.pub 公钥文件添加到目标服务器上的~/.ssh/authorized_keys 文件中。如果没有安装 ssh-copy-id您可以手动执行以下步骤cat ~/.ssh/id_rsa.pub | ssh userhostname mkdir -p ~/.ssh cat ~/.ssh/authorized_keys步骤 3: 设置 authorized_keys 权限确保目标服务器上的 ~/.ssh/authorized_keys 文件权限正确ssh userhostnamechmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys步骤 4: 测试免密登录现在您应该可以在本地机器上通过 SSH 免密登录到目标服务器ssh userhostname如果一切配置正确您将直接登录到目标服务器而无需输入密码。5.小结您只需要确保 ~/.ssh/authorized_keys 文件中包含正确的公钥并设置正确的文件权限即可实现免密登录。如果不修改 sshd_config密码验证依然有效因此您可以选择使用密码登录或公钥登录而不必禁用密码验证。总结1.组分为基本组用户默认所属和附加组用于授权访问额外资源。2.账号存储在/etc/passwd里组存储在/etc/group管理权限在/etc/sudoers加密密码在/etc/shadow3.文件有 读r、写w、执行x三类权限使用chmod修改权限chown修改归属-R进行递归修改