zoukankan      html  css  js  c++  java
  • Linux 用户管理_015

    一、用户基础了解

      Linux是一个多任务、多用户的操作系统,每个用户和进程都需要对应一个用户和用户组,用户名相当于姓名,

    用户UID相当于身份证号,用户组GID相当于公司的工号。用户与用户组的关系一对一、多对一、一对多、多对多。

    Linux系统用户分类:

    1、 超级用户root

    root(超级管理员),UID为0,拥有最高的权限,类似windows系统的administrator本地管理员。

    root可以使用sudo管理提权给普通用户使用,相当于分配特殊权限给普通用户使用。

    2、 虚拟用户

    虚拟用户,UID为1~499,虚拟用户一般与系统和程序服务相关,一般是默认不能登录系统使用。

    3、 普通用户

    一般是由具备系统管理员root权限用户所创建,UID为500~65535,这类用户的权限会受到一定的基本权限限制,一般来自具备管理员用户的限制。

    当创建一个用户,以下配置文件会被修改

    用户配置文件         /etc/passwd

    用户密码配置文件     /etc/shadow

    用户组配置文件       /etc/group

    用户组密码配置文件   /etc/gshadow

    二、用户管理命令

    命令

    功能描述

    useradd

    创建用户

    userdel

    删除用户

    passwd

    修改用户密码

    usermod

    修改用户信息

    id

    查看用户UID和GID

    chage

    修改用户密码属性,管理/etc/shadow文件

    groupadd

    创建用户组

    groupdel

    删除用户组

    whoami

    查看当前用户名

    w

    查看当前用户登录系统信息并且查看用户正在做操作什么

    who

    查看当前用户登录系统信息

    last

    以清单形式显示用户登录系统信息(包括历史记录)

    lastlog

    查看所有用户或指定用户的登录系统信息

    su

    切换用户

    sudo

    sudo是通过另一个用户来执行命令,su是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo能在命令后面直接接命令执行,比如sudo  ls /root  , 不需要root密码就可以执行只有root才能执行相应的命令或具备的目录权限:这个权限需要通过visudo命令或者直接编辑/etc/sudoers来实现

    visudo

    visodo配置sudo权限的编辑命令,也可以不用这个命令,直接用vi来编辑/etc/sudoers实现,但推荐用visudo来操作(会自动检查语法)

    三、用户初始化目录skel

      /etc/skel目录是用来存放新用户环境变量文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加

    用户的家目录下,默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以点.开头的文件),通过修改、添加、删除/etc/skel

    目录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境。

    [root@oldboy ~]# su - oldboy

    [oldboy@oldboy ~]$ ls -la

    total 28

    drwx------  2 oldboy oldboy 4096 Dec 14 08:51 .

    drwxr-xr-x. 8 root   root   4096 Dec 13 15:41 ..

    -rw-------  1 oldboy oldboy  459 Dec 14 15:04 .bash_history

    -rw-r--r--  1 oldboy oldboy   18 Dec 14 08:51 .bash_logout

    -rw-r--r--  1 oldboy oldboy  176 Dec 14 08:51 .bash_profile

    -rw-r--r--  1 oldboy oldboy  124 Dec 14 08:51 .bashrc

    -rw-------  1 oldboy oldboy  802 Nov 28 14:17 .viminfo

    [oldboy@oldboy ~]$ ls -ld /etc/skel/

    drwxr-xr-x. 2 root root 4096 Sep  7 17:13 /etc/skel/

    [oldboy@oldboy ~]$ ls -la /etc/skel/

    total 20

    drwxr-xr-x.  2 root root 4096 Sep  7 17:13 .

    drwxr-xr-x. 83 root root 4096 Dec 14 14:35 ..

    -rw-r--r--.  1 root root   18 Jul 24  2015 .bash_logout

    -rw-r--r--.  1 root root  176 Jul 24  2015 .bash_profile

    -rw-r--r--.  1 root root  124 Jul 24  2015 .bashrc

    /etc/skel的企业场景作用:

    1、 可以把通知的内容放到shell,让登录的用户查看

    [root@oldboy ~]# ls -la /etc/skel/

    total 20

    drwxr-xr-x.  2 root root 4096 Sep  7 17:13 .

    drwxr-xr-x. 83 root root 4096 Dec 14 14:35 ..

    -rw-r--r--.  1 root root   18 Jul 24  2015 .bash_logout

    -rw-r--r--.  1 root root  176 Jul 24  2015 .bash_profile

    -rw-r--r--.  1 root root  124 Jul 24  2015 .bashrc

    [root@oldboy ~]# touch /etc/skel/info.txt

    [root@oldboy ~]# echo "Linux CentOS 6.7" > /etc/skel/info.txt

    [root@oldboy ~]# ls -la /etc/skel/

    total 24

    drwxr-xr-x.  2 root root 4096 Dec 14 15:07 .

    drwxr-xr-x. 83 root root 4096 Dec 14 14:35 ..

    -rw-r--r--.  1 root root   18 Jul 24  2015 .bash_logout

    -rw-r--r--.  1 root root  176 Jul 24  2015 .bash_profile

    -rw-r--r--.  1 root root  124 Jul 24  2015 .bashrc

    -rw-r--r--   1 root root   17 Dec 14 15:08 info.txt

    [root@oldboy ~]# cat /etc/skel/info.txt

    Linux CentOS 6.7

    [root@oldboy ~]# useradd xiaoming

    root@oldboy ~]# passwd xiaoming

    Changing password for user xiaoming.

    New password:

    BAD PASSWORD: it is too simplistic/systematic

    BAD PASSWORD: is too simple

    Retype new password:

    passwd: all authentication tokens updated successfully.

    [root@oldboy ~]# su - xiaoming

    [xiaoming@oldboy ~]$ ls -la .

    total 24

    drwx------  2 xiaoming xiaoming 4096 Dec 14 15:09 .

    drwxr-xr-x. 9 root     root     4096 Dec 14 15:09 ..

    -rw-r--r--  1 xiaoming xiaoming   18 Jul 24  2015 .bash_logout

    -rw-r--r--  1 xiaoming xiaoming  176 Jul 24  2015 .bash_profile

    -rw-r--r--  1 xiaoming xiaoming  124 Jul 24  2015 .bashrc

    -rw-r--r--  1 xiaoming xiaoming   17 Dec 14 15:08 info.txt

    [xiaoming@oldboy ~]$ cat info.txt

    Linux CentOS 6.7

    2、 统一初始化新用户的环境变量

    [root@oldboy ~]# cat /etc/skel/.bash_profile

    # .bash_profile

    # Get the aliases and functions

    if [ -f ~/.bashrc ]; then

        . ~/.bashrc

    fi

    # User specific environment and startup programs

    PATH=$PATH:$HOME/bin

    export PATH

    [root@oldboy ~]#echo "alias grep='grep --color=auto'" >> /etc/skel/.bash_profile

    [root@oldboy ~]# cat /etc/skel/.bash_profile

    # .bash_profile

    # Get the aliases and functions

    if [ -f ~/.bashrc ]; then

        . ~/.bashrc

    fi

    # User specific environment and startup programs

    PATH=$PATH:$HOME/bin

    export PATH

    alias grep='grep --color=auto'

    [root@oldboy ~]# useradd zhangshang

    [root@oldboy ~]# passwd zhangshang

    Changing password for user zhangshang.

    New password:

    BAD PASSWORD: it is too simplistic/systematic

    BAD PASSWORD: is too simple

    Retype new password:

    passwd: all authentication tokens updated successfully.

    [root@oldboy ~]# su - zhangshang

    [zhangshang@oldboy ~]$ grep 3306 /etc/services

    mysql           3306/tcp                        # MySQL

    mysql           3306/udp                        # MySQL

    [zhangshang@oldboy ~]$ alias

    alias grep='grep --color=auto'

    alias l.='ls -d .* --color=auto'

    alias ll='ls -l --color=auto'

    alias ls='ls --color=auto'

    alias vi='vim'

    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    [zhangshang@oldboy ~]$ su - oldboy

    Password:

    [oldboy@oldboy ~]$ alias

    alias l.='ls -d .* --color=auto'

    alias ll='ls -l --color=auto'

    alias ls='ls --color=auto'

    alias vi='vim'

    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    3、 出现-bash-4.1.$问题原因及解决办法

    [root@oldboy ~]# rm -rf /home/oldboy/.bash*   ##删除oldboy环境变量配置文件

    [root@oldboy ~]# su - oldboy

    -bash-4.1$

    -bash-4.1$ cp /etc/skel/.bash* /home/oldboy/

    -bash-4.1$ ls -la /home/oldboy/

    total 24

    drwx------   2 oldboy oldboy 4096 Dec 14 15:36 .

    drwxr-xr-x. 11 root   root   4096 Dec 14 15:31 ..

    -rw-r--r--   1 oldboy oldboy   18 Dec 14 15:36 .bash_logout

    -rw-r--r--   1 oldboy oldboy  207 Dec 14 15:36 .bash_profile

    -rw-r--r--   1 oldboy oldboy  124 Dec 14 15:36 .bashrc

    -rw-------   1 oldboy oldboy  802 Nov 28 14:17 .viminfo

    -bash-4.1$ exit

    logout

    [root@oldboy ~]# su - oldboy

    [oldboy@oldboy ~]$

    四、用户初始化目录login

        /etc/login.defs文件是用来定义创建用户时需要的一些用户的配置信息,如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等。

    [oldboy@oldboy ~]$ grep -vE "#|^$" /etc/login.defs

    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/default/useradd文件是在使用useradd添加用户时的一个需要调用的一个默认配置文件,可以使用 useradd –D  命令,这样的命令格式来修改文件里面的内容。

    [root@oldboy ~]# cat /etc/default/useradd

    # useradd defaults file

    GROUP=100

    HOME=/home

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/bash

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes

    参数

    功能描述

    GROUP=100

    依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制

    HOME=/home

    把用户的家目录建在/home中

    INACTIVE=-1

    是否启用账号过期停权,-1表示不启用

    EXPIRE=

    账号终止日期,不设置表示不启用

    SHELL=/bin/bash

    新用户默认所用的shell类型

    SKEL=/etc/skel

    配置新用户目录默认存放路径,前前文提到的/etc/skell,就是配置在这里生效,即当我们用useradd添加用户时,用户家目录下的文件,都是从这里配置的目录复制过去的。

    CREATE_MAIL_SPOOL=yes

    创建mail文件

    六、su切换用户

      

      su命令主要用来切换用户身份,为我们管理linux系统带来了很多方便,但是,这样通过su命令切换到root后,

    也带来了很大安全管理问题;比如系统有8个普通用户,都可以通过切换到root身份进行系统管理,甚至还可以改掉

    root的密码,让其他的普通用户无法再实现系统管理,还有,这么多用户中,有任何一人对系统操作的重大失误,

    都可能导致整个系统崩溃或数据损失。这样的非集权式管理,在一定程度上就对系统的安全造成了较去的威协。

    在工作中几乎有一半的问题来自于内部。

       我们既希望超级用户root密码掌握在少数或唯一的管理员手中,又希望多个系统管理员能够完成更多更复杂的系统管理的工作。

    那么,如何解决多个系统管理员都能管理系统的而又不让超级权限泛滥的需求呢?这就需要sudo命令来替代或结合su命令来完成这样的苛刻且必要的管理需求。

    [root@oldboy ~]# env | grep root --color=auto

    USER=root

    MAIL=/var/spool/mail/root

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

    PWD=/root

    HOME=/root

    LOGNAME=root

    [root@oldboy ~]# su - oldboy

    [oldboy@oldboy ~]$ env | grep root --color=auto

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/oldboy/bin

    [oldboy@oldboy ~]$ env | grep oldboy --color=auto

    HOSTNAME=oldboy

    USER=oldboy

    MAIL=/var/spool/mail/oldboy

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/oldboy/bin

    PWD=/home/oldboy

    HOME=/home/oldboy

    LOGNAME=oldboy

    [oldboy@oldboy ~]$ exit

    logout

    [root@oldboy ~]# su oldboy

    [oldboy@oldboy root]$ env | grep oldboy --color=auto

    HOSTNAME=oldboy

    USER=oldboy

    HOME=/home/oldboy

    LOGNAME=oldboy

    [oldboy@oldboy root]$ env | grep root --color=auto

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

    MAIL=/var/spool/mail/root

    PWD=/root

    七、sudovisudo控制用户对系统命令的使用权限

      为了安全及管理的方便,可将需要root权限的普通用户加入sudo管理,这样用户就可以通过自己的普通帐户登录实

    现利用root的权限来管理系统了,当然也就不需要有root账号及密码了。sudo对应的权限配置文件/etc/sudoers。

      执行如下visudo命令,即可打开sudo权限配置文件/etc/sudoers,当然也可以使用vi模式编辑/etc/sudoers配置文件,

    但推荐使用visudo命令编辑。

      通过sudo进行授权管理系统的目的:即能让运维人员干活,又不能威胁系统安全,其实就是前面讲的用户权限最小化原则,

    还可以审计用户使用sudo的提权操作命令。为了管理方便,这里暂时给oldboy授权all权限,即可以管理整个系统。详细操作过程

    为:输入visudo找到98行,并在该行下面放入如下内容。

     

    1、sudo执行流程:

    [root@oldboy ~]# cat -n /etc/sudoers | grep -E "97|98"

        97  ## Allow root to run any commands anywhere

        98  root    ALL=(ALL)   ALL    《=====此行是98行

    ##可以在98行下面加入授权的用户,也可以在其它位置加入,授权的命令要填写绝对路径

        oldboy  ALL=(ALL)   /usr/sbin/useradd,/usr/sbin/userdel

    sudo提权配置说明:

    用户或组

    机器=(授权角色)

    可以执行的命令

    oldboy

    ALL=(ALL)

    /usr/sbin/userdel,/usr/sbin/userdel

    说明:

    1、通过sudo授权管理后,所有用户执行授权的特殊权限格式为“sudo命令”。

    2、如果需要切换到root执行相关操作,可以通过“sudo su -”命令,注意,此命令提示的密码为当前用户的密码,而不是root的密码。

    3、执行“sudo -1”命令可以查看当前用户被授予的sudo权限集合。

    2、实例:

    [oldboy@oldboy ~]$ whoami

    oldboy

    [oldboy@oldboy ~]$ useradd test01

    -bash: /usr/sbin/useradd: Permission denied

    [root@oldboy ~]# whoami

    root

    [root@oldboy ~]# cat -n /etc/sudoers | grep -E "97|98|99|100"

        97    ## Allow root to run any commands anywhere

        98    root ALL=(ALL)     ALL

        99   

       100    ## Allows members of the 'sys' group to run networking, software,

    [root@oldboy ~]# which useradd

    /usr/sbin/useradd

    [root@oldboy ~]# sed -i '99a oldboy ALL=(ALL)  /usr/sbin/useradd' /etc/sudoers

    [root@oldboy ~]# cat -n /etc/sudoers | grep -E "97|98|99|100"

        97    ## Allow root to run any commands anywhere

        98    root ALL=(ALL)     ALL

        99   

       100    oldboy ALL=(ALL)  /usr/sbin/useradd

    [oldboy@oldboy ~]$ whoami

    oldboy

    [oldboy@oldboy ~]$ sudo -l

    [sudo] password for oldboy:      ##输入odlboy密码进行验证

    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) /usr/sbin/useradd

    [oldboy@oldboy ~]$ sudo useradd test01

    [oldboy@oldboy ~]$ tail -1 /etc/passwd

    test01:x:502:508::/home/test01:/bin/bash

    3、sudo定义别名

    [root@oldboy ~]# cat -n /etc/sudoers | grep -E "97|98"

    97  ## Allow root to run any commands anywhere

    98  root    ALL=(ALL)   ALL

    别名和具体授权配置的关系表

    用户或组

    主机

    可以切换的用户角色

    命令

    root

    ALL=

    (ALL)

    ALL

    User_Alias ADMINS = jsmith, mikem,%groupname

    Host_Alias     FILESERVERS = fs1, fs2

    Runas_Alias  OP = root

    Cmnd_Alias SERVICES=/sbin/service, /sbin/chkconfig

    1、Host_Alias 定义主机别名

    [root@oldboy ~]# grep -in "Host_Alias" /etc/sudoers

    13:# Host_Alias FILESERVERS = fs1, fs2   ##请注意定义规范,“=”号两边有空格

    14:# Host_Alias MAILSERVERS = smtp, smtp2 ##请注意定义规范,每个成员用逗号分隔,逗号后面有空

    说明:

    1、在生产场景中,一般情况不需要设置主机别名,在定义授权规则时可以通过ALL来匹配所有的主机。

    2、请注意上面定义的规范,有些规范虽然不是必须的,但我们还是要求能够按照系统的标准来配置,这样可以避免意外的问题发生。

    3、以上Host Aliases 内容截取自/etc/sudoer文件,最后两行取清了注释。

    4、其实就是一个逻辑上的主机组,当多台服务器共享一个/etc/sudoers时候会用到这个主机别名。

    2、User_Alias 定义用户别名

    [root@oldboy ~]# grep -in "User_Alias" /etc/sudoers

    20:# User_Alias ADMINS = jsmith, mikem,%groupname

    注意:

    1、设置用户别名也不是必须的,更多的情况,我们可以通过%groupnane的方式来作为成员。

    3、Runas_Alias 定义runas(用户身份)别名

    这个别名指定的是“用户身份”,即sudo允许切换到的用户身份。

    Runas_Alias 定义的是用户可以执行sudo切换身份到Runas_Alias下包含的的成员身份。

    实际语法为:

    Runas_Alias  OP = root

    4、Cmnd_Alias定义命令别名

    命令别名就是定义一个别名,包含一堆命令,即一组相关命令的集合。

    [root@oldboy ~]# grep -ni "Cmnd_Alias" /etc/sudoers

    27:# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

    30:# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

    33:# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

    36:# Cmnd_Alias LOCATE = /usr/bin/updatedb

    39:# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

    42:# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

    45:# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

    48:# Cmnd_Alias DRIVERS = /sbin/modprobe

    5、别名应用实例

    开发人员:

    用户别名: User_Alias  DEVELOP_ADMIN = kaifa01,kaifa02,%KFgroup

    命令权限:KAFACMD

    身份权限:OP1

    运维人员:

    用户别名: User_Alias  LINUX_ADMIN = yuwei01,yuwei02,%YWgroup

    命令权限:USERCMD, DISKCMD, NETMAGCMD, CTRLCD, KAFACMD

    身份权限:OP1

    网络工程师:

    用户别名: User_Alias  NETWORK_ADMIN = wangluo01,wangluo02,%WLgroup

    命令权限:DISKCMD,NETMAGCMD

    身份权限:OP1

    岗位命令分类:

    Cmnd_Alias USERCMD = /usr/sbin/useradd,/usr/sbin/userdel,

    /usr/bin/passwd[A-Za-z]*,/bin/chown./bin/chmod

    Cmnd_Alias DISKCMD = /sbin/fdisk,/sbin/parted

    Cmnd_Alias NETMAGCMD = /sbin/ifconfig,/ete/init.d/network

    Cmnd_Alias CTRLCD = /usr/sbin/reboot,/usr/sbin/halt

    Cmnd_Alias KAFACMD = /bin/grep,/usr/bin/tail,/bin/cat

    角色:

    Runas_Alias   OP1=root

    授权:

    root             ALL=(ALL)    ALL

    用户             机器=角色      命令

    DEVELOP_ADMIN    ALL=(OP1)     KAFACMD

    LINUX_ADMIN      ALL=(OP1)     USERCMD,DISKCMD,NETMAGCMD,CTRLCD,KAFACMD   

    NETWORK_ADMIN    ALL=(OP1)     DISKCMD,NETMAGCMD

    6、上机测试

    root管理员配置/etc/sudoers配置文件

    [root@oldboy ~]# visudo

    #用户别名设置

    User_Alias  DEVELOP_ADMIN = kaifa01,kaifa02,%KFgroup

    User_Alias  LINUX_ADMIN = yuwei01,yuwei02,%YWgroup

    User_Alias  NETWORK_ADMIN = wangluo01,wangluo02,%WLgroup

    #命令别名设置

    Cmnd_Alias USERCMD = /usr/sbin/useradd,/usr/sbin/userdel,

    /usr/bin/passwd[A-Za-z]*,/bin/chown./bin/chmod

    Cmnd_Alias DISKCMD = /sbin/fdisk,/sbin/parted

    Cmnd_Alias NETMAGCMD = /sbin/ifconfig,/ete/init.d/network

    Cmnd_Alias CTRLCD = /usr/sbin/reboot,/usr/sbin/halt

    Cmnd_Alias KAFACMD = /bin/grep,/usr/bin/tail,/bin/cat

    #用户身份别名设置

    Runas_Alias   OP1=root

    #授权

    DEVELOP_ADMIN    ALL=(OP1)     KAFACMD

    LINUX_ADMIN      ALL=(OP1)     USERCMD,DISKCMD,NETMAGCMD,CTRLCD,KAFACMD

    NETWORK_ADMIN    ALL=(OP1)     DISKCMD,NETMAGCMD

    [root@oldboy ~]# visudo –c     #测试/etc/sudoers配置文件语法是否存在错误

    /etc/sudoers: parsed OK

    开发人员kaifa01测试:

    [kaifa01@oldboy ~]$ whoami

    kaifa01

    [kaifa01@oldboy ~]$ sudo -l

    [sudo] password for kaifa01:

    Matching Defaults entries for kaifa01 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 kaifa01 may run the following commands on this host:

        (root) /bin/grep, /usr/bin/tail, /bin/cat

    [kaifa01@oldboy ~]$ sudo grep "3306" /etc/services

    mysql           3306/tcp                        # MySQL

    mysql           3306/udp                        # MySQL

    运维人员yuwei测试:

    [yuwei01@oldboy ~]$ whoami

    yuwei01

    [yuwei01@oldboy ~]$ sudo -l

    We trust you have received the usual lecture from the local System

    Administrator. It usually boils down to these three things:

        #1) Respect the privacy of others.

        #2) Think before you type.

        #3) With great power comes great responsibility.

    [sudo] password for yuwei01:

    Matching Defaults entries for yuwei01 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 yuwei01 may run the following commands on this host:

        (root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd[A-Za-z]*, /bin/chown./bin/chmod, (root)

        /sbin/fdisk, /sbin/parted, (root) /sbin/ifconfig, /ete/init.d/network, (root) /usr/sbin/reboot,

    /usr/sbin/halt, (root) /bin/grep, /usr/bin/tail, /bin/cat

    [yuwei01@oldboy ~]$ sudo useradd test

    [yuwei01@oldboy ~]$ tail -1 /etc/passwd

    test:x:507:510::/home/test:/bin/bash

    网络人员wangluo01测试:

    [wangluo01@oldboy ~]$ whoami

    wangluo01

    [wangluo01@oldboy ~]$ sudo -l

    We trust you have received the usual lecture from the local System

    Administrator. It usually boils down to these three things:

        #1) Respect the privacy of others.

        #2) Think before you type.

        #3) With great power comes great responsibility.

    [sudo] password for wangluo01:

    Matching Defaults entries for wangluo01 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 wangluo01 may run the following commands on this host:

        (root) /sbin/fdisk, /sbin/parted, (root) /sbin/ifconfig, /ete/init.d/network

    [wangluo01@oldboy ~]$ sudo fdisk -l

    Disk /dev/sda: 10.7 GB, 10737418240 bytes

    255 heads, 63 sectors/track, 1305 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk identifier: 0x00043d20

       Device Boot      Start         End      Blocks   Id  System

    /dev/sda1   *           1          26      204800   83  Linux

    Partition 1 does not end on cylinder boundary.

    /dev/sda2              26         124      786432   82  Linux swap / Solaris

    Partition 2 does not end on cylinder boundary.

    /dev/sda3             124        1306     9493504   83  Linux

    7、sudo 配置文件letc/sudoers授权规则注意事项总结:

    (1)、授权规则中的所有ALL字符串必须为大写字母

    (2)、Cmnd_Alias USERCMD=/usr/sbin/useradd,/usr/sbin/userdel,

    /usr/bin/passwd,/usr/bin/passwd[A-Za-z",/bin/chown,/bin/chmod,Vusr/bin/passwd

    rootoldboyALL=usr/sbin/M./sbin/",/usr/sbin/visudo.l/sbin/fdisk./usr/sbin/useradd,/usr/sbin/userdel,Wusr/bin/passwd,/us/bin/passwd[A-Za-z]",/bin/chown,/bin/chmod,!/usrlbin/passwd root

    允许执行的命令是有顺序的。从老男孩测试的结果看,命令的顺序是从后向前,即把禁止执行的命令放在

    允许命令的后面。如:usr/sbin/*,/sbin/*,!/usr/sbin/visudo,/sbin/fdisk,前面的为允许,后面的为禁止。

    在强调下,禁止的命令尽量放在后面。

    (3)、一行内容超长可以用“”斜线换行.

    (4)、“!”叹号表示非,就是命令取反的意思,即禁止执行的命令。

    8、Linux系统安全最小原则说明:

    最小化原则对Limux系统安全来说极其重要:即多一事不如少一事。具体包括如下几个方面:|

    (1)、安装Linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装。

    (2)、开机自启动服务最小化,即无用的服务不开启。

    (3)、操作命令最小化。例如:能用“rm –f test.txt”就不用“rm –rf test.txt”。

    (4)、登录Linux用户最小化,平时没有特殊需求不登录root,用普通用户登录即可。

    (5)、普通用户授权权限最小化,即只给用户必须的管理系统的命令,不能啥都可以干。

    (6)、Linux系统文件及目录的权限设置最小化,禁止随意创建、更改、删除文件。

  • 相关阅读:
    优先队列插入、删除
    堆排序
    UVALive 2474 Balloons in a Box(枚举)
    二叉树的建立、四种遍历、求深度、求叶子结点数
    说说尾递归(转载)
    1#Two Sum(qsort用法)
    马克思:青年在选择职业时的考虑
    最要紧的是,我们首先要善良,其次是要诚实,再次是以后永远不要相互遗忘。
    多重背包优化算法
    poj2976 Dropping tests(01分数规划 好题)
  • 原文地址:https://www.cnblogs.com/zoulongbin/p/10595238.html
Copyright © 2011-2022 走看看