Linux用户管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户管理相关的知识,希望对你有一定的参考价值。

/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

[[email protected] yangrz]# su - yangrz

/etc/login.defs文件:

作用:

是否使用邮件,默认密码有效期、家目录权限等配置

[[email protected] ~]$ 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等

[[email protected] ~]# 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

[[email protected] ~]# 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

查看用户登录信息:

[[email protected] ~]# 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

[[email protected] ~]# ll /var/log/messages

-rw------- 1 root root 143 Nov 29 11:46 /var/log/messages

[[email protected] ~]# ls /var/log/lastlog

id、last、lastb、w、who、users、groups、newgrp

su命令:

- 切换shell环境

-c 用某个用户来执行命令(su - yangrz -c pwd)

sudo的原理:

技术分享

sudo授予su命令权限,很危险,这样就能切到root用户了。

技术分享

[[email protected] ~]$ 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. 用户组前面必须加%号。

以上是关于Linux用户管理的主要内容,如果未能解决你的问题,请参考以下文章

在每个用户的Rails中使用片段缓存

SnippetsLab for Mac 1.9 中文共享版 – 强大的代码收藏管理工具

片段 XXX 未与片段管理器关联

使用 Git 来管理 Xcode 中的代码片段

massCode 一款优秀的开源代码片段管理器

如何管理在每个 git 版本中添加私有代码片段?