坂田做网站,衡阳市做网站,彩票网站wordpress模板,轻量应用云服务器linux安全系统的核心是用户账户#xff0c;每个使用者使用一个账户名及与该账户关联的密码登入linux系统。使用者对系统资源的访问权限取决于其登录时所用的账户。每个账户在创建时会被分配一个惟一的标识UID#xff0c;用户权限便是根据UID来跟踪的。每个账户可以选择加入某…linux安全系统的核心是用户账户每个使用者使用一个账户名及与该账户关联的密码登入linux系统。使用者对系统资源的访问权限取决于其登录时所用的账户。每个账户在创建时会被分配一个惟一的标识UID用户权限便是根据UID来跟踪的。每个账户可以选择加入某些个群组以方便统一管理每个群组也对应一个惟一标识GID。所有账户名、UID、GID等信息都保存于/etc/passwd文件中所有群组信息都保存于/etc/group文件中而账户密码则以加密方式保存于/etc/shadow中。一、/etc/{passwd,shadow,group}解析1、/etc/passwd该文件存放着与所有用户相关的信息每行包含7个字段其格式为用户名:密码占位符:UID:基本组GID:注释信息:家目录:shell例 wittgenstein:x:500:500:wittgenstein:/home/wittgenstein:/bin/bash1)第二字段是以x表示的密码占位符,因/etc/passwd默认是对所有用户开放读权限的为安全起见实际密码是存放于只有管理员能访问的/etc/shadow文件中的。[rootlocalhost ~]# ls -l /etc/{passwd,shadow}-rw-r--r-- 1 root root 1594 Oct 5 13:00 /etc/passwd---------- 1 root root 1032 Oct 5 13:00 /etc/shadow2)系统账户默认的shell为/sbin/nologin这是一个无法登入主机的特殊shell系统用户不需也不宜取得shell交互环境。其它用户默认为/bin/bash2、/etc/shadow该文件以加密的方式存放着各用户的密码每行9个字段其格式为用户名:加密的密码:最近一次修改密码的时间:密码最短使用期限:密码最长使用期限:密码过期警告区间:非活动期限:账号过期期限:保留字段例 wittgenstein:$6$dHcMR77ZSJgbb...:16652:0:99999:7:::1)密码是以加密方式存放的还未创建密码的新用户该字段用!!表示2)密码最短使用期限意即在此期限内密码不可更改。如果是0则表示可随时改动3)密码最长使用期限意即在此期限内密码必须更改逾期密码会变成过期属性4)密码过期警告区间意即密码过期后的宽限时间3、/etc/group该文件存放着与群组相关的信息每行4个字段其格式为群组名:群组密码占位符:GID:群组支持的用户名例 wittgenstein:x:500:davinci,tesla1)群组密码实际存放于/etc/gshadow中通常不需设定2)最后一个字段实质上是以该群组为附加组的用户列表以该群组为基本组的用户名不会自动被添加到此处。将用户加入群组的方法a.在使用useradd或usermod命令时指定-g或-G选项将其加入某个群组b.直接编辑/etc/group文件在目标群组行的末尾添加用户名用户名之间以逗号相隔二、用户管理1、用户分类linux用户由一个管理员账户(root)以及若干系统用户和普通用户组成。通常三类用户被分配的UID是root为0系统用户为(1-499)普通用户为500。root用户的家目录为/root普通用户的家目录默认为/home/username系统用户默认不会主动建立家目录.root用户拥有几乎一切权限能够操作各种系统资源及控制其它用户的创建、删除、权限等。为安全起见linux服务器上每个在后台运行的服务都对应一个系统账户这样即使***者攻破某个服务也无法访问整个系统。2、useradd创建用户用法useradd [-u UID] [-g 基本组GID/群组名] [-G 附加组GID/群组名]... username其它常用选项-c加上注释注释会保存于/etc/passwd文件的注释段中-d指定家目录若指定目录已存在会有警告信息-m如果家目录不存在就创建。这个要结合-d选项使用 -md-s SHELL:指定shell必须是/etc/shells中存在的shell默认为/bin/bash-m自动建立用户家目录(默认)-M不给用户创建家目录-e指定用户的过期日期格式为YYYY-MM-DD此设定值会被写入shadow文件第8段-f指定账户过期几天后永久停权设定值为0表示立即停权为-1则表示关闭此功能默认为-1。设定值会被写入shadow文件第7段-r创建系统用户可指定多个附加组以逗号相隔使用示例useradd -u 505 -g wittgenstein -G 502,davinci tesla注意在useradd中指定群组时不能指定当前并不存在的群组每个用户必对应一个基本组(但一个群组可作为多个用户的基本组)无论是随用户一起创建还是指定的但用户可以选择是否加入或加入哪些附加组。当我们不指定任何选项以预设方式useradd username创建用户时1)该用户的UID为当前最大UID加1并且会创建一个群组名与用户名相同的基本组,其GID默认与UID相同但若该GID已存在则会在当前最大GID基础上加12)在/etc/passwd里会新建一行与该用户相关的信息包括用户名、UID、GID、shell等3)在/etc/shadow里会新建一行与该用户密码相关的参数此时还没有密码需要使用passwd命令创建密码后才会生成4)在/etc/group里会新建一行群组名同用户名的群组信息(若创建用户时指定其基本组为已存在的群组则不会新建)5)在/home下面会建立一个名为username且权限为700的家目录,即只有该用户自己与管理员能够进入该目录。[rootlocalhost ~]# useradd tesla[rootlocalhost ~]# tail -2 /etc/passwdwittgenstein:x:500:500:wittgenstein:/home/wittgenstein:/bin/bashtesla:x:501:501::/home/tesla:/bin/bash[rootlocalhost ~]# groupadd sience[rootlocalhost ~]# groupadd -g 505 movie[rootlocalhost ~]# tail -3 /etc/grouptesla:x:501:sience:x:502:movie:x:505:[rootlocalhost ~]# useradd -c super davinci[rootlocalhost ~]# tail -2 /etc/passwdtesla:x:501:501::/home/tesla:/bin/bashdavinci:x:502:506:super:/home/davinci:/bin/bash[rootlocalhost ~]# useradd -u 503 -G movie kubrick[rootlocalhost ~]# id kubrickuid503(kubrick) gid503(kubrick) groups503(kubrick),505(movie)3、passwd创建或修改密码用法passwd [option]... [username]常用选项-d删除密码-llock锁住密码只有root用户能执行-uunlock解锁密码只有root用户能执行--stdin以管道前的数据作为密码输入这样就不用交互式进行。例如echo password | passwd --stdin username-n: 密码最短使用天数-x: 密码最长使用天数-w: 密码到期前收到警告信息的天数-i: 密码过期后宽限的天数注意passwd命令后带有username参数表示处理其它用户密码不带则是修改当前用户自己的密码。只有root用户能给其它用户创建密码并执行修改、删除、锁定密码等操作普通用户只能修改自己的密码4、usermod修改用户信息但不允许修改正在被使用的账户用法usermod [option]... username常用选项-c修改用户的注释信息即/etc/passwd文件中第5段内容-d修改用户家目录-u修改UID-g修改基本组-G修改附加组-s修改shell-L锁定密码使用户无法登录-U解锁密码...例 usermod -L 相当于 passwd -l5、userdel删除用户用法userdel [-r] [-f] username常用选项-r与该用户相关的所有资料也一并删除,包括家目录及/etc/{passwd,shadow,group}内的对应信息-f强制删除即使该用户在线例 userdel -r tesla6、chage修改密码的有效期即/etc/shadow文件中的一些参数用法chage [option]... username常用选项-m,--mindays密码最短使用天数-M,--maxdays密码最长使用天数-W,--warndays密码到期前收到警告信息的天数-I,--inactive密码过期后宽限的天数过了这些天禁止登录-l查看当前的设置...例 chage -m 7 -M 60 -W 10 -I 30 tesla7、chfn修改用户的finger信息chfn [option]... [username]不指定任何选项则进入交互模式不指定用户名则修改当前用户自身信息只有root能够设置所有用户finger信息其它用户只能设置自身finger信息[nolanlocalhost ~]$ chfnChanging finger information for nolan.Password:Name []: nolanOffice []: 2046Office Phone []: 2222Home Phone []: 3333Finger information changed.[nolanlocalhost ~]$ finger nolanLogin: nolan Name: nolanDirectory: /home/nolan Shell: /bin/bashOffice: 2046, x2222Home Phone: x3333Never logged in.No mail.No Plan.[nolanlocalhost ~]$ chfn -h 8888 #单独修改home phone三、用户信息的查看1、id显示用户的UID、GID、所属的组用法id [option]... [用户名]-u仅显示UID-g仅显示GID-un仅显示用户名-gn仅显示基本群组名不带参数则显示当前用户的UID等信息[rootlocalhost ~]# iduid0(root) gid0(root) groups0(root)[rootlocalhost ~]# id teslauid502(tesla) gid502(tesla) groups502(tesla),501(davinci)[rootlocalhost ~]# id -gn teslatesla2、who或w显示当前登录系统的用户信息[rootlocalhost ~]# w19:07:07 up 7:25, 4 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN IDLE JCPU PCPU WHATroot tty1 - Wed21 1:51m 0.04s 0.04s -bashroot pts/0 192.168.30.1 17:17 0.00s 0.24s 0.00s wtesla pts/1 192.168.30.1 19:03 3:31 0.00s 0.00s -bash[rootlocalhost ~]# whoroot tty1 2015-09-30 21:21root pts/0 2015-10-05 17:17 (192.168.30.1)tesla pts/1 2015-10-05 19:03 (192.168.30.1)3、last显示用户最近登录信息用法last [option]... [用户名/终端]常用选项-n #或-#指定显示#条记录-d将IP地址转换成主机名[rootlocalhost ~]# last -3tesla pts/1 192.168.30.1 Mon Oct 5 19:03 still logged intesla pts/2 192.168.30.1 Mon Oct 5 17:17 gone - no logoutroot pts/0 192.168.30.1 Mon Oct 5 17:17 still logged inwtmp begins Thu Aug 6 05:14:00 2015[rootlocalhost ~]# last teslatesla pts/1 192.168.30.1 Mon Oct 5 19:03 still logged intesla pts/2 192.168.30.1 Mon Oct 5 17:17 gone - no logouttesla pts/2 192.168.30.1 Mon Oct 5 17:16 - 17:16 (00:00)...wtmp begins Thu Aug 6 05:14:00 2015[rootlocalhost ~]# last -3 tty1root tty1 Wed Sep 30 21:21 still logged inroot tty1 Mon Aug 10 13:49 - 21:19 (5107:30)root tty1 Mon Aug 10 13:42 - down (00:04)wtmp begins Thu Aug 6 05:14:00 20154、lastlog显示系统中所有用户最近一次的登录信息用法lastlog [option]...常用选项-u username显示指定用户的最近一次登录信息-t 天数显示指定天数以内的登录信息-b 天数显示指定天数以前的登录信息[rootlocalhost ~]# lastlogUsername Port From Latestroot pts/0 192.168.30.1 Mon Oct 5 17:17:05 0800 2015bin **Never logged in**daemon **Never logged in**...tesla pts/1 192.168.30.1 Mon Oct 5 19:03:36 0800 20155、lastb与last命令相似它会查找/var/log/btmp 文件列出所有登录系统失败的用户的信息用法lastb [-i] [-n #] [USER]常用选项 -n指定显示的行数-i将主机名转换为IP地址[rootnode2 ~]# lastbtesla ssh:notty 192.168.30.1 Fri Nov 27 03:10 - 03:10 (00:00)tesla ssh:notty 192.168.30.1 Fri Nov 27 03:06 - 03:06 (00:00)tty1 Tue Nov 10 01:04 - 01:04 (00:00)root tty1 Tue Nov 10 01:03 - 01:03 (00:00)root ssh:notty 192.168.30.1 Mon Nov 9 21:05 - 21:05 (00:00)root tty1 Tue Sep 22 09:04 - 09:04 (00:00)btmp begins Tue Sep 22 09:04:08 20156、finger查看用户信息包括登录信息、真实名称、家目录等该命令需额外安装用法finger [option]... [本地用户]... [远程用户主机]不指定任何选项和参数则显示本地用户登录信息该命令可查看远程主机用户信息前提是远程主机上已运行finger服务进程[rootlocalhost ~]# fingerLogin Name Tty Idle Login Time Office Office Phoneroot root tty1 14:54 Sep 30 21:21root root pts/0 1:28 Oct 6 05:18 (192.168.30.1)root root pts/2 Oct 6 07:51 (192.168.30.1)tesla pts/1 1:28 Oct 6 06:40 (192.168.30.1)[rootlocalhost ~]# finger rootLogin: root Name: rootDirectory: /root Shell: /bin/bashOn since Wed Sep 30 21:21 (CST) on tty1 14 hours 54 minutes idleOn since Tue Oct 6 05:18 (CST) on pts/0 from 192.168.30.11 hour 28 minutes idleOn since Tue Oct 6 07:51 (CST) on pts/2 from 192.168.30.1No mail.No Plan.四、用户之间的切换(su和sudo)1、su切换至其它用户用法su [-] [-c] [-m] [username]选项-c执行完指定的指令后恢复原来身份如su - -c userdel pulak root-c选项应用场景之一使用普通用户启动服务vim /etc/rc.localsu - tesla -c /bin/sh /home/tesla/bin/deploy.sh-m变更身份时不变更环境变量不指定目标用户时则为切换到root用户root切换到其它用户不需输入密码其它用户切到root或其它用户之间切换需输入密码su username与su - username的区别su命令后是否有-选项差别很大su username是以非交互式登录的方式取得shell(no-login shell)这种方式很多变量仍保留原值如下当在当前用户wittgenstein下使用mail命令查看邮件时实际上查看的却是原来用户tesla的邮件。退出no-login shell使用exit命令。而su - username属于交互式登录(login shell)会完全取得新用户的环境。退出login shell使用logout命令[teslalocalhost ~]$ su wittgensteinPassword:[wittgensteinlocalhost tesla]$ env | grep teslaPATH/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/tesla/binMAIL/var/spool/mail/teslaPWD/home/tesla[wittgensteinlocalhost tesla]$ exitexit[teslalocalhost ~]$ su - wittgensteinPassword:[wittgensteinlocalhost ~]$ env | grep tesla[wittgensteinlocalhost ~]$ env | grep wittgensteinUSERwittgensteinMAIL/var/spool/mail/wittgensteinPATH/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wittgenstein/binPWD/home/wittgensteinHOME/home/wittgensteinLOGNAMEwittgenstein[wittgensteinlocalhost ~]$ logout[teslalocalhost ~]$ su - -c tail -1 /etc/shadow rootPassword:pulak:!!:16713:0:99999:7:2:16714:2、sudo以其它用户身份来执行命令预设为root由于root权力太过强大基于安全和防止误操作考虑root密码宜尽量减少传播使用者多以普通用户身份登录。但有时候又需要临时执行一些只有root才有权限执行的操作这时候就可以用到sudo了1)suso能做什么a.限定指定用户在指定主机上运行指定的管理命令减少了用户因为错误或恶意执行命令损坏系统的可能性b.详细记录用户基于sudo执行的命令的相关日志信息c.“检查系统”用户第一次执行sudo会要求输入自己的密码用户会获得一个有固定存活时长的“入场券”(默认为5分钟)逾期后若想再次执行sudo命令需要重新输入密码2)sudo执行流程①当用户执行sudo时系统根据/etc/sudoers文件检查其是否有相应权限②若有相应权限要求用户输入自己的密码以确认③认证通过后用户便可执行指定的命令3)某用户若想使用sudo执行其它用户才能执行的命令则需要root用户先使用专用编辑命令visudo编辑/etc/sudoers文件授予该用户所需要的权限。/etc/sudoers是有特定语法的故需使用visudo命令编辑■/etc/sudoer语法[%]WHO HOST(WHOM) [NOPASSWD:] COMMAND①WHO表示用户前面若有%表示群组②HOST表示登录者的来源主机③WHOM表示可切换的身份④NOPASSWD表示免除密码输入可选项一般用于信任的用户⑤COMMAND表示可执行的命令例 gentoo ALL(ALL) /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root■当要指定的参数太长时可使用别名,格式为Alias_Type NAME item1, item2...其中Alias_Type可以是User_Alias(用户别名)、Runas_Alias(可切换成的身份别名)、Host_Alias(主机别名)、Cmnd_Alias(命令别名)别名列表中可再嵌套别名注意别名本身必须使用全大写字母用户别名可用项USERNAME,%GROUPNAME,#UID,#GID,User_Alias格式User_Alias NAME1 item1,item2 : NAME2 item3,item4主机别名可用项hostname,ip,network_address,host_alias格式Host_Alias NAME item1,item2切换到的身份别名格式Runas_Alias NAME item1,item2命令别名可用项命令名,目录(目录下的所有命令),sudoedit,Cmnd_Alias格式Cmnd_Alias NAME item1,item2/etc/sudoers编辑示例User_Alias GENIUS davinci,tesla,wittgenstein,%directorCmnd_Alias CHANGE /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd rootGENIUS ALL(root) CHANGE注意生产场景中不建议使用echo命令修改/etc/sudoers文件如果语法有误又没及时发现可能造成不良后果。如果一定要使用该命令那一定要用 visudo -c 进行语法检查使用visudo命令修改文件的话能自动检查语法如果语法有误文件无法保存。4)sudo命令的用法sudo [option]... [-u username]常用选项-b 命令在后台执行命令-l列出目前用户可执行与无法执行的命令-e 文件路径编辑文件而非执行命令-k清除“入场券”-u 用户名指定切换到哪个用户如不指定默认为root-p 提示语可以更改询问密码的提示语其可用%u变量来替换为用户名%h替换为主机名[rootlocalhost ~]# visudo#includedir /etc/sudoers.dUser_Alias GENIUS tesla,davinci,%directorCmnd_Alias CHANGE /usr/sbin/useradd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd rootGENIUS ALL(ALL) CHANGE[rootlocalhost ~]# su - tesla[teslalocalhost ~]$ sudo useradd super[sudo] password for tesla:[teslalocalhost ~]$ tail -2 /etc/passwdkubrick:x:504:504::/home/kubrick:/bin/bashsuper:x:505:506::/home/super:/bin/bash[teslalocalhost ~]$ sudo passwd superChanging password for user super.New password:[teslalocalhost ~]$ sudo -l...User tesla may run the following commands on this host:(ALL) /usr/sbin/useradd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root[teslalocalhost ~]$ sudo -k[teslalocalhost ~]$ sudo userdel super[sudo] password for tesla:Sorry, user tesla is not allowed to execute /usr/sbin/userdel super as root on localhost.localdomain.五、群组管理1、groupadd创建群组用法groupadd [-g GID] [-r] groupname-r创建系统组若不指定-g GID会自动指定一个小于500的GID例groupadd science2、groups显示用户所在的组用法groups [username]不带参数则直接显示当前用户所在的组[teslalocalhost ~]$ groupstesla wittgenstein[teslalocalhost ~]$ groups wittgensteinwittgenstein : wittgenstein结果中的第一个为用户的有效群组默认为用户的基本组。如上用户tesla属于组tesla、wittgenstein其有效组为tesla。该用户创建的新文件的默认属组即为有效属组若想更改用户的有效组可使用newgrp命令3、newgrp切换用户的有效群组用法newgrp [groupname]不指定参数则为切换为基本组[teslalocalhost ~]$ newgrp wittgenstein[teslalocalhost ~]$ groupswittgenstein tesla[teslalocalhost ~]$ touch abc[teslalocalhost ~]$ ls -l abc-rw-r--r-- 1 tesla wittgenstein 0 Oct 5 15:03 abc4、groupmod修改群组用法groupmod [-g GID] [-n newname] groupname常用选项-g修改群组的GID-n修改群组名5、groupdel删除群组用法groupdel groupname若目标群组为某用户的基本组则不能被删除除非先删除关联的用户若只为其它用户的附加组则可以删除6、gpasswd设置或修改组密码设置群组管理员群组通常不设密码该命令主要用来设置群组管理员。因为默认只有root才能管理群组但有时用户申请加入某群组时root太忙而无暇处理这种情况下root就可以设定某个用户作为该群组的管理员来帮其管理root能做的动作gpasswd [-A user...] [-M user...] [-r] [-R] groupname-A指定群组的管理员-M将用户加入群组-r删除群组密码-R失群组密码失效不指定任何选项则表示给群组设置密码群组管理员能做的动作gpasswd [-a user...] [-d user...] groupname-a将用户加入群组-d将用户移出群组[rootlocalhost ~]# tail -2 /etc/groupdirector:x:505:kubrick,nolanhitchcock:x:506:[rootlocalhost ~]# gpasswd -A kubrick director[rootlocalhost ~]# su - kubrick[kubricklocalhost ~]$ gpasswd -a hitchcock directorAdding user hitchcock to group director[kubricklocalhost ~]$ tail -2 /etc/groupdirector:x:505:kubrick,nolan,hitchcockhitchcock:x:506: