13、linux中⽤户和⽤户组
linux是多⽤户多进程的系统;
每个⽂件和进程都需要应对⼀个⽤户和⽤户组;
linux系统通过uid和gid来识别⽤户和组的;
⼀个⽤户必须要有唯⼀的uid和⼀个主组来识别⾝份,不同的⽤户可以使⽤同⼀个组作为主组,⽤户可以加
⼊不同的组,⽤户和组的关系是⼀对⼀、⼀对多,多对⼀。
linux管理员:root;
超级⽤户:uid 0 root 、普通⽤户:uid 500-65535、虚拟⽤户:uid1-499 满⾜是⽂件或服务启动的需要;
13.1、和⽤户有关的四个⽂件:
/etc/passwd(⽤户账号⽂件) /etc/shadow(⽤户密码⽂件) /etc/group(组账号⽂件) /etc/gshadow(组密码⽂件);
以上⽂件内容是有冒号分割,/etc/passwd内容需要⽐较熟悉,其它⽂件只需要了解;
13.2、/etc/skel⽬录:
⽤户的初始化⽬录,新建⽤户后都会copy这个⽬录中的内容;
可以把通知的内容放到该⽬录下,可以让新⽤户可以看到;
统⼀初始化新⽤户的初始环境变量;
13.3、出现-bash-4.1$ 问题原因及解决⽅法:
-bash-4.1$ cp -av /etc/skel/.bash* /home/lc1/
`/etc/skel/.bash_logout' -> `./.bash_logout'
`/etc/skel/.bash_profile' -> `./.bash_profile'
`/etc/skel/.bashrc' -> `./.bashrc'
chown -R  lc1:lc1 /home/lc1
chomod 700 /home/lc1
[root@centos6 ~]# su - lc1
[lc1@centos6 ~]$ su root
Password:
[root@centos6 lc1]#
13.4、更改⽤户的密码和账号策略:
系统默认策略(可以对以后建⽴的⽤户⽣效);
/etc/login.defs:密码策略;
PASS_MAX_DAYS 99999:密码的最⼤有效期, 99999:永久有期;
PASS_MIN_DAYS 0:是否可修改密码,0表⽰可修改,⾮0表⽰多少天后可修改;
PASS_MIN_LEN 5:密码最⼩长度,但是使⽤pam_cracklib.so模块后,该参数不再有效(这个参考下⾯密码复杂度规则设定);
PASS_⽤WARN_AGE 7:密码失效前多少天在户登录时通知⽤户修改密码;
/etc/default/useradd:账号策略;
(默认情况下useradd+⽤户名创建的普通⽤户密码永久有效,账号没有过期停权的内容(在默认的⽂件中存放,不动))
13.5、⽤户和组操作:
1. passwd⽂件:
(1)/etc/passwd⽂件的功能:
存储所有⽤户的相关信息,该⽂件也被称为⽤户信息数据库(Database)。
(2)/etc/passwd⽂件每个字段的具体含义:
root:x:0:0:root:/root:/bin/bash
1)第1个字段:记录的是这个⽤户的名字(在创建⽤户时root⽤户起的)。
2)第2个字段:如果是x,表⽰该⽤户登录Linux系统时必须使⽤密码;如果为空,则该⽤户在登录时⽆须提供密码。
3)第3个字段:记录的是这个⽤户的uid。
4)第4个字段:记录的是这个⽤户所属组的gid。
5)第5个字段:记录的是有关这个⽤户的注释信息(如全名或通信地址)。
6)第6个字段:记录的是这个⽤户的家⽬录的路径。
7)第7个字段:记录的是这个⽤户登录后,第⼀个要执⾏的进程。
2、shadow⽂件:
(1)/etc/shadow⽂件的功能:
存储所有⽤户的密码,每⼀个⽤户占⽤⼀⾏记录,该⽂件实际上就是存放⽤户密码的数据库(Database)。
(2)/etc/shadow⽂件每个字段的具体含义:
root:6
MSHWWdIaEm43lNq1$d9UAZy5tiZtN1O/vDme3gXhRTt5cH9lcyVU7BxD4hkRb6TO/kj2Zxp7VeWE9l/DQ0VuklGoJYM1p/aWGEUgTl.::0:99999:7::: 1)第1个字段:记录的是⽤户名。
2)第2个字段:记录的是密码,这个密码是经过MD5加密算法加密过的密码。
3、group⽂件:
(1)/etc/group⽂件的功能:
存放了Linux系统中所有组的信息,它实际上就是⼀个存放组信息的数据库(Database)。
(2)/etc/group⽂件每个字段的具体含义:
root:x:0:
1)第1个字段是这个组的名字。
2)第2个字段中的x表⽰这个组在登录Linux系统时必须使⽤密码。
3)第3个字段记录的是这个组的gid。
4)第4个字段记录的是这个组⾥还有哪些组成员。
4、gshadow⽂件:
(1)/etc/gshadow⽂件的功能:
存放了Linux系统中所有组的密码信息,它实际上就是⼀个存放组密码信息的数据库(Database)。
(2)/etc/gshadow⽂件每个字段的具体含义:
root:::
Processing math: 100%
组名:加密密码:组管理员:组附加⽤户列表
组密码说明:对于⼤多数⽤户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该组没有组密码,也不设有组管理员。
5、useradd命令(增加新⽤户):
会修改/etc/passwd和/etc/shadow⽂件。
(1)参数解析:
–u:指定⽤户的UID
–g:指定⽤户属于的主组
–d:指定⽤户的家⽬录,新账号登录后所使⽤的home_dir
–c:指定⽤户的备注信息,新账号/etc/passwd栏的说明栏,注释
–s:指定⽤户所⽤的shell,登录shell(/sbin/nologin)l(重要)
-e:指定⽤户账号终⽌⽇期,⽇期格式是MM/DD/YY
-G:指定⽤户可以属于多个组,⽤id +⽤户名命令查看
-M:指定创建⽤户时不建⽴家⽬录
(2)例⼦:
1)在系统中新增⼀个⽤户user01,主组为police以及uid为600的命令:
useradd –u 600 –g police user01
6、usermod命令(修改⽤户信息,修改登录名,⽤户的家⽬录等等):
会修改/etc/passwd和/etc/shadow⽂件。
(1)参数解析:
–u:修改⽤户的UID
–g:修改⽤户的GID
–G:将⼀个⽤户加⼊到指定的组中
–d:修改⽤户的家⽬录
–c:修改⽤户的备注信息
–s:修改⽤户所⽤的shell
-L:锁定⽤户的密码
-
U:解锁⽤户的密码
-e:修改账号终⽌⽇期,⽇期格式是MM/DD/YY
-M:删除⽤户的家⽬录
-a:将⽤户追加⾄上边 -G 中提到的附加组中。
(2)例⼦:
1)将/home/babies⽬录作为babydog4⽤户家⽬录的命令:
usermod -d /home/babies babydog4
2)将babydog6组作为babydog4⽤户的附属组的命令:
usermod -a -G babydog6 babydog4
3)将dog组变更为babydog4⽤户主组的命令:
usermod -g dog babydog4
4)将⽤户babydog4从babydog6组中删除的命令:
gpasswd -d babydog4 babydog6
5)将⽤户babydog4加⼊到babydog6组中的命令(和2)的效果⼀致):
gpasswd -a babydog4 babydog6
7、groupadd命令(增加新组):
会修改/etc/group和/etc/gshadow⽂件。
(1)参数解析:
1)–g:指定组的GID。
(2)例⼦:
1)在系统中新增加⼀个名为boydogs的组的命令:
groupadd boydogs
8、groupmod命令(修改⼀个组账号的信息):
(1)参数解析:
1)–g:修改组的GID
2)–n:修改组的名称
(2)例⼦:
1)修改police组的gid为521的命令:
groupmod –g 521 police
2)将组boydogs改名为daddogs的命令:
groupmod –n daddogs boydogs
3)删除daddogs组的命令:
groupdel daddogs
9、补充:
passwd(/etc/passwd):设置⽤户的密码
root的初始密码groupdel:删除⽤户组
13.6、userdel :删除⽤户:
-r:删除⽤户和⽤户的家⽬录
13.6.1、企业场景处理⽅法:
vi /etc/passwd:
注释掉该⽤户,观察⼀个⽉,这样出了问题可以还原,相当于操作的备份
把登录shell改成/sbin/nologin
提⽰:只要修改和删除都要⼩⼼
修改已建⽤户的密码和账号策略
13.7、change(1/etc/passwd),设置或修改⽤户密码的有效期(该命令改变是 /etc/shadow 中的属性):-m:密码可更改的最⼩天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最⼤天数。
-w:⽤户密码到期前,提前收到警告信息的天数。
-E:帐号到期的⽇期。过了这天,此帐号将不可⽤。
-d:上⼀次更改的⽇期。
-I(⼤写的i):停滞时期。如果⼀个密码已过期这些天,那么此帐号将不可⽤。
-l(⼩写的L):例出当前的设置。由⾮特权⽤户来确定他们的密码或帐号何时过期。
13.8、change修改的⽂件是/etc/shadow⽂件:
root: 6
.4IJ3hJY$iwBpHiKVYENQp.19ir8n21ivFt2TRIp0TwI5YVSHkLLk79QWhTAzXbNMZRvYWl0FXrWzp.KLSaC7pHmBDjB7i1:17787:0:99999:7::: 1、我的服务器root帐户密码策略信息如下:
[root@linux ~]# chage -l root
最近⼀次密码修改时间:3⽉ 12, 2013
密码过期时间:从不
密码失效时间:从不
帐户过期时间:从不
两次改变密码之间相距的最⼩天数:0
两次改变密码之间相距的最⼤天数:99999
在密码过期之前警告的天数:7
2、我可以通过如下命令修改我的密码过期时间:
[root@linux ~]# chage -M 60 root
[root@linux ~]# chage -l root
最近⼀次密码修改时间: 3⽉ 12, 2013
密码过期时间: 5⽉ 11, 2013
密码失效时间:从不
帐户过期时间:从不
两次改变密码之间相距的最⼩天数:0
两次改变密码之间相距的最⼤天数:60
在密码过期之前警告的天数:7
3、然后通过如下命令设置密码失效时间:
[root@linuxde ~]# chage -I 5 root
[root@linuxde ~]# chage -l root
最近⼀次密码修改时间:3⽉ 12, 2013
密码过期时间:5⽉ 11, 2013
密码失效时间:5⽉ 16, 2013
帐户过期时间:从不
两次改变密码之间相距的最⼩天数:0
两次改变密码之间相距的最⼤天数:60
在密码过期之前警告的天数:7
从上述命令可以看到,在密码过期后5天,密码⾃动失效,这个⽤户将⽆法登陆系统了。
13.9、显⽰⽤户的的时间:
[root@centos6 lc1]# echo "$PS1"
[\u@\h \W]$
[root@centos6 lc1]02:37:46$
13.10、查看linux中各⽤⽤户和组的情况:
who:计算机⽤户的登录情况
lastlog:最近登录的情况
groups:当前⽤户在哪些组⾥
id:查看⽤户的uid、gid(主组)及所加⼊的全部组;
[root@centos6 ~]# id lc1
uid=999(lc1) gid=1000(dddd) groups=1000(dddd),999(lc1)
users:显⽰⽤户中所有的⽤户
su:⾓⾊切换
root⽤户切换到其它⽤户不需要密码
su - lc1(中间的“-”表⽰的是切换⽤户⾝份加载环境变量,是env中的环境变量)
由普通⽤户切换到root⽤户需要密码
-c:执⾏其它⽤户的命令,且不退出当前的⽤户
[root@centos6 ~]# su - lc1 -c pwd
/home/lc1
[root@centos6 ~]#
企业应⽤场景:
以指定⽤户⾝份开机⾃启动服务
13.11、sudo:普通⽤户可以拥有root或其他⽤户的权限:
普通⽤户必须要知道root密码才能切换到root,这样root密码就泄露了,不安全,⽽使⽤su命令
切换⾝份后的⾝份⽆法精细控制,拿到超级权限的⼈可以为所欲为,⽽且还泄露了密码;
通过sudo命令,我们可以把某些超级⽤户权限分类有针对性授权给普通的⽤户,并且普通⽤户不需要
知道root密码就可以使⽤得到的授权,创建的⽂件(管理员真正允许的root权限);
13.11.1、sudo的流程:
13.11.2、命令详解:
主机别名(⼀个sudo⽂件多台主机进⾏使⽤):
13 # Host_Alias FILESERVERS = fs1, fs2
14 # Host_Alias MAILSERVERS = smtp, smtp2
注意书写的规范,“=”号两边有空格
注意定义规范,每个成员⽤逗号分隔,逗号后⾯有空格
⽤户别名:
20 # User_Alias ADMINS = jsmith, mikem, %groupname
给普通⽤户所有的权限,相当于root 可以直接 sudo - root,特别的不安全
13.11.3、visudo:
root(⽤户名),ALL(机器名,ALL,代表当前的机器) =(ALL)(代表⽤户的⾓⾊,ALL默认代表root⽤户和所有的⽤户,如果什么都不给代表的是root ⽤户⾓⾊),NOPASSWD(代表⽆密码登录):ALL(代表所有的命令)
根据需求进⾏分析;
检查配置(如果不进⾏检查会导致/etc/sudoers ⽂件内语法错误,导致sudo⽆法使⽤)
[root@centos6 ~]# visudo -c
/etc/sudoers: parsed OK
[root@centos6 ~]# grep lc1 /etc/sudoers
lc1 ALL=(ALL) NOPASSWD:ALL
[lc1@centos6~]sudo useradd lc2
Sorry, user lc1 is not allowed to execute '/bin/su - root' as root on centos6.7.
13.11.4、查看⽤户的sudo权限:
su - lc1 :登录⽤户
sudo -l :显⽰⽤户当前的权限
给⽤户适当的授权,只给⽤户创建⽂件的权限(⽤户原本是普通⽤户时的命令依然可⽤,只是⽤来确定⽤户可以使⽤root的⾓⾊可以⼲哪些事情) visudo:
[lc1@centos6 /]$ sudo
[lc1@centos6 /]$ ls -
-rw-r--r-- 1 root root 0 Sep 14 05:
[lc1@centos6 /]$ sudo echo "123" &
-bash: : Permission denied
13.11.5、配置sudo命令⽤户⾏为审计:
并不记录普通⽤户的普通操作,⽽是记录那些执⾏sudo命令的⽤户的操作
⽣产环境企业⽇志审计解决⽅案
sudo配合rsyslog服务,进⾏⽇志审计
visudo编辑 /etc/sudoers ⽂件,在最后⾯追加⼀⾏ Defaults logfile=/var/log/sudo.log
visudo -c :检查语法;
⽤普通⽤户操作sudo命令,在/var/log/sudo.log中都有⽇志记录;
[root@centos6 ~]# cat /var/log/sudo.log
Sep 14 20:35:43 : lc1 : command not allowed ; TTY=pts/1 ; PWD=/home/lc1 ;
USER=root ; COMMAND=/bin/ls -l /
13.12、linux ⽤户补充知识:
封建社会:
root:皇帝
普通⽤户:⽼百姓
虚拟⽤户:系统⾥的傀儡,不能使⽤,固定存在,满⾜linux⾥⾯服务进程及程序属主的要求⽽存在,进程及程序都属于⽤户
添加⽤户:
useradd lc
psswd lc(赋予⽤户密码)
⾮交互式更改密码
su - lc :⾓⾊切换家⽬录为/home/lc/ (只能查看,不能更改服务,修改⽂件)
$普通⽤户、 #root⽤户(家⽬录/root) ;从普通⽤户切到root⽤户要密码,从root⽤户切到,普通⽤户不需要密码;
whoaim:查看当前⽤户是谁
查看主机名:uname -n hostname
修改主机名:hostname lc (临时⽣效,重启⽆效)
修改主机名永久⽣效的⽅法
vi /etc/sysconfig/network(需要重启)此时再使⽤命令hostname +主机名实现永久修改
[root@centos6 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6.7
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 centos6.7

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。