第7讲 Linux用户管理.docx
《第7讲 Linux用户管理.docx》由会员分享,可在线阅读,更多相关《第7讲 Linux用户管理.docx(16页珍藏版)》请在冰豆网上搜索。
第7讲Linux用户管理
第7讲Linux用户管理
用户管理配置文件:
2
用户信息文件:
/etc/passwd2
密码文件:
/etc/shadow2
手工添加用户的步骤:
3
用户组的信息:
/etc/group3
新用户配置文件目录:
/etc/skel3
登录信息文件:
/etc/motd4
添加用户:
4
useradd选项用户名–D查看缺省参数4
passwd用户名(-d)空密码4
SetUID(4)(SUID):
U=user4
修改用户信息:
5
useradd5
usermodmodformodify5
userdeldelfordelete6
用户组管理命令:
6
groupadd添加用户组6
groupmod-n新组名旧组名6
groupdel删除组6
gpasswd(UNIX不支持,AIX、Solaris、HP-UX)6
用户授权实例:
7
用户管理命令:
7
管理员授权sudo:
8
案例:
限制用户su为root:
10
用户授权案例:
授权用户jack和mary对目录/software有写权限10
用户管理配置文件:
在linux中在命令模式下写的命令,一般只是当前生效。
只有写入配置文件后才能长期有效
帮助类型:
命令的帮助1、配置文件的帮助5、
如果想得到命令或配置文件的帮助,先用whereis查看命令或配置文件的查看帮助顺序号
然后用:
man顺序号命令或配置文件
用户信息文件:
/etc/passwd
查看系统所有用户:
vi/etc/passwd
每个用户的信息占一行:
account:
password:
UID:
GID:
GECOS:
directory:
shell
例如root用户:
root:
x:
0:
0:
root:
/root:
/bin/bash
统计用户数:
wc-l/etc/passwd
root-用户名
x-密码位(并没有存放真正的密码)
UID-UserID用户数字标识,ID=0就是管理员
超级用户:
root–UID=0;普通用户:
UID:
500-60000;伪用户:
UID:
1-499
伪用户:
a.不能登录系统命令解释器为/sbin/nologin,b.大多是没有宿主目录
GID-GroupID缺省用户组标识
用户组:
同样类型的用户集合
1、每个用户必须有至少一个用户组
添加用户没指定用户组,系统会缺省创建一个和用户同名的组
功能组webadmin、组织组project
2一个用户可以属于多个组
3、授权:
对用户组授权就是对组内成员授权
GECOS-描述建议写描述jacklee"project01lisi"
directory-用户宿主目录root-/rootuser-/home/username
shell-命令解释器/bin/bash
密码文件:
/etc/shadow
例如:
root:
$1$aYsb7lwt$xi5CNJbidxZ9leZBuyT4u.:
15103:
0:
99999:
7:
:
:
Root:
用户名
$1$aYsb7lwt$xi5CNJbidxZ9leZBuyT4u:
密码的密文
15103:
密码最后修改时间(天)
0:
密码最小修改时间(天)
99999:
密码最大修改时间(天)限定用户定期更改密码
7:
警告时间(天)
注:
最大间隔时间和警告时间配合使用
注:
/etc/passwd里存放的是用户名的信息,系统登录时检测里面的用户名
/etc/shadow里存放的是用户的密码信息,系统登录时检测里面的密码
将/etc/shadow里的密码回写到/etc/passwd里用命令:
pwunconv
将/etc/passwd里的密码写到/etc/shadow里用命令:
pwconv
范例:
[root@localhost~]#grepshaolin/etc/passwd/etc/shadow
/etc/passwd:
shaolin:
x:
501:
501:
:
/home/shaolin:
/bin/bash
/etc/shadow:
shaolin:
$1$ExCbqRpk$ZTzt9Ikkipft98Zy5S7om0:
15104:
0:
99999:
7:
:
:
[root@localhost~]#pwunconv
[root@localhost~]#grepshaolin/etc/passwd/etc/shadow
/etc/passwd:
shaolin:
$1$ExCbqRpk$ZTzt9Ikkipft98Zy5S7om0:
501:
501:
:
/home/shaolin:
/bin/bash
grep:
/etc/shadow:
Nosuchfileordirectory
[root@localhost~]#pwconv
[root@localhost~]#grepshaolin/etc/passwd/etc/shadow
/etc/passwd:
shaolin:
x:
501:
501:
:
/home/shaolin:
/bin/bash
/etc/shadow:
shaolin:
$1$ExCbqRpk$ZTzt9Ikkipft98Zy5S7om0:
15110:
0:
99999:
7:
:
:
[root@localhost~]#
手工添加用户的步骤:
1、写入用户信息到/etc/passwd
sheldon:
x:
510:
3:
ftpadminwangwu:
/home/sheldon:
/bin/bash
2、写入密码信息到/etc/shadow
sheldon:
:
15109:
0:
99999:
7:
:
:
3、创建用户宿主目录
mkdir/home/sheldon
宿主目录:
权限为700,所有者为用户,所属组为用户的缺省组
chmod700/home/sheldon;chownsheldon/home/sheldon;chgrpsys/home/Sheldon
用户组的信息:
/etc/group
例如:
sys:
x:
3:
root,bin,adm
sys-组名(必须有含义)
x-组的密码位(组密码的作用:
当一个用户不是组内成员还想声明具有组权限时使用)
3-组ID
root,bin,adm-组内成员列表
查看一个属于哪些用户组的命令:
groups用户名
新用户配置文件目录:
/etc/skel
一般给新添加的用户所发的信息文件都放在/etc/skel.同时这个信息文件发送到新添加用户的宿主目录下。
范例:
[root@localhostskel]#ls
rd
[root@localhostskel]#catrd
jfkjdkfjskjfsljfkdjsfkljsakfjdsjfkldsjf
[root@localhostskel]#useraddqian
[root@localhostskel]#ls/home/qian
rd
[root@localhostskel]#cat/home/qian/cd
cat:
/home/qian/cd:
Nosuchfileordirectory
[root@localhostskel]#
登录信息文件:
/etc/motd
用户成功登录后显示信息
范例:
[root@localhostetc]#vi/etc/motd
hello
welcometo
~
~
~
~
~
"/etc/motd"[readonly]2L,35C
添加用户:
useradd选项用户名–D查看缺省参数
-uUID用户数字标识,ID=0就是管理员
-ggroup缺省组*
-G指定用户所属的其他组
-dhomedirectory宿主目录
-sshell命令解释器
-ccomment描述*
-eexpire失效时间yyyy/mm/dd
passwd用户名(-d)空密码
SetUID(4)(SUID):
U=user
特殊的权限为s,4为SetUID的权限号
当一个可执行文件具有SetUID权限,用户执行时会以这个文件所有者身份执行。
linux系统中默认所有的命令所有者都是root
例如:
touch授予(取消)SetUID(4)
chmodu+stouch或chmod4755touch
chmodu-stouchchmod755touch
范例:
[mary@localhost~]$touchfile01
[mary@localhost~]$ls-lfile01
-rw-rw-r--1marymary005-1519:
36file01
[root@localhost~]#chmodu+s/bin/touch
[root@localhost~]#ls-l/bin/touch
-rwsr-xr-x1rootroot422842010-03-01/bin/touch
[mary@localhost~]$touchfile02
[mary@localhost~]$ls-lfile02
-rw-rw-r--1rootmary005-1519:
40file02
[mary@localhost~]$ls-l/bin/touch
-rwsr-xr-x1rootroot422842010-03-01/bin/touch
SetGID:
当一个可执行文件具有SetGID,那么用户执行文件时调用用户组的身份时会以文件所属组的身份执行
创建文件默认的所属组就是用户的缺省组SetGID
(2)G=group
chmodg+schmod2755//这里的2是SetUID授予所有者的权限号
chmodu+s,g+schmod6755////这里的6是SetUID授予所属组的权限号
[root@localhost~]#chmod6755/bin/touch
[root@localhost~]#ls-l/bin/touch
-rwsr-sr-x1rootroot422842010-03-01/bin/touch、
这的0022中的第一0就是特殊权限位。
特殊权限有三个:
SetUID(4),所有者
SetGID
(2),所属组
粘着位(-1)其他人
同时设置SetUID(4),SetGID
(2)可以写成:
chmodu+s,g+s或chmod6755
用find–perm权限(4000)//来查找那些命令授予了777(setUID权限和SetGID)权限
范例:
find/-perm-4000-o-perm-2000
粘着位t
(1):
当权限为777的目录被授予粘着位,用户只能在此目录下删除自己是所有者的文件
用法和SetUID和SetGID一样。
范例:
[root@localhost~]#mkdir/perm
[root@localhost~]#touch/perm/testfile
[root@localhost~]#chmod777/perm
[root@localhost~]#ls-ld/perm
drwxrwxrwx2rootroot4096May1814:
42/perm
[root@localhost~]#ls-l/perm/testfile
-rw-r--r--1rootroot0May1814:
42/perm/testfile
[root@localhost~]#
[root@localhost~]#su-leon
-bash-3.2$rm/perm/testfile
rm:
removewrite-protectedregularemptyfile`/perm/testfile'?
y
-bash-3.2$exit
logout
[root@localhost~]#ls-ld/tmp
drwxrwxrwt22rootroot4096May1813:
59/tmp
[root@localhost~]#umask
0022
[root@localhost~]#ls-ld/perm
drwxrwxrwx2rootroot4096May1814:
42/perm
[root@localhost~]#touch/perm/testfile
[root@localhost~]#chmodo+t/perm
[root@localhost~]#ls-ld/perm
drwxrwxrwt2rootroot4096May1814:
46/perm
[root@localhost~]#su-leon
-bash-3.2$rm/perm/testfile
rm:
removewrite-protectedregularemptyfile`/perm/testfile'?
y
rm:
cannotremove`/perm/testfile':
Operationnotpermitted
-bash-3.2$touch/perm/leonfile
-bash-3.2$rm/perm/leonfile
修改用户信息:
useradd
usermodmodformodify
usermod和useradd选项一样
-l改变用户名usermod-l新用户名旧用户名
例如:
usermod–lsamlee–d/home/samlee–glampbrotherliming
将用户liming的登录名改为samlee,加入到lampgbrotheer组中,用户目录改为/home/samlee
-G把用户添加到用户组usermod-G组名用户名
例如:
usermod–Gsoftgroupsamlee//将用户samlee添加到softgroup用户组中
userdeldelfordelete
-r删除用户的同时删除宿主目录
/etc/passwd/etc/shadow/etc/group
/home/username
使用find命令查找属于某个用户或用户组的文件
find–user用户名或find–group用户组名
用户组管理命令:
groupadd添加用户组
例如:
groupaddwebadmin
groupmod-n新组名旧组名
例如:
groupmod–napachewebadmin//修改webadmin组名为apache
groupdel删除组
groupdel用户组名
gpasswd(UNIX不支持,AIX、Solaris、HP-UX)
设置组密码:
gpasswd组名
保存组的密码的地方:
/etc/gshadow
ftpadmin:
$1$LT50t8ON$EyjKT2Ns3B1EohAIc77dJ1:
:
组名密码组管理员组内成员
groups查看用户隶属哪些组
groups用户名
id查看用户UID、缺省组、隶属哪些组
id用户名
newgrp切换缺省组或加入组
添加用户到用户组
gpasswd-a用户名组名add
/etc/sysconfig/i18nLANG=""
从组中删除用户
gpasswd-d用户名组名delete
设置组管理员
gpasswd-A用户名组名Administrator
grep用户名/etc/gshadow确认管理员
删除组密码gpasswd-r组名
限制用户登录:
passwd-l用户名lock//实际就是把用户的密码改了
或:
usermod–L用户名
解除用户登录:
passwd-u用户名unlock
或:
username–U用户名
用户授权实例:
授权一个用户sam对/website有写权限
chownsam/website
授权多个用户leon、john对/website有写权限
原理:
改变/website所属组,把用户添加到所属组,对组授权
groupaddwebadmin添加新的用户组
chgrpwebadmin/website改变所属组
chmodg+w/website授权组有写权限
gpasswd-aleonwebadmin
gpasswd-ajohnwebadmin添加用户到所属组
用户sam对/script/testsuid.sh有执行权限
Chmod755/script/testsuid.shrx
Chmod755/scriptrx
用户zhangsan有写权限,lisi有读写权限,wangwu有读执行权限……ACL访问控制列表
用户管理命令:
pwck:
检测/etc/passwd,/etc/shadow两个文件是否有错误信息
grpck:
检测/etc/group/etc/gshadow两个文件是否有错误信息
newgrp组名//切换用户组必须是组内成员
范例:
id用户名//查看用户UID和组信息
finger用户名//查看用户详细信息
例如:
root@localhost~]#fingershaolin
Login:
shaolinName:
(null)
Directory:
/home/shaolinShell:
/bin/bash
LastloginMonMay1618:
40(CST)ontty2//该用户最后一次登录时间
Nomail.//邮件信息
NoPlan.//计划信息
[root@localhost~]#
su用户名//切换用户(su–用户名环境变量切换)
passwd–S用户名//查看用户密码状态
who//查看当前登录用户信息
管理员授权sudo:
配置:
visudo配置文件:
/etc/sudoers
格式:
用户名本机地址=命令
(%组名)(IP地址)(绝对路径)多个命令逗号分隔
用户执行:
sudo授权命令
-l查看有哪些授权命令
1、授权用户可以以root身份执行命令
2、授权命令可以具体到选项和参数
leon192.168.15.79=/sbin/shutdown-hnow
范例:
给用户u1授权添加用户的命令:
[root@localhost~]#whichuseradd
/usr/sbin/useradd
[root@localhost~]#visudo
93#%userslocalhost=/sbin/shutdown-hnow
94zhuangql192.168.15.102=/usr/sbin/useradd//在visudo里的最后一行添加此内容后保存退出
95
[root@localhost~]#su–zhuangql
[zhuangql@localhost~]$sudo–l
Userzhuangqlmayrunthefollowingcommandsonthishost:
(root)/usr/sbin/useradd//zhuangql用户以root用户的身份执行useradd命令
[zhuangql@localhost~]$sudo/usr/sbin/useraddzhuangql1
[zhuangql@localhost~]$
apache授权案例:
1、修改配置文件
有三种方法:
a.设置用户为配置文件的所有者chown
b.改变所属组,把用户加入组,授予组w权限
c.visudo:
用户密码本机地址(IP地址)=/bin/vi/etc/httpd/conf/httpd.conf
2、服务启动脚本控制
/etc/rc.d/init.d/httpdstart/reload/status/configtest
configtest检测配置文件语法错误
3、更新网页
/var/www/html授权有写权限chmodu=w/var/www/html
代码如下:
1.2.[root@localhost~]#/etc/rc.d/init.d/httpdstatus
httpd(pid3914)isrunning...
[root@localhost~]#visudo
94zhuangql192.168.15.102=/usr/sbin/useradd
95zhuangql192.168.15.102=/bin/vi/etc/httpd/conf/httpd.conf,/etc/rc.d.init.d/httpdstart,/etc/rc.d.init.d/httpdreload,/etc/rc.d.init.d/httpdstatus,/etc/rc.d.init.d/httpdconfigtest//在visudo里的最后一行添加此内容
[root@localhost~]#su-zhuangql
[zhuangql@localhost~]$sudo/bin/vi/etc/httpd/conf/httpd.conf
[sudo]passwordforzhuangql:
[zhuangql@localhost~]$sudo–l
Userzhuangqlmayrunthefollowingcommandsonthishost:
(root)/usr/sbin/useradd
(root)/bin/vi/etc/httpd/conf/httpd.conf
[zhuangql@localhost~]$sudo/bin/vi/etc/httpd/conf/httpd.conf,//执行此命令后zhuangql可以修改http.conf中的内容
[zhuangql@localhost~]$sudo/etc/rc.d/init.d/httpdstart
Startinghttpd:
[zhuangql@localhost~]$sudo/etc/rc.d/init.d/httpdreload
Reloadinghttpd:
[OK]
[zhuangql@localhost~]$
3.chownzhuangql/var/www/html
案例:
限制用户su