目录

Linux用户权限管理

目录

一、Linux用户工作组

  1. 用户
adduser username				# 通过adduser,添加一个普通用户
passwd username					# 修改用户密码

useradd -g groupName username	# 新建用户同时增加到工作组  -g 所属组 -d 家目录 -s 所用的SHELL

userdel username
userdel -r username             # 删除用户和相应的目录
usermod –G username username    # 强制删除该用户的主目录和主目录下的所有文件和子目录

passwd username –l				# 锁定用户账号,禁止使用
passwd username –u				# 解锁用户账号
passwd username -n 天数         # 密码不可改天数  (-x 天数  密码过期天数| -w 天数  警告天数)

chage -d 0 username				# 用户登录后必须修改密码
chage -M 60 -m 7 -W 7 username	# 60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息
chage -l username				# 用户以及密码的有效期
  • 其他:临时禁用用户账号,在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上就可以了。想恢复该用户,去掉即可。
  1. 工作组
groupadd groupName				# 新建工作组
groupdel groupName
  1. 用户与工作组
groups username					#查看用户所属组
usermod -G groupName1,groupName2 username				#覆盖原来的组,换成groupName1,groupName2
usermod -aG groupName3 username							#附加上groupName3组

sudo gpasswd -A user1,user2 groupName					#设置群组管理员为user1,user2
sudo gpasswd -M user1,user2 groupName                   #添加多个用户到groupName组
gpasswd -a username groupName                           #添加单个到组(组管理员操作命令)
gpasswd -d userName groupName                           #删除组中单个用户(组管理员操作命令)

4.显示用户和用户组信息

  • 用户列表文件:/etc/passwd
  • 用户组列表文件:/etc/group
who                                                  #显示目前登录用户

w username                                           #查看某一用户的在线信息

id username                                          #显示用户及用户组信息

lid -g groupName                                     #查询用户组下所有用户

last  username                                       #显示用户登录历史记录

二、Linux用户权限

  • linux chmod u+s、g+s、o+t 解析 :https://www.dazhuanlan.com/a1450155594/topics/981916
chmod 755 file				#对文件或目录,赋rwxr-xr-x权限,文件属主、同组用户、其他用户
chmod +x file 				#添加可执行权限
chmod u+s file				#运行时以属主身份运行

chown -R username:groupName fileOrDir  # 修改文件所有者及组 -R递归处理,将指定目录下的所有文件及子目录一并处理
chgrp -v -R groupName fileOrDir		   # 于变更文件或目录的所属群组

三、赋予普通用户root权限(sudoers)

  1. 方法一: 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示(推荐):
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
username   ALL=(ALL)     ALL

修改完毕,现在可以用username帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

  1. 方法二: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

然后修改用户,使其属于root组(wheel),命令如下:

#usermod -aG wheel username			#二选一
#usermod -g root username

修改完毕,现在可以用username帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

  1. 方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示(不推荐):
username:x:500:500:username:/home/username:/bin/bash

修改后如下

username:x:0:500:username:/home/username:/bin/bash

保存,用username账户登录后,直接获取的就是root帐号的权限。

四、禁止普通用户 su 到 root

  • 需分别修改 /etc/pam.d/su 和 /etc/login.defs 两个配置文件
  1. 去除/etc/pam.d/su文件中如下行的注释:
#auth            required        pam_wheel.so use_uid
  1. 在/etc/login.defs文件中加入如下配置项:
# only people in group wheel can use su command
SU_WHEEL_ONLY yes
  1. 若希望其他指定普通用户su至root,可以执行如下命令将该用户添加至wheel组中
gpasswd -a username wheel
  1. 若用户可以sudo,则可添加自己到wheel组,此方案失效。所以这只能针对真正意义上的普通用户。

五、其他

  1. /etc/sudoers文件相似配置说明
username ALL=(ALL) ALL 
%groupName ALL=(ALL) ALL 
username ALL=(ALL) NOPASSWD: ALL 
%groupName ALL=(ALL) NOPASSWD: ALL
username ALL=(ALL) ALL,!/bin/su

# 第一行:允许用户username执行sudo命令(需要输入密码). 
# 第二行:允许用户组groupName里面的用户执行sudo命令(需要输入密码). 
# 第三行:允许用户username执行sudo命令,并且在执行的时候不输入密码. 
# 第四行:允许用户组groupName里面的用户执行sudo命令,并且在执行的时候不输入密码. 
# 第五行:允许用户username执行sudo命令(需要输入密码),但不允许以root身份使用su命令 **

2.示例

  • 我们期望用户test 可以以管理员权限执行/usr/bin、/bin下的所有命令,但是不能修改其他用户密码以及kill其他用户进程,可以配置如下:
username ALL=/usr/bin/, !/usr/bin/passwd, /bin/,  !/bin/kill

六、推荐阅读

← 返回技术