centos下的用户权限
一、日志操作步骤
1. 编辑/etc/profile
注意:分割线后注释掉
vim /etc/profile
在文件结尾插入如下代码
m_path1=/data/.log/script/$USER-date +%F-%H:%M.time
m_path2=/data/.log/script/$USER-date +%F-%H:%M.his
exec script -t 2>m_path2
:wq 保存文件。
mkdir -p /data/.log/script
chmod 777 /data/.log/script
source /etc/profile
然后source /etc/profile生效配置文件。
————————————分割线———————————
vim /etc/profile
在文件结尾插入如下代码
history
USER=whoami
USER_IP=who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'
if [ "$USER_IP" = "" ]; then
USER_IP=hostname
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=date +"%Y%m%d_%H:%M:%S"
export HISTFILE="/var/log/history/{USER}@{USER_IP}_DT"
chmod 600 /var/log/history/${LOGNAME}/history 2>/dev/null
:wq 保存文件。然后source /etc/profile生效配置文件。
2.生效后第一次需要root用户退出重进一下才能看到产生的日志文件
二、添加用户
以raines为例
1,创建用户 : useradd 用户名
useradd raines
2,给用户设置密码 : passwd 用户名
passwd raines
3,创建文件夹 : mkdir 文件夹名
mkdir /develop
4,创建用户组 : groupadd 用户组名
groupadd developgroup
5,将文件夹授权给用户组 (-R代表递归处理,将指定目录下的所有文件及子目录一并处理 ): chgrp -R 用户组名 **文件夹名
chgrp -R developgroup /develop
6,授权用户组写入权限:chmod -R 775 文件夹名称
chmod -R 775 /develop
7,将用户归属到某个用户组: usermod -G 附加组1, 附加组2, ..., 附加组N 用户名
usermod -G developgroup raines
8,强制用户在下一次登录时更改密码
chage --lastday 0 raines
三、设置用户权限
修改/etc/pam.d/su配置
//打开这个配置文件,找到如下行,并将行首”#”去掉,保存文件
auth required pam_wheel.so use_uid
修改/etc/login.defs文件
vi /etc/login.defs
//在文件末尾添加 SU_WHEEL_ONLY yes 保存文件
进入/etc/sudoers.d
vim /etc/sudoers.d/developgroup
%developgroup ALL=(ALL) NOPASSWD:ALL,!/usr/passwd [A Za z]*,!/usr/passwd root,!/bin/su
四、添加管理员权限用户
以添加用户北京为例
用户名:beijing
密码:beijing@L123.
具体命令
useradd beijing
passwd beijing
usermod -G developgroup beijing
chage --lastday 0 beijing
脚本
创建user.sh文件,添加如下内容
user=$1
useradd "${user}"
echo "{user}"
usermod -G developgroup "${user}"
chage --lastday 0 "${user}"
以创建用户beijing为例,sh user.sh beijing即创建成功。
五、用户使用
用户登录后,执行需要管理员权限的命令时,需要sudo 命令名或者sudo -i 命令名
为何使用sudo -i呢?使用sudo的时候,有的命令找不到环境变量,使用-i后跟命令后正常。
其他
sudo找不到命令错误解决(sudo无环境变量)
修改sudoers和/etc/profile文件
注意:此方法会使用alias命令用于设置指令的别名,导致使用sudo -h等参数命令时会提示命令错误
vim /etc/sudoers
//将其中Defaults env_reset改成Defaults !env_reset(取消掉对PATH变量的重置)。
vim /etc/profile
//在/etc/profile最后添加如下
alias sudo='sudo env PATH=$PATH'
//最后,使配置文件生效
source /etc/profile
用户单独权限
以raines用户为例
修改 /etc/sudoers 文件
root ALL=(ALL) ALL
raines ALL=(root) NOPASSWD:ALL,!/usr/passwd [A Za z]*,!/usr/passwd root,!/bin/su
%developgroup ALL=(ALL) NOPASSWD:ALL,!/usr/passwd [A Za z]*,!/usr/passwd root,!/bin/su
保存退出,一般得wq!,强制保存退出。
echo “新密码”|passwd --stdin 用户名
更新用户密码信息,适用于shell脚本
平时passwd hehe
[root@test etc]# echo “qwert” | passwd --stdin hehe
更改用户 hehe 的密码 。
passwd:所有的身份验证令牌已经成功更新。
查看centos中的用户和用户组
1、用户列表文件:/etc/passwd
2、用户组列表文件:/etc/group
3、查看系统中有哪些用户:
cut -d : -f 1 /etc/passwd
4、查看可以登录系统的用户:
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
强制用户在下一次登录时更改密码
背景
强制用户在下一次登录时更改密码可以使用chage命令
chage --lastday 0 用户名
原理:通过将用户的密码过期时间设置为 0 来表示密码已经过期,需要在用户再次访问系统之前立即更改。
或者chage --lastday 1970-01-01 用户名