/etc/skel目录:
作用:
/etc/skel目录是用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以点.开头的文件);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境。
面试题:
请问如下登录环境故障的原理及解决办法?
-bash-4.1$
-bash-4.1$
-bash-4.1$
-bash-4.1$
-bash-4.1$
这是因为用户家目录下缺少了.bashrc文件,去其他用户家目录下或/etc/skel目录下拷贝一份到此用户家目录下,退出重新登录即可。
解决过程:
-bash-4.1$ cp -a /etc/skel/.bashrc .
-bash-4.1$ exit
logout
[root@web01 yangrz]# su - yangrz
/etc/login.defs文件:
作用:
是否使用邮件,默认密码有效期、家目录权限等配置
[yangrz@web01 ~]$ cat /etc/login.defs|egrep -v "^#|^$"
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
/etc/default/useradd文件:
作用:
创建用户的时候去哪儿拷东西/etc/skel、默认bash等
[root@web01 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home #把用户的家目录建在/home中
INACTIVE=-1 #是否启用账号过期停权,-1表示不启用
EXPIRE= #账号终止日期,不设置表示不启用。
SHELL=/bin/bash #新用户默认所用的shell类型
SKEL=/etc/skel #配置新用户家目录的默认文件存放路径。即,当我们新建用户时,用户家目录下的文件都是从这里拷贝的。
CREATE_MAIL_SPOOL=yes #创建mail文件。
实例:创建yangrz用户,设置注释为HandsomBoy,UID为806,属组为root,登录bash为/bin/sh,设置家目录为/yangrz
[root@web02 ~]# useradd -c HandsomeBoy -u 806 -G "root" -s /bin/sh -d /yangrz yangrz
usrdel -r 连家目录一起删除,
生产场景中,请不要轻易用-r参数,这会在删除用户的同事删除用户家目录下的所有文件,目录。如果非要删除家目录,当用户家目录下有重要文件时,那么在删除前请先备份。操作前进行备份,在任何场合都是一个优秀运维人员的好习惯。
生产环境中比较好的删除用户的办法:
1. 在/etc/passwd文件中注释用户。
2. 把登录bash改成/sbin/nologin
3. passwd -l命令锁定用户,或者usermod -e设定过期时间
用户管理命令小结:
1、和用户相关的配置文件知识点:
/etc/passwd账号文件及不同列内容
/etc/shadow账号文件及不同列内容
/etc/group组文件及不同列内容
/etc/gshadow组密码文件及不同列内容
2、用户管理命令
useradd -u -g -G -s –M -e -c -d
对应/etc/shkl,/etc/default/useradd,/etc/login.defs
userdel –r
usermod -u -g -G -s -M -e -c -d -L -U -l
id
chage -l -E -M -W -m -n
passwd --stdin -n -i -w -x
su
sudo
visiudo
3.组管理命令
groupadd -g
groupdel
groupmod
查看用户登录信息:
[root@web02 ~]# ll /var/log/secure*
-rw------- 1 root root 718 Nov 29 15:01 /var/log/secure
-rw------- 1 root root 12962 Nov 12 20:52 /var/log/secure-20151112
-rw------- 1 root root 1594 Nov 13 19:31 /var/log/secure-20151115
-rw------- 1 root root 6031 Nov 22 12:09 /var/log/secure-20151122
-rw------- 1 root root 11016 Nov 29 10:31 /var/log/secure-20151129
[root@web02 ~]# ll /var/log/messages
-rw------- 1 root root 143 Nov 29 11:46 /var/log/messages
[root@web02 ~]# ls /var/log/lastlog
id、last、lastb、w、who、users、groups、newgrp
su命令:
- 切换shell环境
-c 用某个用户来执行命令(su - yangrz -c pwd)
sudo的原理:
sudo授予su命令权限,很危险,这样就能切到root用户了。
[oldboy@web02 ~]$ sudo -l
Matching Defaults entries for oldboy on this host:
requiretty, !visiblepw, always_set_home, env_reset,
env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY",
secure_path=/sbin:/bin:/usr/sbin:/usr/bin
User oldboy may run the following commands on this host:
(ALL) NOPASSWD: ALL
sudo -l 查看用户有什么sudo权限。
sudo -K 让时间戳信息失效,下次还要输入密码
visudo 可以检查配置文件,如果配置错误,就无法保存,
如果用vim /etc/sudoers就没有这个功能,如果出错就不能用sudo的功能了,这时可以用visudo -c来检查配置文件的正确与否。
visudo=====vi /etc/sudoers
详细讲解sudo配置文件:
格式:
user MACHINE=COMMANDS
oldboy ALL=(ALL) NOPASSWD:/bin/rm
oldboy ALL= (ALL) NOPASSWD :/bin/rm
User_Alias Host_Alias= (Runas_Alias) Cmnd_alias
Host_Alias FILESERVERS = fs1, fs2
User_Alias ADMINS = oldboy,oldgirl,%sa(sa组的所有用户)
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/pin
g, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcom
m, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Runas_Alias OP = root, oldboy(角色别名,sudo可以切换到的角色)
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/pin
g, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcom
可以用来续行
sudo配置文件/etc/sudoers授权规则注意事项总结:
1. 授权规则中的所有ALL字符串必须为大写字母。
2. 经测试,命令是从后往前生效的,比如让用户可以使用所有的/sbin/*命令,但排除/sbin/useradd可以把!/sbin/useradd写到后边。
3. 一行内容超长可以用“”斜线换行。
4. !表示非,!/bin/ifconfig,不能使用此命令
有关sudo参考资料:
1)/etc/sudoers
2)man sudoers
3)man sudo
sudo配置注意事项:
1. 命令别名下的成员必须是文件或目录的绝对路径。
2. 别名名称是包含大写字母、数字、下划线,如果是字母都要大写
3. 一个别名下有多个成员,成员与成员之间,通过半角“;”号分隔;成员必须是有效实际存在的。
4. 别名成员受别名类型Host_Alias、User_Alias、Runas_Alias、cmnd_Alias的制约,定义什么类型的别名,就要有什么类型的成员相匹配。
5. 别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过“”来续行。
6. 指定切换的用户要用()括号括起来。如果省略括号,则默认为root用户;如果括号里是ALL,则代表能切换到所有用户。
7. 如果不需要密码直接运行命令的,应该加NOPASSWD参数。
8. 禁止某类程序或命令执行,要在命令动作前面加上”!”号,并且放在允许执行命令的后面。
9. 用户组前面必须加%号。