shell脚本自动创建用户设置家目录等
程序员文章站
2022-06-30 16:36:24
...
useradd命令基础
- useradd 用来创建用户帐号
- 通过 passwd 设定帐号的密码
- userdel 删除用户帐号所有信息
- useradd 创建的用户信息,保存在 /etc/passwd 文件
用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的家目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
命令行管理用户
- 添加用户
useradd [参数] 用户名
1、默认设置
# useradd redhat
# tail -n1 /etc/passwd
redhat:x:1001:1001::/home/redhat:/bin/bash
# id redhat
uid=1001(redhat) gid=1001(redhat) groups=1001(redhat)
2、指定用户家目录
# mkdir /data/
# useradd -d /data/centos/ centos
# tail -n1 /etc/passwd
centos:x:1002:1002::/data/centos:/bin/bash
# id centos
uid=1002(centos) gid=1002(centos) groups=1002(centos)
3、指定用户家目录、用户组(一定是已经存在的用户组!)
# cat /etc/group | grep users ## 查看已存在的 users 用户组
users:x:100:
# useradd -d /data/ubuntu/ -g users ubuntu
# tail -n1 /etc/passwd
ubuntu:x:1003:100::/data/ubuntu/:/bin/bash
# id ubuntu
uid=1003(ubuntu) gid=100(users) groups=100(users)
## 常用的参数
-u 指定用户uid
-g 指定用户初始组信息,这个组必须已经存在
-G 指定附加组,这个组必须存在
-c 用户说明
-d 用户家目录
-s 用户所使用的shell,/etc/shells记录了用户能使用shell的名
- 删除用户
userdel -r 用户名 ## -r 表示删除用户信息及用户的系统配置
# userdel -r centos
- 用户信息更改
(5) 用户信息更改
usermod 参数 用户
-l # 更改用户名称
-u # 更改uid
-g # 更改gid
-G # 更改附加组
-aG # 添加附加组
-c # 更改说明
-d # 更改家目录指定
-md # 更改家目录指定及家目录名称
-s # 更改shell
-L # 冻结帐号
-U # 解锁
## 更改用户redhat的家目录
# usermod -d /data/redhat redhat
## 更改用户redhat的用户组
# usermod -g users redhat
# id redhat
uid=1001(redhat) gid=1001(redhat) groups=1001(redhat)
# usermod -l redhat02 redhat # 更改用户名redhat为redhat02
# id redhat
id: redhat: no such user
# id redhat02
uid=1001(redhat02) gid=1001(redhat) groups=1001(redhat)
- 用户权限下放
在系统中超级用户可以下放普通用户不能执行的操作命令给普通用户
超级用户执行 visudo 进入编辑 /etc/sudoers模式
格式: 用户 用户所在的主机名 =(下放权限的用户身份) 命令
## 查看主机名
[aaa@qq.com ~]# hostname
server2
## 新增用户hadoop
# useradd hadoop -d /data/hadoop -g users
## 设置密码
# passwd hadoop
## 超级用户root 执行 visudo
[aaa@qq.com ~]# visudo
## 找到第 90 行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## 在其后添加(可以执行yum,kill,killall,并且不需要输入用户密码)
## Allow hadoop to run any commands anywhere
hadoop server2=(root) NOPASSWD:/usr/bin/yum, /bin/kill,/usr/bin/kill, /usr/bin/killall
hadoop用户能在server2主机内以超级用户身份执行 NOPASSWD执行 yum,kill,killall命令,并且不用输入该用户密码
下放权限前后对比
脚本自动化创建用户
[aaa@qq.com ~]# vim useraddSRE.sh
#!/bin/sh
## default setting
user='kafka'
group='users'
dir='/data/'
homedir=$dir$user
password='aaa@qq.com'
## add the account
useradd -d $homedir -g $group $user >/dev/null
## modify the validity period of the account and password
chage -M 99999 $user
echo $user:$password | chpasswd >/dev/null
## create a directory and change its permissions
[ ! -d $homedir ] && mkdir /data/
chown -R $user:$group $homedir >/dev/null
chmod -R 644 $homedir >/dev/null
cd $homedir
chage用法
chage命令 是用来修改帐号和密码的有效期限
chage [选项] 用户
用法:chage [选项] 用户
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户设置信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
/etc/login.defs 默认设定了几个参数,以后设置口令可以按照此文件的参数设定为准
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
也可以在/etc/default/useradd可以找到如下2个参数进行设置
## useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。
[aaa@qq.com ~]# chage -l kafka
举例! 设置密码过期7天后,密码自动失效,该用户将无法登陆系统。
[aaa@qq.com ~]# chage -M 60 kafka ## 设置密码最大过期时间为60天
[aaa@qq.com ~]# chage -I 7 kafka ## 设置密码失效时间为7天
[aaa@qq.com ~]# chage -l kafka ## 查看设置信息
文件的拥有属性
- chgrp 改变文件或目录的用户组
# chgrp -R root /data/kafka/
- chown 改变文件或目录的拥有者
# chown -R root /data/kafka/
- 同时改变文件或目录的拥有者和用户组
# chown kafka.users /data/kafka/
# chown root:root /data/kafka/