我需要自动为每个新创建的用户分配Sales
其主目录中的某个文件夹。(例如,当您添加用户时tim
,tim
会自动获取其主目录中命名的文件夹Sales
)
我怎样才能做到这一点?
答案1
/etc/skel
所有新用户的主目录都是通过任何自动创建主目录的方法创建用户时的副本。
如果您确定需要Sales
每个新用户帐户的主目录中的文件夹,则只需在中创建该文件夹即可/etc/skel
。
确保您在其中创建或修改的所有内容的所有者和权限都是正确的。
设置您想要的权限,它们将按原样复制到新用户的主目录中。通常您采用644
(八进制表示)或rw-r--r--
(字符串表示)。您可以使用以下命令之一进行修改。确保所有内容都是所有者可读的,并且所有目录都是所有者可执行的(否则所有者无法列出或访问其内容)。
sudo chmod 644 /etc/skel/FILE_OR_DIRECTORY
使用八进制表示形式设置单个文件或目录的权限。sudo chmod u=rw,g=r,o=r /etc/skel/FILE_OR_DIRECTORY
使用类似于字符串表示的语法来设置单个文件或目录的权限。sudo chmod -R 644 /etc/skel
使用八进制表示形式递归设置所有文件和目录的权限。sudo chmod -R u=rw,g=r,o=r /etc/skel
使用类似于字符串表示的语法以递归方式设置所有文件和目录的权限。
所有者应为。您可以使用以下命令root
在所有文件和文件夹中递归更改此值:/etc/skel
sudo chown -R root: /etc/skel
答案2
一个相对简单的替代方法是创建一个启动器/etc/xdg/autostart
,它将在登录时在(任何)用户的主目录中创建一个文件夹,仅有的如果该文件夹尚不存在。
创建一个包含以下行的文件:
[Desktop Entry] Name=Create Sales Exec=/bin/bash -c "mkdir ~/Sales" Type=Application
另存为
sales.desktop
(扩展名必不可少)运行命令:
sudo cp /path/to/sales.desktop /etc/xdg/autostart
这将~/Sales
在主目录中创建一个文件夹任何用户登录后(仅当不存在时)
解释
要在本地启动时(实际登录)运行命令,f或仅限一名用户,我们可以把.desktop
文件放进去~/.config/autostart
如果我们做同样的事情,但将.desktop
文件存储在中/etc/xdg/autostart
,该命令也会在本地运行,但同样对于任何用户登录时。
如果我们让.desktop
文件运行以下命令:
/bin/bash -c "mkdir ~/Sales"
我们确保文件夹已创建,甚至在用户下次登录时重新创建(如果用户可能手动删除该文件夹)。同时,如果该文件夹已存在,则不会执行该命令,因此不会覆盖现有文件夹。