这个文件 /etc/profile由系统管理员管,因为当初次登录时,每个用户都 source 它,所以使它保持工作状态很重要。它也是提供给新用户的强大工具,该工具使新用户一登录进他们的新帐户,一切就正确运行。但是,有一些您可能希望新用户作为缺省值的设置,而且允许容易地修改它们。这就是 /etc/skel 目录的用途所在。
当您用 useradd 命令来创建一个新用户帐户时,它将所有的文件从 /etc/skel 复制到用户的新的主目录中(如果按默认应该在/home下)。这意味着您可以将有帮助的 .bash_profile 和 .bashrc 文件放在 /etc/skel 中,使新用户有一个好的开始。

/etc/skel建立使用起来非常简单。它使所有在LFS系统上面的 新用户拥有一样的初始设置。 /etc/skel目录是被 /usr/sbin/useradd 使用的。

开始需要建立一个/etc/skel 目录,最好使用root用户。然后把 你想要新用户拥有的配置文件拷贝到/etc/skel目录。比如: .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, 和 .vimrc。

当使用 /usr/sbin/useradd建立新用户的时候使用 -m 参数,例如:

#useradd -m -s/bin/bash steven

 

/usr/sbin/useradd使用了一系列缺省设置,位于 /etc/default/useradd(如果这个文件存在的话)。如果 这个文件不存在,它会使用其内部缺省设置,可以用/usr/sbin/useradd -D 来列处这些设置。

如果想对这个缺省设置作一些变动,

就要建立一个 /etc/default/useradd 文件,并使用和 /usr/sbin/useradd -D输出一样的内容。例如:

# /etc/default/useradd 开始
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel
# /etc/default/useradd 结束

所以你可以看到默认的HOME和默认的SKEL目录。

 

里面少了对缺省shell的设置。运行此命令添加:

#/usr/sbin/useradd -D -s/bin/bash

这样 SHELL= 那一行将被设置成 SHELL=/bin/bash。这样使得在LFS系统增加新用户更加容易。 /usr/sbin/useradd 有很多参数可以在/etc/default/useradd中设置。可以阅读man手册来获取更多细节。

从上面的例子可以看出/etc/skel目录的作用:

skel 是 skeleton 的缩写,每当你新建一个用户的时候 (通过 useradd 命令),/etc/skel 目录下的文件,都会原封不动的复制到新建用户的家目录下,看下该目录都有什么文件:

 

localhost ~ # ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc

如果你是一个多用户系统的管理员,你可以在 skel 目录下写个 ReadMe.txt 之类的文件,写一些使用说明,这样每个新建的用户都会在自己的目录下看到这个说明文件了。

再比如,你希望新建用户可以直接 startx 就启动到 gnome 桌面环境,你可以在 skel 目录下建立一个 .xinitrc 文件,内容如下:

export LC_ALL="zh_CN.UTF-8"
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
eval `dbus-launch --exit-with-session --sh-syntax`
exec gnome-session

因为 .xinitrc 是 X 启动需要读取的用户配置文件,这样每个用户 startx 之后就直接装载 gnome 了。

你甚至可以在 sekl 目录下再建立目录,总之 /etc/skel 下的所有文件都会拷贝的用户的家目录去。

你也许会想到,在 skel 目录下的 .bashrc 文件中加入一些方便的环境变量或者命令别名,这样每个新建用户都可以使用这些功能。不过,更好的选择是把这些设置放到全局的 /etc/profile 中,因为 skel 目录下的文件是拷贝过去的,如果你修改或者增加了新的文件,只有新建的用户才能受益。

可以看出这两个目录其实都有好处,就看你怎么用了,希望有一些帮助。

Posted on 2010-09-27 11:55  singlefold  阅读(5717)  评论(0编辑  收藏  举报