资源描述
在Linux里设置环境变量的方法(export PATH)
般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设 置环境变量。例如我的 mips-linux-gcc 编译器在“/opt/au1200_rm/build_tools/bin” 目录下,build_tools 就是我的编译工具, 有如下三种方法来设置环境变量:
1、直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin 查看是否已经设好,可用襦令export查看:
[root@localhost bin]# exportdeclare -x BASH_ENV=,7root/.bashrcn
declare -x G_BROKEN_FILENAMES=Tdeclare -x HISTSIZE=M1000M
declare -x HOME=M/root,fdeclare -x HOSTNAME=Mlocalhost.localdomainvv
declare -x INPUTRC="/etc/inputrc”declare -x LANG=Mzh_CN.GB18030M
declare -x LANGUAGE=Mzh_CN.GB18030:zh_CN.GB2312:zh_CNMdeclare -x LESSOPEN=vv|/usr/bin/lesspipe.sh %s” declare -x LOGNAME=Mroot,f
declare-xLS_COLORS=Mno=00:fi=00:di=01 ;34:ln=01 ;36:pi=40;33:so=01 ;35:bd=40;3 3;01 :cd=40;33;01 :or=01 ;05;37;41 :mi=01 ;05;37;41 :ex=01 ;32:* d=01 ;32:*.
exe=01 ;32:* =01 ;32:*.btm=01 ;32:*.bat=01 ;32:*.sh=01 ;32:*.csh=01 ;32:*.t ar=01 ;31 :*.tgz=01 ;31 :*.arj=O1 ;31 :*.taz=01 ;31:*.lzh=01 ;31 :*.zip=01 ;31 :*.z=01; 31 :*.Z=01 ;31 :*.gz=01 ;31 :*.bz2=01 ;31 :*.bz=01 ;31 :*.tz=01 ;31 :*.rpm=01 ;31 :*.c pio=01 ;31 :*.jpg=O1 ;35:*.gif=01 ;35:*.bmp=01 ;35:*.xbm=01 ;35:*.xpm=01 ;35:* .png=01 ;35:*.tif=01;35:Hdeclare -x MAIL="/vai7spool/mail/root”
declare -x OLDPWD="/opt/au1200_rm/build_tools”declare-x
PATH=,7usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R 6/bin:/root/bin:/opt/au1200_rm/build_tools/binMdeclare -x PWD=,7opt/au1200_rm/build_tools/binM
declare -x SHELL=,7bin/bashf7 一declare -x SHLVL=T
declare -x SSH_ASKPASS=,7usr/libexec/openssh/gnome-ssh-askpassM declare -x SSH二AUTH_SOCK=''/tmp/ssh・XX3LKWhz/agent.4242”declare -x SSH_CLIENT=M10.3.37.152 2236 22”
declare -x SSH_CONNECTION=,f10.3.37.152 2236 10.3.37.186 22”declare -x SSH_TTY=,7dev/pts/2M
declare -x TERM=MlinuxM declare -x USER=f,root,f declare -x USERNAME=nroor。(用于指定选项,如只读为r。,读写为rw)
# a (安装所有的文件系统)mount -t vfat /dev/sdb 1 /mnt/ude (将/dev/sdb 1 挂载至Ij/mnt/ude)
fedora8可直接识别NTFS, FAT32格式的文件系统,系统默认挂装在“/media”下
挂装ntfs格式分区mount -t ntfs-3g设备名 挂装点
挂装ISO文件mount -t iso9660 -o loop 文件名 挂装点
如果想制作ISO文件,把光盘放到光驱中,然后执行如下的拷贝命令就可以把光盘上的 内容拷贝到一个ISO文件中去。
#cp /dev/cdrom *・iso4,卸载挂装的文件系统:
#umount〈设备名或挂装点>#umount /dev/cdrom (将/dev/cdrom上挂装的文件系统卸载)
5,查看目录或文件属性:
#ls参数 (=dos下“dir”命令)a列出所有文件,包括以“『开头的隐藏文件;
- A列出除“.”和外的所有文件;B不输出以“〜”结尾的备份文件;
- C按列输出,纵向排序;c输出文件的i节点的修改时间,并以此排序;
- d将目录像文件一样显示,而不是显示其下的文件;F在文件后以符号说明文件类型,*为可执行文件;
- G输出文件的组信息;h列出文件实际大小
- i输出文件的i节点的索引信息;1列出文件详细信息,可用“1”命令代替;
- m横向输出文件名,以“,”分开;-n用数字的UID, GID代替名称;
- o显示除组外的详细信息;Q把文件名用双引号括起;
- R列出所有子目录下的文件;s在文件后输出文件大小;
- S以文件大小排序;4以时间排序;
- u以上次被访问的时间排序;X按列输出,横向排序;
- X以文件的扩展名排序;1 一行只输出一个文件;
-color不显示彩色文件名;6,删除文件或目录:
- rm [参数]文件名目录名
(强制删除)r (递归地删除)
#rm -rf /temp (强制删除/temp及其下所有文件)7,新建目录:
#mkdir目录名8,删除目录:
#rmdir目录名(rmdir命令只能删除空目录)创立链接文件:In-s(表示符号链接)/路径/源文件/路径/链接文件』n;(“链接文件”类似win 中的“快捷方式”)
9,改变路径:
#cd绝对或相对路径10,创立链接文件:
linux中的链接文件类似windows中的快捷方式。链接文件可局部代替原文件的功能,且 对链接文件进行修改,可自动更新到源文件中。
#ln-s源文件目标文件(-s表示创立的是符号链接)ln -s /test/file /testl/file.ln (为 file 文件创立链接文件 file.ln)
11,复制文件:
# cp [参数]源文件目标文件f (强制覆盖已经存在的目标文件)
-r (递归地连同子目录一起copy)12,移动文件:
#mv源文件目标文件
mv命令类似于windows中的剪切,不同之处在于它带有将文件改名的功能。
13,显示文件内容:
#cat文件名
cat命令可以将文件内容显示出来,也可以将文件内容合并后输出。它不支持分而显示, 如果文件较长,只能看到最后一页。
#cat filel file2> file3 (将 filel和 file2连接起来并输出到 file3)14,分页显示文件内容:
#more [+“nunTor“str” ] 文件名
more命令可以分页显示文件内容,+参数后可跟行号或字符串,+行号表示从指定行开始 显示,+字符串表示从指定字符串处开始显示。
#more +abc /etc/rpc (从字符串“abc”开始分页显示/etc/rpc文件的内容)三、用户和组群管理
1,linux下的帐户系统文件
linux系统中,用户和组的相关系统都保存在用户和组数据库文件中,主要有“/etc/passwd”、 "/etc/shadow“、"/etc/group''和"/etc/gshadow"四个文件。
(1),用户帐号文件一passwd
/etc/passwd文件也称为密码文件,是于基本的用户数据库文件,它列出了所有有效用户的 相关信息。passwd文件需要能够被所有用户访问。该文件内每个用户占一行,被分为7个字 段:
(1)用户名;(2)密码,采用加密形式;
(3) UID;GID;
(5)帐号信息,也叫GECOSo(6)用户主目录;
(7)登录 shell。
/etc/passwd中UID很重要,系统使用UID而不是用户名来区别用户。0—99为系统UID, 如果passwd文件中有两个不同用户具有相同的UID,那么这两个用户对相互的文件具有相同 的存取权限。
/etc/passwd文件格式可以使root能够要求用户定期修改他们的口令。passwd文件中,有 些加密口令项中有号号后字符的意义为:
⑴第一个字符,口令有效期的最大周数,⑵第二个字符,再次修改口令前原口令需使用的最小周数,
(3)其余字符表示口令最新修改时间。
steve:xyDfccTrtl80x,M.y8:0:0:admin:/:/bin/shpat:xmotTVoyumjls:0:0:admin:/:/bin/sh
口令中后字符是根据passwd_esc计数器计算的,计算的方法为:
:二0/=1
0〜9=2〜11A 〜Z= 12=37
a〜z=38〜63
root需要将前两个字符放进/etc/passwd文件中,以要求用户定期修改口令,另外两个字符 在用户修改口令时由passwd自动写入。可在“,”后加入“.二 使用户在下次登录时必须修改 口令。有两种特殊情况:
⑴第一字符小于第二字符,那么不允许用户修改口令,仅root可以修改;⑵前两个字符都是“二 用户下次登录时将被要求修改口令,修改后passwd命令将“删除, 以后不再要求用户修改口令。
⑵,用户口令文件-shadow
在影子口令机制中,加过密的口令数据项被从passwd文件中转移到shadow文件中, passwd文件仍然可以被系统上所有用户访问,shadow文件只能被具有root权限的用户访问。 shadow文件包含着口令失效期和帐号是否被禁用等信息,分为9个字段: (1)用户名;(2)加过密的口令。如果为空那么登录时不需要口令,如果含有不属于口令集{/0-9,A-Z,a-z} 中的字符,那么对应的用户不能登录;
(3)从1970年1月1日起计算,到用户最后一次修改口令时的天数(时间起点会因系统不同而 不同);(4)两次修改口令之间所需的最小天数,即一次修改后需要再过多少天才能修改这个口令;
(5) 口令保持有效的最大天数,即一次修改后需要再过多少天这个口令必须被修改;(6)警告天数,需要在这个口令失效前多少天对用户发出警告;
(7) 口令失效后多少天禁用此帐号,另外的解释是用户没有登录活动但帐号仍能保持有效的 天数;(8)从1970年1月1日起计算,该口令已经被禁用多少天,另外的解释是帐号从设置开始可使 用的天数;
(9)保存。
(3),用户组帐号文件-group每个用户至少会属于一个分组,也就是他缺省的用户分组。在需要的情况下,用户还可以 分配到其他分组中去。group文件也需要能够被所有用户访问,因为这
样应用程序才能测试用户与分组之间的关联性。分组名不允许超过8个字符,每个分组1D 也必须是唯一的。/etc/group包含着每个每个用户缺省的分组ID(GID),分为4个字段:
(1)分组名;(2)加过密的分组口令;
⑶ GID;(4)以“,”分隔的分组成员清单
(4),使用vipw和vigr命令编辑用户帐号文件和组帐号文件
vipw或vigr启动vi编辑器翻开文件的一个副本,每次只允许一个人编辑passwd或group 文件,可以防止用户在passwd文件被编辑的时候修改他们的口令。当编辑结束时,用副本 代替原文件。可以使用“vipw -s”给shadow文件加入对应的项。
(5),使用pwck和grpck验证用户和组帐号文件
pwck命令检查密码文件passwd和shadow的完整性,以确认文件中的信息都有正确的格 式、各数据域有合法的信息。对于不正确的信息建议用户删除。
grpck命令检查group和gshadow文件的完整性,以确认文件中的信息都有正确的格式、 各数据域有合法的信息。
2,用户帐号维护命令(1),useradd 命令
#useradd [参数]用户名
useradd命令允许一次添加一个用户到系统中,如果命令中不定义参数,那么使用各参数的 默认值,可以使用“useradd-D”命令查看各参数的默认值。
-c其他信息(在GECOS域中设置用户全名,与其它参数一样,如果设置值中间有空格,必 须在两端加上引号)-d主目录(缺省情况下,用户主目录被定义为/home/用户名,此参数可以改变主目录)
-e失效日期(缺省情况下,帐号永不失效,此参数可以设置用户失效日期,日期格式为 MM/DD/YY, 2000年用00表示)-f天数(此参数定义口令失效后该帐号还能够使用的天数,0表示立刻禁用,-1表示永不禁 用,缺省值为-1)
-g分组名或GID (此参数定义用户的缺省分组,后面可以跟分组名或GID,但分组必须已 经在group文件中定义)-G分组名或GID (此参数把用户添加到其他的分组中去,可用“,”分隔,定义多个分组)
- M (不建立用户登录子目录)n (redhat把建立一个与新用户同名的分组做为用户添加工作的一局部,此参数禁止这种行 为)
- s shell路径(此参数可定义用户的登录shell,缺省为/bin/bash)-uUID (缺省情况下,程序会自动找出一个可用的UID分配给新用户,此参数可将指定UID 分配给新用户)
H -g admin -G sopport,root -s /bin/tcsh hdc(添加一个名为hdc的用户,命名为H.D.cor,缺省分组为admin并属于sopport和root组, 登录 shell 为/bin/tcsh)
(2),usermod 命令#usermod [参数]用户名
usermod命令允许修改现有用户的信息,它的工作原理与useradd类似,参数作用相同。
在使用-1和-U参数时应注意,必须确认被修改的用户当前没有登录上机或运行任何程序, 否那么会引起不便。
- 1新用户名(此参数可修改现有用户的登录名)(3),userdel 命令
#userdel [-r]用户名
userdel命令可删除现有用户,此命令只有-r 一个可选参数。在不加参数时,将只删除 passwd、shadow和group中关于此用户的工程,加-r参数将递归地删除以上工程和登录子 目录中该用户的所有文件。
3,组帐号维护命令:
(l),groupadd 命令
对于用户分组进行操作的命令类似于对用户进行操作的命令,但他们并不作用于单个用 户,而是作用于/etc/group文件中列出的分组。改变分组并不会改变该分组中用户的属性。
#groupadd [参数]分组名g GID (指定新分组的GID,缺省情况下系统会把GID指定为找到的第一个可用值)
- r (缺省情况下,系统会自动搜索第一个大于499的GID值,此参数告groupadd命令这个一 个系统分组,需耍使用第一个小于499的可用值)-f (在添加新分组时,如果该分组已经存在,命令会自动退出执行,使用此参数,在退出执 行前不会修改分组的设置值)
#groupadd -g 800 test (添加一个 GID 为800,名为 test 的分组)(2),groupmod 命令
groupmod命令可以修改某个现有分组的属性。
#groupmod [参数]分组名-g新GID (改变现有分组的GID为新GID)
-n新组名(改变现有分组的分组名为新组名)#group -g 1000 -n new test (将test分组的GID和分组名分别改为1000和new)
(3),groupdel 命令#groupdel分组名(删除指定分组,此命令没有可选参数)
4, 口令维护命令(l),passwd 命令
root可以使用passwd命令修改任何用户的口令。passwd会提示用户输入一个新口令,并 需要重复输入一次,如果输入的口令过于简单,passwd会发出抱怨,要求用户使用复杂一 些的口令。
#passwd [参数]用户名k或-keep-token (保持没有到期认证的令牌)
- d或一delete (从指定的用户名删除口令,root only)1或--lock (锁住指定的用户名,root only)
- u或-unlock (解锁指定的用户名,root only)f或--force (强制操作)
- x或-maximum=DAYs (最大密码生存天数,root only)n或—minimum=DAYs (最小密码生存天数,root only)
- w或--warning=DAYs (密码失效前对用户发出警告的天数,root only)i或-inactive二DAYs (密码失效后多少天禁用此帐户,root only)
-S或-status (报告指定帐户的口令状态,root only)-stdin (从 stdin 读取新的令牌,root only)
-usage (显示简短的使用信息)(2),gpasswd 命令
类似于passwd命令,root可用gpasswd修改任何组的口令。
#gpasswd分组名(3),chfn 命令
chfn用来改变finger信息,该信息是存放在/etc/passwd档内的GECOS信息,可使用finger 命令来显示。linux的finger显示4段信息:真实姓名、工作地点、办电和宅电。
#chfn [参数][用户名].f姓名(改变指定用户的姓名)
- o office (改变指定用户的工作地)p phone (改变指定用户的办电)
- h hom叩hone (改变指定用户的宅电)(4),chsh 命令
chsh用来改变用户的登录shell,如果在命令列没有指定shell, chsh会提示一个有效shell 给用户。
#chsh [参数][用户名]S (更改指定用户的登录shell)
- 1 (列出记录在/etc/shells文件中的shell)5,用户和组状态命令
⑴,id命令
id命令用于显示指定用户的实际ID和有效IDoid [参数][用户名]
- a (忽略,用于兼容其他版本)g (只显示有效{effective}GID)
- G (显本所有GID)n (显示用户名而不是数字,不可单独使用)
- r (显示实际ID而不是有效ID)u (只显示有效UID)
(2),whoami 命令
whoami命令用于查看当前用户名。
(3),su命令使用SU命令可以从当前用户切换为其他用户,如不加用户名,那么切换为root用户。出于安 全的考虑,系统一般禁止root从除系统控制台外的其他方式登
录,以root身分登录一般使用su命令。从root切换到其他用户时不需要输入口令。su不记 录以root身份做了什么,它会创立一条日志说明谁在什么时候变成了 rooto
- su [参数][用户名]
-1, -login (类似重登录为新用户,以新用户改变环境变量及登录目录)-c命令(变为新用户,执行一条“命令”后再变回原用户)
-f (不读取启动文件,如“csh, cshre”等,仅用于csh或tcsh两种shell)-m, -p (不改变环境变量)
(4),groups 命令
groups命令用来显示指定用户的属组。
#groups用户名6,临时禁用帐号
在不删除帐号的情况下临时禁用它,可以先编辑tail脚本,然后将该帐号的登录shell改 为此脚本,此脚本需设置可执行位。
#mkdir /usr/local/lib/no-login/ (建立 no-login 目录)#vi /usr/local/lib/no-login/deny (建立 deny 文件,加入以下内容)
#!/usr/bin/tail+2 (#!表示该行是一条命令,需要执行,+2表示显示第2行以后的内容)This account has been closed!
#chomd 755 /usr/local/lib/no-login/deny (给 deny 文件添加可执行位)#chsh -s /usr/local/lib/no-login/deny用户名(改变需要禁用的帐号的登录shell为deny)
四、权限与文件系统平安1/ls -1”命令输出结果中各字段含义:
(1),文件类型,第1位(“,普通文件、“d”目录文件、“「符号链接文件、“b”快设备文件、“c” 字符设备文件、午”管道文件、“s"socket文件)(2),权限,第2至10位(9个字母分成3组,3个一组,分别代表“属主权限”、"属组权限”、“其 他权限”,“「表示没有权限)
(3),i-node,硬连接数(表示占用i-node数。i-node是文件内容的真实表达,而filename是 inode上层的表示方法。因此,每个文件名只能对应一个i-node, 一个i-node可以对应多个 文件名)(4),文件属主
(5),文件属组(6),文件大小
(7),创立时间(8),文件名
2,UNIX下关于文件权限的表示方法和解析在linux中,使用系统资源的人分为4类:超级用户、文件属主、属主同组、其他。超级用 户具有操作系统的一切权限,不需要指定权限,其他三类都需要指定
权限。UNIX下可以用Is -1命令来看到文件的权限。用1s命令所得到的表示法的格式是类 似这样的:-rwxr-xr-xO下面解析一下格式所表示的意思。这种表示方法一共有十位:
1 23456789 10-rwxr-xr- x
第1位表示文件类型,可以为p、d、1、S、C、b和■:
p表示命名管道文件d表示目录文件
-表示普通文件s表示socket文件
c表示字符设备文件b表示块设备文件
1表示符号连接文件
第2-4位、5-7位、8-10位分别表示文件所有者的权限,同组用户的权限,其他用户的权限, 其形式为rwx:
r:可读,文件可读其内容,目录可列出基下文件w:可写,文件可修改内容,目录创立、删除文件
X:可执行,文件可执行,目录可进入s: suid(第4位)或sgid(第7位)与可执行权限均被设置
S: suid(第4位)或sgid(第7位)被设置,可执行权限没有设置t: sticky(粘着位)与可执行权限被设置
T: sticky(粘着位)被设置,可执行权限没有设置-:没有权限
例子:Is -1 myfile显示为:
-rwxr-x--- 1 foo staff 7734 Apr 05 17:07 myfile表示文件myfile是普通文件,所有者f。。对文件有读写执行权限,staff组的成员对文件有
读和执行权限,其他的用户对这个文件没有权限,1个硬连接,文件的所有者是f。。用户,而f。。用户属于staff组,文件只有1个硬连接,长度是7734 个字节,最后修改时间4月5日17:07。
如果一个文件被设置了 SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上,设置了 sticky位,会表现在其他用户的可执行位上,例如:
1> -rwsr-xr-x表示SUID和所有者可执行被设置2、-rwSr-一表示SUID被设置,所有者可执行没有被设置
3> -rwxr-sr-x表示SGID和同组用户可执行被设置4、-rw-r-Sr—表示SGID被设置,同组用户可执行没有被设置
5、-rwxr-xr-t表示sticky和其他用户可执行被设置6> -rwxr-r-T表示sticky被设置,其他用户可执行没有被设置
其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位上的值是1表示有相应 的权限,值为0表示没有此权限。
11 109 8 7 6 5 4 3 2 10S G T r w x r w x r w x
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-6为所有者位,第5-3位为所属组权限,第2-0位为其他用户权限。上面的
“-rwsr-xr-x”的值为:1 0 0 1 1 1 1 0 1 1 0 1, “-rw-r-Sr--”的值为:0 10 110 100 1 00o
在查找文件时可以用文件权限的8进制代号来查找,将以上12位2进制数转换为8进制即可。
例如,设置SUID位的文件为力00, 000, 000, 000(2进制)=4000(8进制广,设置 SUID 与 SGID 的文件为“110, 000, 000,
000(2进制尸6000(8进制)
”,查找命令为“find / -perm -4000 -type f -Is”3,使用“chmod”命令改变文件权限
文字设定法#chmod [ugoa] [+-=] [rwxugosStT|
u表示属主,g表示属组,。表示其他,a表示所有+表示增加权限,一表示删除权限,二表示分配新权限的同时将原有权限删除
r表示可读,w表示可写,x表示可执行,ugo表示与该字母代表的用户有相同权限,s与S表示suid 或sgid, t与 T 表示sticky
数字设定法chmod [xxxx]
其中“xxxx”是由表示文件权限的12位二进制数换算的4位八进制数4,特殊权限的作用:
SUID 是 Set User ID, SGID 是 Set GroupID的意思。当用户运行一个应用程序时,此程序将继承运行它的用户的权限,而不是继承 它所属用户的权限。设置了 SETUID与SETGID的程序将继承它 所属用户的权限,而不受运行它的用户权限的限制。
由于SUID和SGID是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对 普通文件和目录文件有意义,所以设置其他种类文件的SUID和SGID位是没有多大意义的。
首先讲普通文件的SUID和SGID的作用,如果普通文件myfile是属于fo。用户的,是可执 行的,现在没设SUID位,1s命令显示为rwxr-xr-x 1 foo staff 7734 Apr 05 17:07
myfile",任何用户都可以执行这个程序。UNIX的内核是根据什么来确定一个进程对资源的 访问权限的呢?是这个进程的运行用户的(有效)ID,包括user id和group id。用户可以用id命令来查到自己的或其他用户的user id和group id。除了 一般的 user id
和group id外,还有两个称之为effective的id,就是有效id,上面的四个id表示为:uid, gid, euid, egido内核主要是根据euid和 egid来确定进程对资源的访问权限。一个
进程如果没有SUID或SGID位,那么euid=uidegid=gid,分别是运行这个程序的用户的uid和gid。例如kevin用户的uid和gid分别为204 和202, foo用户的uid和gid为
200, 20L kevin运行myfile程序形成的进程的euid=uid=204, egid=gid=202,内核根据这 些值来判断进程对资源访问的限制,其实就是kevin用户对资源访问的权限,和fo。没关系。
如果一个程序设置了 SUID,那么euid和egid变成被运行的程序的所有者的uid和gid,例 如 kevin 用户运行 myfile, euid=200, egid=201, uid=204, gid=202,那么这个进程具有它的属 主f。。的资源访问权限。
SUID的作用就是这样:让本来没有相应权限的用户运行这个程序时,可以访问他没有权 限访问的资源。passwd就是一个很鲜明的例子。SUID的优先级比SGID高,当一个可执行 程序设置了 SUID,贝U SGID会自动变成相应的egidoSGIDo UNIX系统有一个/dev/kmem的设备文件,是一个字符设备文件,里面存储了核心程 序要访问的数据,包括用户的口令。所以这个文件不能给
一般的用户读写,权限设为“cr--r1 root system 2, 1 May 25 1998kmcm”,但ps等程序要读这个文件,而ps的权限设置如为1 bin system 59346 Apr 05 1998
ps”,这是一个设置了 SGID的程序,而ps的属主是bin,不是root,所以不能设置SUID来 访问kmem,但大家注意了,bin和root都属于
system组,而且ps设置了 SGID, 一般用户执行ps,就会获得system组用户的权限,而文 件kmem的同组用户的权限是可读,所以一般用户执行ps就没问题了。但有些人说,为什么不把ps程序设置为root用户的程序,然后设置SUID 位,不也行吗?这确实可以解决问题,但实际中为什么不这样
做呢?因为SGID的风险比SUID小得多,所以出于系统平安的考虑,应该尽量用SGID代 替SUID的程序。下面来说明一下SGID对目录的影响。
SUID对目录没有影响。如果一个目录设置了 SGID位,那么如果任何一个用户对这个目录 有写权限的话,他在这个目录所建立的文件的组都会自动转为这个目 录的属主所在的组,而文件所有者不变,还是属于建立这个文件的用户。
sticky权限翻开后,仅允许文件属主删除及移动该文件。
5,使用umask命令设置权限掩码:
该命令可为用户帐号中新建文件设置缺省用户权限。权限掩码由4位8进制数组成,第一 位为精度位(0),其他三位分别表示属主、属组、其他的权限。将现有的权限减去掩码后, 即是建立文件时默认的权限。使用“umask命令查看各用户的默认权限。
例:将权限掩码设置为“077”,那么只有属主具有“rwx”权限,其它用户没有任何权限umask 077
- umask -Su=rwx, g=,o=
6,用chgrp命令改变文件属组:
chgrp命令用来改变指定文件的属组,指定的文件名支持通配符,如果用户不是该文件的 属主或root,那么不能更改。
- chgrp [参数]组名或组ID文件名R表示递归地改变其下子目录和文件的属组
7,用chown命令改变文件属主和属组:
#chown [-R]R表示递归地改变基下子目录和文件的属性
- v显示chown所做的工作五、软件包管理
l,rpm包的名称格式rpm包的名称格式为“name-version.type.rpm",其中,name为软件名称,version为软件版本, type为包的类型
(i[3456]86表示在 intelx86计算机上编译的,spare表示在spare平台上编译的,alpha表示在alpha平台上编译的, src表示软件源代码),rpm为扩展名。
2,安装rpm包#rpm -ivh包文件名
- i (表示安装)v (表示在安装过程中显示详细信息)
- h (表示显示水平进度条)
如果某rpm包的同一版本已经被安装,再次安装时系统会拒绝并提示该包已经安装,可以 使用“--replac叩kgs”参数来重新安装已安装过的rpm包。例如:
-
可以使用“rpm-i url”的形式,从网络上安装rpm包。注意:rpm目前已经允许通过ftp进 行查询或安装3,查询rpm
可以看到,环境变量已经设好,PATH里面已经有了我要加的编译器的路径。
2、修改profile文件:
#vi /etc/profile
在里面加入:
export PATH=n$PATH:/opt/au1200_rm/build_tools/binM 3 ,修改.bashrc文件:
# vi /root/.bashrc在里面加入:
export PATH=M$PATH:/opt/au1200_rm/build_tools/binM后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
# echo $PATH看看输出里面是不是已经有了/my_new_path这个路径了。
“/bin"、"/sbin”、“/usr/birT、“/usr/sbin"、“/usr/local/birT等路径已经在系统环境变量中了, 如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如 果需要参数),回车即可。
如果不在标准位置,文件名前面需要加上完整的路径。不过每次都这样跑就太麻烦了, 一个“一劳永逸”的方法是把这个路径加入环境变量。命令"PATH=$PATH:路径”可以把这个路 径加入环境变量,但是退出这个命令行就失效了。要想永久生效,需要把这行添加到环境变 量文件里。有两个文件可 选:“/etc/profile”和用户主目录下的".bash_proEle",“/etc/profile”对 系统里所有用户都有效,用户主目录下 的“.bash_profile”只对这个用户有效。
“PATH=$PATH:路径1:路径2:…:路径意思是可执行文件的路径包括原先设定的路径, 也包括从“路径1”到“路径 屋的所 有路径。当用户输入一个一串字符并按回车后,shell会依 次在这些路径里找对应的可执行文件并交给系统核心执行。那个畤PATH”表示原先设定的路 径 仍然有效,注意不要漏掉。某些软件可能还有“PATH”以外类型的环境变量需要添加,但 方法与此相同,并且也需要注意飞九
注意,与DOS/Window不同,UNIX类系统环境变量中路径名用冒号分隔,不是分号。 另外,软件越装越多,环境变量越添越多,为了防止造成混乱,建议所有语句都添加在文件 结尾,按软件的安装顺序添加。
格式如下():
#软件名-版本号
PATH=$PATH:路径1:路径2:…:路径n
其他环境变量=$其他环境变量:…
在“profile"和“.bash_profile”中,“产是注释符号,写在这里除了视觉分隔外没有任何效果。
设置完毕,注销并重新登录,设置就生效了。如果不注销,直接在shell里执行这些语句, 也能生效,但是作用范围只限于执行了这些语句的shello
相关的环境变量生效后,就不必老跑到软件的可执行文件目录里去操作了。
$PATH:决定了 shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行 一个程序时,Linux在这些目录下进行搜寻编译链接。
编辑你的PATH声明,其格式为:
(1),查询所有的rpm包#rpm -qa [包文件名](q=query )
(2),查询指定的rpm包在系统中是否安装#rpm -q包文件名
(3),查询rpm包文件中的信息,用于在未安装前了解软件包的信息#rpm -qp [包文件名]
(4),查询系统中已安装的软件包的描述信息#rpm -qi包文件名
(5),查询系统中已安装的软件包中包含的文件#rpm -ql [包文件名]
ql参数可以用于查找不明路径的程序的真实路径#rpm -ql mplayer | cat -n (查找 mplayer 的安装路径)
(6),查询软件包的最低依赖要求#rpm -qR [包文件名]
(7),查询软件包提供的可使用的所有文件#
展开阅读全文