当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪详解linux用户标识UID与有效用户标识EUID      本节内容: linux用户标识UID与有效用户标识EUID 在linux系统中每个进程都有2个ID,分别为用户ID和有效用户ID,UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程对于文件和资源.........
    ▪修改Linux内核参数以增强Linux吞吐量的方法      本节内容: Linux内核参数设置 提高Linux吞吐量。 在linux系统下,遇到如下的问题: 每秒7000多个包,动态请求非常多,有开始丢包现象。 解决: 修改一些内核参数,可以相对增强linux吞吐能.........
    ▪分享:Linux的正确关机方法      1 关机前准备 1.1 观察系统使用状态 谁在线:who 联网状态:netstat -a 后台执行的程序:ps -aux 1.2 通知在线使用者关机时间   代码示例: shutdown +2 "The machine will shutdown" # 2min 后关机,并通知在线者.........

[1]详解linux用户标识UID与有效用户标识EUID
    来源: 互联网  发布时间: 2013-12-24

本节内容:
linux用户标识UID与有效用户标识EUID

在linux系统中每个进程都有2个ID,分别为用户ID和有效用户ID,UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程对于文件和资源的访问权限(具备等同于哪个用户的权限)。可以通过函数getuid()和geteuid()或者进程的两个ID值。

当一个用户登陆系统时,系统会将UID和EUID都赋值为/etc/passwd文件中的UID,一般情况下2个ID是相同的,但是某些情况下会出现2个ID不同的情况。

以下通过一个典型问题和代码实例来说明UID和EUID的问题。

一,linux的passwd命令
passwd命令是用来修改用户登陆密码的,用来记录用户登陆密码的文件为/etc/shadow,该文件只有root用户具有访问权限,如下所示:
 

代码示例:
zth@:~$
zth@:~$ cd /etc
zth@:/etc$ ls -l shadow
-rw-r----- 1 root shadow 978 2009-02-22 21:25 shadow
zth@:/etc$
 

出于安全考虑,不允许普通用户查看并修改shadow文件;但是如果这样普通用户就无法为自己修改密码。

Linux系统就是使用setuid来解决这个矛盾的问题:如果一个程序被设置了setuid位,那么它无论被哪个用户启用,都会具备程序所有者的权限。

而passwd程序的所有者是root用户,passwd的权限如下所示,那么任何用户执行该程序,程序的EUID就会变成root用户的 EUID,而不是执行该程序的UID。
 

代码示例:
zth@:/etc$ cd /usr/bin
zth@:/usr/bin$ ls -l passwd
-rwsr-xr-x 1 root root 32988 2008-06-10 02:10 passwd
zth@:/usr/bin$
zth@:/usr/bin$
 

因此,普通用户可以通过passwd程序修改shadow文件内容,完成密码修改。

参考代码:
 

代码示例:

#include
#include
#include

int main(void)
{
printf("Current process UID: %ld\n",(long)getuid());
printf("Current process EUID: %ld\n",(long)geteuid());
return 1;
}

执行情况:
 

代码示例:
zth@:~$ gcc -o uid uid.c
zth@:~$
zth@:~$ chmod u+s uid //用户主增加权限setuid
zth@:~$ ls -l uid
-rwsr-xr-x 1 gaolu gaolu 9118 2009-03-08 22:26 uid
zth@:~$
zth@:~$ ./uid
Current process UID: 1000
Current process EUID: 1000
zth@:~$
zth@:~$ su //切换到root用户
Password:
root@:/home/gaolu# ls -l uid
-rwsr-xr-x 1 gaolu gaolu 9118 2009-03-08 22:26 uid
root@:/home/gaolu# ./uid
Current process UID: 0
Current process EUID: 1000 //有效用户ID为1000
root@:/home/gaolu#
root@:/home/gaolu#

    
[2]修改Linux内核参数以增强Linux吞吐量的方法
    来源: 互联网  发布时间: 2013-12-24

本节内容:
Linux内核参数设置 提高Linux吞吐量。

在linux系统下,遇到如下的问题:
每秒7000多个包,动态请求非常多,有开始丢包现象。

解决:
修改一些内核参数,可以相对增强linux吞吐能力。

修改内容如下:
 

代码示例:
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=2500
sysctl -w net.ipv4.netfilter.ip_conntrack_max=131072
sysctl -w net.ipv4.ip_conntrack_max=131072
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=60
sysctl -w net.ipv4.netfilter.ip_conntrack_generic_timeout=120
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans=60
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=15
sysctl -w et.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=60
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=60
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_max_retrans=2
sysctl net.ipv4.tcp_max_syn_backlog=3072
sysctl -w net.core.somaxconn=1024
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=6
sysctl -w net.ipv4.netfilter.ip_conntrack_max=163840
sysctl -w net.ipv4.tcp_synack_retries=1

    
[3]分享:Linux的正确关机方法
    来源: 互联网  发布时间: 2013-12-24

1 关机前准备

1.1 观察系统使用状态
谁在线:who
联网状态:netstat -a
后台执行的程序:ps -aux

1.2 通知在线使用者关机时间
 

代码示例:
shutdown +2 "The machine will shutdown" # 2min 后关机,并通知在线者

2 关机命令
2.1 sync
将内存中未写入硬盘的数据写入硬盘

2.2 shutdown
 

shutdown now # 立即关机
shutdown +2 # 2 min 后关机
shutdown 10:01 # 10:01关机
shutdown +2 "The machine will shutdown" # 2min 后关机,并通知在线者

2.3 reboot
重新启动,加参数后可以实现halt,poweroff

2.4 halt
指向reboot的链接,相当于shutdown -h
  
2.5 poweroff
指向reboot的链接, 相当于halt

3 执行等级

3.1 等级划分
 

run level 0: 关机
run level 3: 纯文本模式
run level 5: 含图形接口模式
run level 6: 重新启动
 

3.2 等级切换
init 0 # 切换到等级0,即关机

附:shutdown,halt,poweroff区别
shutdown :使系统关闭,参考一下现有的解释:“命令安全地将系统关机。
有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。

而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能重 启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕决定的。

这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则可以正常地离开等等”。
而且shutdown会去执行 /etc/rc0.d/ 下面的脚本,也就是说会去执行runlevel 0 的脚本。 halt则不会。

poweroff: 切断系统电源
poweroff就是halt的软链接而已。执行的还是halt命令。关于halt 命令,可以这样理解:halt就是调用shutdown -h。
halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


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

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

浙ICP备11055608号-3