当前位置:  建站>运营/SEO
本页文章导读:
    ▪用户管理命令useradd等的深入理解及手动创建用户      一 搞清楚adduser和useradd的关系 [root@larrywen opt]# type adduser adduser is /usr/sbin/adduser [root@larrywen opt]# type useradd useradd is /usr/sbin/useradd [root@larrywen opt]# which useradd /usr/sbin/useradd [root@larrywen opt]# which addus.........
    ▪passwd文件没有任何权限,为什么普通用户可以正常登录      我们可以看到密码文件没有任何权限,用户登录时要需要读取密码文件,如果正确是怎样通过验证的呢? [root@serv01 learning]# ls /etc/shadow -l ----------. 1 root root 1155 Sep 20 22:11/etc/shadow 因为该文件.........
    ▪一次slab异常排查过程      内核版本3.0.74 arm, 2核 在执行lmbench内存压力测试时,发生了好几次slab异常,每次异常都是在这个地方: kernel BUG at mm/slab.c:3067! Unable to handle kernel NULL pointer dereference at virtual address 00000000 [<c.........

[1]用户管理命令useradd等的深入理解及手动创建用户
    来源: 互联网  发布时间: 2013-11-01
一 搞清楚adduser和useradd的关系

[root@larrywen opt]# type adduser
adduser is /usr/sbin/adduser
[root@larrywen opt]# type useradd
useradd is /usr/sbin/useradd
[root@larrywen opt]# which useradd
/usr/sbin/useradd
[root@larrywen opt]# which adduser
/usr/sbin/adduser
[root@larrywen opt]# ls -l /usr/sbin/adduser /usr/sbin/useradd
lrwxrwxrwx. 1 root root     7 Jul 21 14:11 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 97040 Feb 24  2011 /usr/sbin/useradd

二 可以使用useradd命令添加用户
[root@larrywen /]# useradd zhink
[root@larrywen /]# id zhink
uid=501(zhink) gid=502(zhink) groups=502(zhink)

三 使用useradd和adduser创建用户执行流程(修改文件)
#用户相关信息
[root@serv01 test]# ls /etc/passwd
/etc/passwd
#用户密码信息
[root@serv01 test]# ls /etc/shadow
/etc/shadow
#组的信息
[root@serv01 test]# ls /etc/group
/etc/group
#组密码相关信息
[root@serv01 test]# ls /etc/gshadow
/etc/gshadow
#用户的家目录
[root@serv01 test]# ls /home
zhink
#邮件相关的信息
[root@serv01 test]# ls /var/mail
zhink

四 手工创建用户

        1.修改用户信息文件,比如我改成这样,每个字段的含义可以使用man 5 passwd查看配置文件

[root@serv01 home]# vim /etc/passwd
[root@serv01 home]# tail -1 /etc/passwd
hongyi:x:501:501::/home/hongyi:/bin/bash

        2.修改用户的密码文件,可以使用grub-md5-crypt工具生成一个密码,比如我改成这样,每个字段的含义可以使用man 5 shadow查看配置文件

[root@serv01 test]# vim /etc/shadow
[root@serv01 home]# tail -1 /etc/shadow
hongyi:$1$ApQEH1$tu32jdS4O/c43Xzppyfmi1:15910:0:99999:7:::
[root@serv01 test]# grub-md5-crypt 
Password: 
Retype password: 
$1$ApQEH1$tu32jdS4O/c43Xzppyfmi1

        3.修改组文件,比如我改成这样,每个字段的含义可以使用man5 group查看配置文件

[root@serv01 test]# vim /etc/group
hongyi:x:501

        4.修改组密码文件,比如我改成这样,每个字段的含义可以使用man5 gshadow查看配置文件

[root@serv01 test]# vim /etc/gshadow
hongyi:!::

        5.创建用户主目录

[root@serv01 home]# mkdir /home/hongyi

        6.拷贝模板文件

        我们查看其他用户的主目录,可以看到有一些隐藏的配置文件,我们必须拷贝到用户的主目录

[root@serv01 home]# ll zhink/ -a
total 24
drwx------. 3 zhink hink 4096 Jul 24 22:18.
drwxr-xr-x. 5 root  root 4096 Jul 24 23:09 ..
-rw-r--r--. 1 zhink hink   18 Jan 27 2011 .bash_logout
-rw-r--r--. 1 zhink hink  176 Jan 27 2011 .bash_profile
-rw-r--r--. 1 zhink hink  124 Jan 27 2011 .bashrc
drwxr-xr-x. 2 zhink hink 4096 Jul 16  2010 .gnome2


        这些配置文件在/etc/skel目录下,我们拷贝到用户主目录就可以了

cp /etc/skel/. /home/hongyi/ -raf


        7.修改用户主目录的所有者 组拥有者 权限

chown hongyi.hongyi /home/hongyi/ -R
chmod 700 /home/hongyi/


        8.创建用户的邮件文件

touch /var/mail/hongyi


        9.修改该文件的所有者 组拥有者 权限

[root@serv01 home]# chown hongyi.mail/var/mail/hongyi
[root@serv01 home]# chmod 660/var/mail/hongyi


        10.我们使用ssh登录,测试手工创建用户是否成功

[root@larrywen Desktop]# ssh hongyi@192.168.1.11
hongyi@192.168.1.11's password:
Last login: Wed Jul 24 23:14:22 2013 from192.168.1.1
[hongyi@serv01 ~]$
[hongyi@serv01 ~]$ ls -a
. ..  .bash_history  .bash_logout .bash_profile  .bashrc  .gnome2


五 写在最后

        当然本文只是对理解useradd命令所做的实验,生产环境中肯定不会这样操作。其实学习的过程中使用这种方式可以让你理解命令的背后到底做了什么。



  我的邮箱:wgbno27@163.com
  新浪微博:@Wentasy27         
  微信公众平台:JustOracle(微信号:justoracle)
  数据库技术交流群:336882565(加群时验证 From CSDN XXX)
  Oracle交流讨论组:https://groups.google.com/d/forum/justoracle
  By Larry Wen


  @Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
作者:Wentasy 发表于2013-8-3 10:34:02 原文链接
阅读:72 评论:0 查看评论

    
[2]passwd文件没有任何权限,为什么普通用户可以正常登录
    来源: 互联网  发布时间: 2013-11-01

我们可以看到密码文件没有任何权限,用户登录时要需要读取密码文件,如果正确是怎样通过验证的呢?

[root@serv01 learning]# ls /etc/shadow -l
----------. 1 root root 1155 Sep 20 22:11/etc/shadow

因为该文件具有s属性。s:s针对命令,对与普通文件或者目录没有任何意义,特权位,命令执行的一瞬间具有root权限

[root@serv01 learning]# ls /etc/shadow -l
----------. 1 root root 1155 Sep 20 22:11/etc/shadow
[root@serv01 learning]# which passwd
/usr/bin/passwd
[root@serv01 learning]# ls -l/usr/bin/passwd
-rwsr-xr-x. 1 root root 25336 Jan 29  2010 /usr/bin/passwd


演示修改vim的权限,可以打开任何文件在任何地方修改文件

[root@serv01 learning]# which vim
/usr/bin/vim
[root@serv01 learning]# ls -l /usr/bin/vim
-rwxr-xr-x. 1 root root 1933032 Feb 15  2011 /usr/bin/vim
[root@serv01 learning]# chmod u+s/usr/bin/vim
[root@serv01 learning]# ls -l /usr/bin/vim
-rwsr-xr-x. 1 root root 1933032 Feb 15  2011 /usr/bin/vim

 

第一步 在当前目录创建文件

[zhink@serv01 bbbb]$ vim file

第二步 查看文件的信息

[zhink@serv01 bbbb]$ ls -l file
-rw-rw-r--. 1 root zhink 6 Sep 20 23:17file

第三步 在root的根目录下创建文件,可以看到文件所有者时root

[zhink@serv01 bbbb]$ vim /root/test.txt

第四步 查看test.txt的权限,可以看到文件所有者是root

[root@serv01 learning]# ls /root/test.txt-l
-rw-rw-r--. 1 root zhink 12 Sep 20 23:17/root/test.txt
[root@serv01 learning]# cat bbbb/file
hello
[root@serv01 learning]# cat /root/test.txt
hello,world

第五步 此时编辑shadow文件也可以

[zhink@serv01 bbbb]$ vim /etc/shadow
#为了系统的安全性,还原vim命令的权限
[root@serv01 learning]# chmod u-s /usr/bin/vim
[root@serv01 learning]# ls /usr/bin/vim -l
-rwxr-xr-x. 1 root root 1933032 Feb 15  2011 /usr/bin/vim

第六步 还原vim的属性,再次查看密码文件,发现看不到内容

[zhink@serv01 bbbb]$ vim /etc/shadow

第七步 g+s后的实验

#目录继承s,文件继承w
[root@serv01 learning]# chmod g+s cccc/
[root@serv01 learning]# cd cccc/
[root@serv01 cccc]# chmod g+w ../cccc/
[root@serv01 cccc]# mkdir oooo
 
[zhink@serv01 cccc]$ ll
total 8
drwxrwsr-x. 2 zhink root 4096 Sep 20 23:29ffff
-rw-rw-r--. 1 zhink root    0 Sep 20 23:30 file
drwxr-sr-x. 2 root  root 4096 Sep 20 23:26 oooo


  我的邮箱:wgbno27@163.com
  新浪微博:@Wentasy27         
  微信公众平台:JustOracle(微信号:justoracle)
  数据库技术交流群:336882565(加群时验证 From CSDN XXX)
  Oracle交流讨论组:https://groups.google.com/d/forum/justoracle
  By Larry Wen


  @Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
作者:Wentasy 发表于2013-8-3 10:42:25 原文链接
阅读:76 评论:0 查看评论

    
[3]一次slab异常排查过程
    来源: 互联网  发布时间: 2013-11-01
内核版本3.0.74
arm, 2核

在执行lmbench内存压力测试时,发生了好几次slab异常,每次异常都是在这个地方:

kernel BUG at mm/slab.c:3067!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
[<c003c6ec>] (__dabt_svc+0x4c/0x60) from [<c00405a4>] (__bug+0x1c/0x28)
[<c00405a4>] (__bug+0x1c/0x28) from [<c00c9d0c>] (cache_alloc_refill+0x3a0/0x654)
[<c00c9d0c>] (cache_alloc_refill+0x3a0/0x654) from [<c00ca174>] (kmem_cache_alloc+0xb0/0xc4)
[<c00ca174>] (kmem_cache_alloc+0xb0/0xc4) from [<c0057b04>] [color=Red](copy_process+0x9c/0xdbc)[/color]
[<c0057b04>] (copy_process+0x9c/0xdbc) from [<c0058890>] (do_fork+0x48/0x288)
[<c0058890>] (do_fork+0x48/0x288) from [<c003cc40>] (ret_fast_syscall+0x0/0x30)
对应的语句是cache_alloc_refill函数:

/*
 * The slab was either on partial or free list so
 * there must be at least one object available for
 * allocation.
 */
 BUG_ON(slabp->inuse >= cachep->num);
根据函数的逻辑,代码走到这里的时候,说明刚从cache的partial或者free链表里取得了一个可用slab,
而这个获取的slab,一定是还有可用的obj,即slabp->inuse一定小于上限cachep->num。

为确认在BUG_ON前,打印slabp->inuse和cachep->num的值,出错时:

slabp->inuse:5,cachep->num:5

在正常情况下,打印task_struct_cache的num上限确实是5。

代码走到了这里,并触发了BUG_ON,起先怀疑:
1)这个版本的内核(3.0.74)是否有slab方面的bug? 
2)是否这个arm架构的spinlock的实现有问题?

但后来一想,内核不可能做的这么糟糕,被lmbench内存压力小测一下就出异常,应该是其他什么地方出问题了。

为了进一步分析,先把该slab的内容都打印一下,看有没有什么线索:

partial.next:df913000,free.next:df802df0
slabs_partial pointer:df802de0,slabs_free pointer:df802df0
slab get from partial
cache 'task_struct'(5), slabp df913000(inuse:5,free:-257),kmem_map vaddr:0xdf91301c
Hexdump:
000: 00 50 90 df e0 2d 80 df 40 00 00 00 40 30 91 df
010: 05 00 00 00 ff fe ff ff 00 00 ad de 03 00 00 00
020: ff ff ff ff 00 00 00 00 ff fe ff ff ff ff ff ff
上面有两个重要信息,首先是从task_struct_cache的 partial链表里取出了一个slab,然后该slab的free字段是非法的-257(0xfffffeff)
Hexdump的 前面0x1c字节是slab描述符,后面的是slab的obj位图数据:

struct slab {
        union {
                struct {
                        struct list_head list;  0xdf905000,0xdf802de0
                        unsigned long colouroff; 0x40
                        void *s_mem;                /* including colour offset */ 0xdf913040
                        unsigned int inuse;        /* num of objs active in slab */ 0x5
                        kmem_bufctl_t free; 0xfffffeff:typedef unsigned int kmem_bufctl_t; 
                        unsigned short nodeid;
                };
                struct slab_rcu __slab_cover_slab_rcu;
        };
};
问题就是,这个 0xfffffeff 是怎么出来的?slab描述符周围的值看上去都是正常的。
很有可能是内存bit跳变。本来该slab已经满了,但由于slabp的free从fffffff变成fffffeff,

因此不加入full list,而加入了partial_list。下一次再分配slab的时候,

就从partial里取了一个非法的slab,导致分配时cache_alloc_refill里的BUG_ON被触发。

/* move slabp to correct slabp list: */
list_del(&slabp->list);
if (slabp->free == BUFCTL_END)
    list_add(&slabp->list, &l3->slabs_full);
else
    list_add(&slabp->list, &l3->slabs_partial);
后续了解到,这个DDR是超频到533M使用的,于是将其恢复到正常频率400M,测试lmbench再没有发生异常。


作者:chenyu105 发表于2013-8-3 9:46:32 原文链接
阅读:79 评论:0 查看评论

    
最新技术文章:
▪SQVI和SAP查询QUERY的区别和使用注意事项    ▪彻底理解Cisco/Linux/Windows的IP路由    ▪Exchange 2010 处于禁止发送用户自动收到来自IT...
▪MB_CHANGE_DOCUMENT使用方法    ▪ALV的html表头    ▪【译】如何精确判断最终用户响应时间过长的...
▪apache2.4.4启用deflate压缩    ▪使用vmware 配置centos 6.0+ 网络出现的各种问题...    ▪十句话教你学会Linux数据流重定向
▪centos6.x已经安装的系统添加图形界面    ▪Linux查看CPU和内存使用情况    ▪win7问题解决,凭据管理器和无法访问,不允...
▪Dynamics CRM 2013 初体验(4):不再被支持的功...    ▪win7下制作ubuntu系统安装启动盘和U盘安装ubuntu...    ▪Linux cp -a用法
▪Windows Server时间服务器配置方法    ▪Tomcat+memcached实现Session共享    ▪Linux修改系统环境变量PATH路径的方法
▪Citrix 服务器虚拟化之二十七 XenApp6.5发布服务...    ▪搭建本地Ubuntu 镜像服务器    ▪Create local metadata resource of yum
▪tsm ANS0326E问题处理    ▪Windows SVN变化邮件通知(Python2.7实现)    ▪linux下的内核测试工具——perf使用简介
▪Nginx TCP Proxy模块的编译安装    ▪OSX: SSH密钥使用日记(2)    ▪OSX: SSH密钥使用日记(1)
▪Manually start and stop Oracle XE in Ubuntu    ▪Disable autostart of Oracle-xe in Ubuntu    ▪tar命令-linux
▪xtrabackup-2.1.2-611安装    ▪无废话ubuntu 13.4文件共享配置    ▪Unix文本处理工具之sed
▪hpux 操作系统 磁带备份与恢复    ▪HP DL360 G7通过iLO部署系统    ▪Redhat 6.0中VNC Server的配置方法
▪hpux 操作系统磁带备份与恢复    ▪用C++编程调用libvirt的API来创建KVM虚拟机    ▪hpux- hp小型机日常硬件故障处理case(一)
▪web集群时session同步的几种方法(统计)    ▪inux常用命令大全    ▪BAT 批处理实现循环备份N天文件夹
▪BIND9私有DNS服务器小环境搭建实验    ▪Exchange2013增量备份    ▪OSSEC Monitor your App log file
▪《深入理解Nginx》阅读与实践(三):使用upstre...    ▪如何给Fedora 15创建磁盘分区    ▪Packet Sniffer Code in C using sockets
▪Error, some other host already uses address    ▪修改uCOS_II以实现“优先级+时间片”联合调度    ▪weblogic开发模式与生产模式介绍
▪Wireshark 高级特性    ▪ubuntu13.04版本下安装RabbitVCS,类似windows的Tortoi...    ▪Apache 一台主机绑定多个域名及虚拟主机
▪linux安全设置    ▪RHEL双网卡绑定    ▪Linux shell if参数
▪Windows配置路由时可以指定源地址啦    ▪centos安装vim7.4    ▪S3C2410 实验三——块拷贝、字拷贝(寄存器的...
▪系统运维——日志处理    ▪ip_conntrack缓存neighbour    ▪关键在封装并发出了帧-IP冲突也无所谓
▪weblogic11g 安装——linux 无图形界面    ▪《数据通信与网络》笔记--SCTP    ▪《数据通信与网络》笔记--TCP中的拥塞控制
▪weblogic11g 安装集群 —— win2003 系统、单台主...    ▪weblogic11g 节点管理器 nodemanager    ▪Citrix 服务器虚拟化之二十六 应用程序虚拟化...
▪如何将windows下的文件夹挂载到linux虚拟机下    ▪在64位AIX6.1下安装SAP JCo    ▪Outlook启动时提示“找不到文件Outlook.pst文件”...
▪weblogic8.1 登陆5 ip 限制    ▪weblogic 内存 及 内存溢出    ▪手把手教你在Windows端搭建Redmine项目管理软件
▪启动及重新启动nginx,重启nginx后丢失nginx.pid问...    ▪Win7实现快速启动栏并实现靠左边的终极操作...    ▪《深入理解Nginx》阅读与实践(二):配置项...
▪显示grub引导菜单    ▪nagios监控主机    ▪linux各种数据流重定向
▪centOS安装chrome浏览器    ▪Slackware 14 安装完全指南    ▪SharePoint 2013的100个新功能之内容管理(三)
▪Citrix 服务器虚拟化之二十一 桌面虚拟化之部...    ▪[问,ask]ubuntu13.04安装vncserver后只显示桌面,不显...    ▪Win7中IIS出现“HTTP 错误 404.17 - Not Found 请求的...
▪CentOS快速安装最新版本的SaltStack    ▪CentOS 6.4 快速安装Nginx笔记    ▪磁盘管理——RAID 0
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3