本文针对gnome桌面
直接ALT+F2 输入dconf-editor,展开/org/gnome/gedit/preferences/encodings
auto-detected的Value中加入 ‘GB18030’ ,加在CURRENT前面;
Debian不能添加VPN?
chmod命令setuid setgid sticky bit说明
permission的符号模式表:
| 模式 | 名字 | 说明 |
|---|---|---|
| r | 读 | 设置为可读权限 |
| w | 写 | 设置为可写权限 |
| x | 执行权限 | 设置为可执行权限 |
| X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
| s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
| t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.
如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.
setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限,
则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky
bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.
下面说一下如何操作这些标志:
操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,
1) chmod u+s temp — 为temp文件加上setuid标志. (setuid 只对文件有效)
chmod g+s tempdir — 为tempdir目录加上setgid标志 (setgid 只对目录有效)
chmod o+t temp — 为temp文件加上sticky标志 (sticky只对文件有效)
2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下,
abc
a – setuid位, 如果该位为1, 则表示设置setuid
b – setgid位, 如果该位为1, 则表示设置setgid
c – sticky位, 如果该位为1, 则表示设置sticky
设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如
rwsrw-r– 表示有setuid标志
rwxrwsrw- 表示有setgid标志
rwxrw-rwt 表示有sticky标志
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
这三个权限的数字位可以这么理解
[root@server3 test]# 1 1 1
[root@server3 test]# rw s rws rwt
[root@server3 test]#
[root@server3 test]# SUID SGID Sticky
所以,可以得出
chmod 4777是设sid
chmod 2777是设置gid
chmod 1777是设sticky
常用操作
找出所有危险的目录(设置目录所有人可读写却没有设置sticky位的目录)
find / -perm -0007 -type d
找出所有设置了suid的文件
find / -perm -4000 -type f
samba passwd的几种方式
passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
1.smbpasswd
passdb backend = smbpasswd
该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
smbpasswd -a 用户名 #添加一个samba用户
smbpasswd -d 用户名 #禁用一个samba用户
smbpasswd -e 用户名 #恢复一个samba用户
smbpasswd -x 用户名 #删除一个samba用户
2.tdbsam
passdb backend = tdbsam
该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb 用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户并由其pdbedit管 理。
用户的建立可以先用mksmbpasswd建立一个smppasswd文件,然后用pdbedit将文件里的用户导入数据库。
cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd
pdbedit命令的参数很多,我们列出几个主要的:
pdbedit -i smbpasswd:/etc/samba/smbpasswd
pdbedit -a username:新建Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表的详细信息。
pdbedit -c “[D]” –u username:暂停该Samba用户的账号。
pdbedit -c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam
passdb backend = smbpasswd
该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”。
注:samba3.x的早期版本默认使用tdb库也就是smb.conf默认设定为passdb backend = tdbsam,只需要注释掉该行添加smb passwd file = /etec/samba/smbpasswd即可使用smbpasswd存储加密密钥。samba3.5.6更加规范了passdb backend参数的使用,取消了smb passwd file设定,如果简单注释掉passdb backend参数,密钥文件也不会被存储到smbpasswd。所以很多人说怎么修改smb.conf的配置,smbpasswd文件都无法生成,就算 手工创建,内容也是0字节。
这里只能说samba版本升级了,规则也变化了。现在无论是使用tdb数据库存储密钥还是smbpasswd文本存储密钥都要设定相对应的 passdb backend参数。要用传统的文本方式存储只需这样设定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是绝对路径)>,不要再画蛇添足的写上smb passwd file = /etec/samba/smbpasswd,该参数已经不适用于新版本的samba了。
注意,这里的用户名必须是linux中存在的用户,可以使用useradd命令在系统中添加一个用户,然后再增加一个对应的samba用户,也 就是一个用户名使用的是两套密码。一个是系统用户密码,另一个密码存储在/etc/samba/smbpasswd文件中的samba密码,这样可以防止 系统用户密钥外泄带来的安全隐患。
除了上面的措施外,samba还提供了一个更安全的方法,用户名映射功能,这样做的好处是防止系统内的真实用户名暴露,在smb.conf中增 加username map = /etc/samba/smbuser设定,再手工建立该文件。username map参数详解,比如有一个系统用户名为shaogroup.com,同时我们也设定其为samba的登录名,虽然是两套独立的密码,但依然告诉了用户,我系统内 也存在shaogroup.com这个用户。严格的说这也是违背系统安全规则的,不法人士可能会利用该用户名暴力猜解获得系统内帐户权限。samba提供的用户名 映射功能,只需编辑smbuser文件,格式为:真实的用户名 = 映射出的用户名(随便自定义);shaogroup.com = nas_guest nas_nobody(可以映射出多个用户名,注意中间的空格)。设定完成后,我们只需将nas_guest告诉用户即可,无须担心真实的 shaogroup.com用户名暴露。
FreeBSD系统优化防止ddos
1)这个话题有点大,我相信我做的只是其中很小的一部分,同时很多人也会问我,是不是要编译内核,这边的回答是不需要编译任何内核,只需要copy文件,然后重启一下服务器就可以了。
2)加载文件修改
# vi /boot/loader.conf #加入如下文本
kern.dfldsiz=”2147483648″ # Set the initial data size limit
kern.maxdsiz=”2147483648″ # Set the max data size
kern.ipc.nmbclusters=”0″ # Set the number of mbuf clusters
kern.ipc.nsfbufs=”66560″ # Set the number of sendfile(2) bufs
##解释:
a. 第一,第二行主要是为了突破1G内存设置的
b. 第三行其实是bsd的一个bug,当系统并发达到一个数量级的时候,系统会crash,这个是非常糟糕的事情,所幸更改了这个参数后,在高并发的时候,基本可以没有类似情况,当然非常bt的情况,还得进一步想办法
c. 第四行是读取的文件数,如果你下载的文件比较大,且比较多,加大这个参数,是非常爽的
3)Sysctl修改
#vi /etc/rc.local
sysctl kern.ipc.maxsockets=100000 ##增加并发的socket,对于ddos很有用
sysctl kern.ipc.somaxconn=65535 ##打开文件数
sysctl net.inet.tcp.msl=2500 ##timeout时间
4)通过上述的简单优化,会给你带来意外的惊喜,如果有兴趣的兄弟,可以尝试一下看看,绝无副作用。
freebsd卸载及重新安装程序
以php5-pcre为例:
cd /usr/ports/devel/php5-pcre
make deinstall rmconfig clean
make build
make install
make clean
apachectl gracefull
完整删除软件
进入 cd /var/db/pkg
找到你要删除的软件
pkg_delete nginx-0.5.33
也可以使用如[pkg_delete p5-D* ]通配符,一次删除多个软件
FreeBSD与Linux下date取日期的方法
今天日期(CST格式):
FreeBSD:
test# date
2011年 03月 22日 星期二 09:27:47 CST
Debian:
[root@shaobo ~]# date
2011年 03月 22日 星期二 09:27:47 CST
今天日期(数字格式):
FreeBSD:
test# date +%Y%m%d
20110322
Debian:
[root@shaobo ~]# date +%Y%m%d
20110322
昨天日期(数字格式):
FreeBSD:
test# date -v -1d +%Y%m%d
20110321
Debian:
[root@shaobo ~]# date +%Y%m%d –date=’1 days ago’
20110321
[root@shaobo ~]# date –date=’yesterday’ +%Y%m%d
20110321
前天日期(数字格式):
FreeBSD:
test# date -v -2d +%Y%m%d
20110320
Debian:
[root@shaobo ~]# date +%Y%m%d –date=’2 days ago’
20110320
明天日期:
FreeBSD:
test# date -v +1d +%Y%m%d
20110323
Debian:
[root@shaobo ~]# date +%Y%m%d –date=’tomorrow’
20110323
[root@shaobo ~]# date -d “1 day” “+%Y%m%d”
20110323
后天日期:
FreeBSD:
test# date -v +2d +%Y%m%d
20110324
Debian:
[root@shaobo ~]# date -d “2 day” “+%Y%m%d”
20110324
date +%s 可以得到UNIX的时间戳;
[root@shaobo ~]# date +%s
1300758867
[root@shaobo ~]# vi utc.sh
#!/bin/sh
date -d ‘1970-01-01 UTC ‘$1′ seconds’ +”%Y%m%d”
[root@shaobo ~]# chmod +x utc.sh
[root@shaobo ~]# ./utc.sh 1300758867
20110322
FreeBSD crontab的用法
使用权限 : 所有使用者
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数 :
crontab-e: 执行文字编辑器来设定时程表,FREEBSD内定的文字编辑器是 VI,如果你想用别的文字编辑器,可以编辑/root/.cshrc文件setenv EDITOR vi 改为setenv EDITOR ee
crontab-r: 删除目前的时程表
crontab-l: 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
分钟 小时 月份中的第几日 月份 星期中的第几天 要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
Linux中,个人用户的crontab放在/var/spool/cron下
FreeBSD中,个人用户的crontab放在/var/cron/tabs下
二者都有/etc/crontab文件,在这个文件中执行crontab定时任务要加入执行用户。
重启crontab使生效
freebsd下:/etc/rc.d/cron restart
linux下:/etc/init.d/crond restart
Linux系统提示There are stopped jobs怎么办?
运行命令 logout 时,系统提示: There are stopped jobs 。这时可以运行命令 jobs ,看看是什么程序还在运行然后运行命令 fg ,把还在运行的程序调出来,安全退出该程序就可以了。
FreeBSD下Mount总结
一、mount FAT/FAT32分区(C盘为例)
mount -t msdos /dev/ad0s1 /mnt或
mount_msdos /dev/ad0s1 /mnt #for 4.xmount_msdosfs /dev/ad0s1 /mnt #for 5.x二、mout Windows的扩展分区(FAT/FAT32)
命令和“一”一样,只是要记住:扩展分区从s5开始,例如mount D盘,可用:
mount -t msdos /dev/ad0s5 /mntmount_msdos /dev/ad0s5 /mnt #for 4.xmount_msdosfs /dev/ad0s5 /mnt #for 5.x三、mount NTFS分区(C盘为例)
mount -t ntfs /dev/ad0s1 /mnt或
mount_ntfs /dev/ad0s1 /mnt[注意]
1.chinese/gbfs 的 ntfs 似乎有问题,不建议玩家级用户使用
2.要让mount上的windows 分区(或CD-ROM)显示中文,需要升级你的ports,再安装gbfs:
#cd /usr/ports/chinese/gbfs#make install clean然后编译内核,注释掉”options CD9660″,”options MSDOS”。
3.在5.1-current上不用安装gbfs,用:
mount_msdosfs -L zh_CN.GB18030 /dev/ad0sX /mnt命令就可以支持FAT32分区上的中文文件名,当然,locale可以不用18030,zh_CN.eucCN, zh_CN.GBK都可以!
四、mount Linux Ext2fs/Ext3fs
在内核里面加入“options EXT2FS”,编译内核。mount 的时候用“mount_ext2fs”命令即可,ext3fs的mount也用“mount_ext2fs”。
五、mount 普通数据光盘
mount_cd9660 /dev/acd0 /cdrom六、mount ISO 文件
在5.x中如下
mdconfig -a -t vnode -f abc.iso -u 1mount_cd9660 /dev/md1 /cdrom4.8的版本
vnconfig /dev/vn0 /home/xiaoche/a.isomount -t cd9660 /dev/vn0 /mntumount /mntvnconfig -u /dev/vn0七、mount CD、VCD、DVD
播放CD、VCD、DVD不用先mount上。如果你一定要mount上,可以这样:
#mount_cd9660 -s 0 /dev/acd0 /cdrom八、mount 软盘
1.Format:
# /usr/sbin/fdformat -f 1440 /dev/fd02.Run disklabel:
# /sbin/disklabel -B -r -w /dev/fd0 fd14403.Create New FS:
# /sbin/newfs_msdos /dev/fd04.Mount & Use
#mount_msdosfs /dev/fd0 /mnt九、mount usb
确保内核中有如下项:
device scbusdevice dadevice cd在GENERIC中默认都有,如果没有,请编译内核。大多数U盘用的是FAT文件系统,所以用以下命令挂载:
mount -t msdos /dev/da0 /mnt十、mount ZIP软盘
#mount_msdosfs /dev/afd0s4 /mnt/zip