linux 用户与组基础

1. 用户操作

一、用户操作

- 1、查看用户
id 用户名
cut -d : -f 1 /etc/passwd                               # 输出所有用户名
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1 # 输出可登陆的用户名
cat /ect/passwd                                         # 输出用户信息

/etc/passwd文件每一行代表一个用户,格式如下:
username:password:UserID:Group ID:comment:home directory:shell
  分别代表用户名、密码、用户ID(整数)、组ID(整数)、用户说明、用户登陆的主目录、
  用户登陆后执行命令。值得注意的是密码现在不存这个文件了,改成 /etc/shadow 文件。

- 2、添加用户

复制代码
useradd -h                           # useradd命令帮助
useradd username                     # 添加一个用户username
useradd username -g groupname                      # 添加一个用户并加入group组中,组不存在会报错
useradd username -g groupname -s /bin/false        # 创建不登陆的用户
useradd username -g groupname -s /sbin/nologin     # 创建不登陆的用户

useradd mysql -g mysql -s /bin/false -r            # 创建系统用户,且不用登陆,系统用户是不会创建用户目录的

- 3、设置用户密码
passwd username # 设置用户密码

- 4、修改用户

usermod -h                                           # usermod命令帮助
usermod username -l username2                        # 修改用户username登陆名为username2
usermod username -l username2 -d /home/username2 -m  # 修改用户名、home目录
usermod username -g groupname                        # 修改用户组

# 小技巧:将系统用户改为普通用户
usermod username -s /bin/bash               # 修改Shell

mkdir /home/username                        # 创建用户目录,和/etc/passwd中的保持一致
cp /etc/skel/.bashrc /home/username/        # 环境变量文件,否则登陆时显示 -bash-4.2$
cp /etc/skel/.bash_profile /home/username/  #环境变量文件,否则登陆时显示 -bash-4.2$

- 5、删除用户
userdel -h            # userdel命令帮助
userdel username      # 删除用户,家目录和邮箱目录会被保留,再次创建该用户时会报错
userdel -r username   # 删除用户,家目录和邮箱目录同步删除
如果忘记使用-r参数,手工删除/home和/var/spool/mail对应的目录即可。
rm -rf /home/xxx                    # xxx代表用户名
rm -rf /var/spool/mail/xxx

- 6、其它
last           # 查看用户登陆记录

2. 用户密码操作

可以使用chage命令来手动修改账户的相关属性:
格式:chage [选项] 账户名
  
[选项]
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:账户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权账户来确定他们的密码或帐号何时过期。


passwd 命令用于修改用户密码,过期时间,认证信息等。

普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人的密码。

参数	作用
-l 	锁定用户,禁止登陆。
-u	解除锁定,允许登陆。
--stdin 允许通过标准输入修改用户密码,如 echo "NewPassWord" | passwd --stdin Username
-d  	删除密码,允许用户空密码登陆
-e  	强制用户在下次登陆时修改密码
-S	显示用户的密码是否被锁定,以及密码所采用的加密算法名称

# 修改用户密码策略(对root无效)
vim /etc/login.defs
 
 #修改如下参数
 PASS_MAX_DAYS 90#设置登录密码有效期90天
 PASS_MIN_DAYS 1  #登录密码最短修改时间,增加可以防止非法用户短期更改多次
 PASS_MIN_LEN 8  #登录密码最小长度8位
 PASS_WARN_AGE 7 #登录密码过期提前7天提示修改
 FAIL_DELAY 10 #登录错误时等待时间10秒
 FAILLOG_ENAB yes #登录错误记录到日志
 SYSLOG_SU_ENAB yes #当限定超级用户管理日志时使用
 SYSLOG_SG_ENAB yes #当限定超级用户组管理日志时使用
 MD5_CRYPT_ENAB yes #当使用md5为密码的加密方法时使用

3. 用户权限(visudo)

vim /etc/sudoers 或 visudo

# 允许用户可在任何地方运行任何命令

user ALL=(ALL) ALL  #这里省略了是否需要密码验证

 

# 允许用户组wheel可以以root的身份,在任何机器上免密码的运行所有命令

%wheel ALL=(ALL) NOPASSWD: ALL 

 

# 允许普通用户hong可以以root的身份,在任何机器上免密码的运行所有命令

hong ALL=NOPASSWD: ALL  

 

1"字段2"表示允许登录的主机, ALL表示所有; 如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令. 比如:

jack mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown

 

2)字段3,字段4是可以省略的,"字段3"如果省略, 相当于(root:root),表示可以通过sudo提权到root; 如果为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组)。

表示: 普通用户jack在主机(或主机组)mycomputer上, 可以通过sudo执行reboot和shutdown两个命令。"字段3""字段4"省略


3"字段5"是使用逗号分开一系列命令,这些命令就是授权给用户的操作; ALL表示允许所有操作。


# 授权单个或多个命令

linuxprobe ALL=(ALL) /usr/sbin/useradd, /bin/rm

# 授权单个或多个命令目录

linuxprobe ALL=(ALL) /usr/sbin/*, /usr/bin/*

# 授权单个或多个命令目录, 并排除某个特殊命令

linuxprobe ALL=(ALL) /usr/sbin/*, /usr/bin/*, !/usr/sbin/visudo

# 执行 sudo 时, 不用输用户密码, 直接执行命令

linuxprobe ALL=(ALL) NOPASSWD: /usr/sbin/useradd, /bin/rm

4. 用户组基础操作

- 1、查看用户组
cut -d : -f 1 /etc/group # 列出用户组名
cat /etc/group           # 输出用户组文件内存

- 2、添加用户组
groupadd -g 1001   # 指定gid
groupadd -g 1001 test # 添加test用户组

- 3、修改用户组
groupmod test -n mytest # 将test用户组改名为mytest

- 4、删除用户组
groupdel test # 删除test用户组,组不存在会报错

5. 实操

# 查看当前用户UID,查看当前用户所在的组
id

# 查看当前系统中的所有用户
cat /etc/passwd

# 查看当前系统中所有的组
cat /etc/group

# 创建组manager
groupadd manager
# 创建用户nova,并且该用户的附加组为manager
useradd -G manager nova
# 创建用户john,并且该用户不能以交互式方式登录系统
useradd -s /sbin/nologin john
# 创建用户lany,并且该用户的主要组为root组,且是manager和wheel组内成员
useradd -g root lany
usermod -G manager lanny
usermod -aG wheel lany
# 创建用户alex,为其添加注释“Hello World!”
useradd -c "hello" alex
# 创建用户tom,并且指定用户的UID为1234
useradd -u 1234 tom
# 以上所有用户的密码均为P@ssW9rD
echo P@ssW9rD | passwd --stdin nova


# 创建用户组ansible,并将该组内所有成员提权成root相同的权限,允许用户在不输入密码的前提下执行命令
groupadd ansible
vim /etc/sudoers 或 visudo
%ansible       ALL=(ALL)       NOPASSWD: ALL

# 将nova设置为与root相同的权限
vim /etc/sudoers 或 visudo
复制root那一行

# 为alex用户仅添加创建、修改、删除用户的权限
vim /etc/sudoers 
alex   ALL=     NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod

# 禁止user1账号做周期性计划任务。
echo “user1” > /etc/cron.deny

# oper1账号的密码必须90天更换一次
chage -M 90 oper1

# 要求oper1账号在首次登陆系统时强制更新密码为centos
Chage -d 0 oper1

# oper1账号的密码在2022年1月1日过期
chage -E '2022-01-01' oper1

# oper1账号的密码在30天后过期
date -d "+30day" +%F
chage -E '显示日期' oper1

# 强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
chage -d 0 -m 0 -M 90 -W 15 root

# 要求每当oper1用户登陆系统时,显示本月的日历。
Su - oper1
Vim .bashrc
添加cal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值